본문 바로가기
자바
주제

자바

Java

썬 마이크로시스템즈의 제임스 고슬링이 설계해 1995년 발표한 객체 지향·범용 프로그래밍 언어. 소스 코드를 특정 기계어가 아닌 중간 표현인 바이트코드로 컴파일하고, 이를 자바 가상 머신(JVM)이 각 플랫폼에서 해석·실행하는 구조를 취함. 이로써 한 번 작성한 코드를 여러 운영체제·하드웨어에서 재컴파일 없이 구동하는 "한 번 작성하면 어디서나 실행(Write Once, Run Anywhere)" 원칙을 구현. C·C++과 유사한 문법을 갖되 포인터 직접 조작 같은 저수준 기능을 줄이고, 가비지 컬렉션을 통한 자동 메모리 관리, 강한 정적 타입, 예외 처리, 리플렉션 등 안정성과 이식성을 중시한 설계가 특징.

자바는 단순함·객체 지향성·견고함·보안성·플랫폼 중립성·고성능·다중 스레드 지원을 핵심 목표로 삼아 설계됨. 초기에는 웹 브라우저에 내장되는 애플릿으로 주목받았으나, 이후 서버 측 엔터프라이즈 애플리케이션(J2EE/Java EE), 데스크톱(J2SE/Java SE), 모바일·임베디드(J2ME/Java ME) 영역으로 분화하며 폭넓게 확산. 2006년 썬이 핵심 구현을 GPL로 개방해 오픈소스 참조 구현인 OpenJDK가 등장했고, 2010년 오라클이 썬을 인수하며 자바 기술의 관리 주체가 됨.

자바는 ISO·Ecma 같은 공식 표준이 아닌 자바 커뮤니티 프로세스(JCP)를 통해 사실상의 표준으로 진화해 왔으며, 안드로이드 애플리케이션 개발의 기반 언어이자 대규모 기업 시스템·웹 서버·빅데이터·금융 인프라 등에서 가장 널리 쓰이는 언어 중 하나로 자리매김. 코틀린·스칼라·클로저 등 JVM 기반 언어들과 자바스크립트·C#·파이썬을 비롯한 후대 언어 설계에 폭넓은 영향을 끼친 현대 소프트웨어 생태계의 핵심 언어.

21 타임라인
3 사실

추가 정보

기원과 이름

1991년 썬 마이크로시스템즈 내부의 그린 프로젝트(Green Project)에서 제임스 고슬링, 마이크 셰리든, 패트릭 노턴이 개발을 시작한 프로그래밍 언어. 셋톱박스·디지털 케이블 TV 등 가전·임베디드 기기를 목표로 설계됐으나, 당시 시장이 받아들이기에는 다소 앞선 기술이었음.

처음에는 고슬링 사무실 밖의 떡갈나무에서 이름을 딴 “오크(Oak)”로 불렸으나, 상표 문제로 사용할 수 없게 되면서 인도네시아산 자바 커피에서 이름을 따 “자바(Java)”로 개칭됨.

실행 모델

자바 소스 파일(.java)은 자바 컴파일러를 거쳐 플랫폼 독립적인 바이트코드 파일(.class)로 변환됨. 이 바이트코드는 자바 가상 머신(JVM)이 운영체제와 하드웨어 위에서 해석하거나 적시 컴파일(JIT)해 실행함.

이 중간 계층 덕분에 동일한 바이트코드는 JVM 구현이 제공되는 윈도·리눅스·macOS 등 여러 환경에서 원칙적으로 재컴파일 없이 실행될 수 있음. “한 번 작성하면 어디서나 실행한다(Write Once, Run Anywhere)”는 자바의 대표적 설계 목표도 이 실행 모델에서 나옴.

에디션과 생태계

자바는 데스크톱·범용 환경의 Java SE(과거 J2SE), 기업용 서버 환경의 Java EE(과거 J2EE), 모바일·임베디드 기기용 Java ME(과거 J2ME)로 분화해 발전함. Java EE는 2017년 Eclipse Foundation으로 이관된 뒤 Jakarta EE라는 이름으로 이어지고 있음.

HotSpot은 대표적인 JVM 구현이며, OpenJDK는 Java SE 플랫폼의 오픈소스 구현과 개발 협업의 중심 프로젝트로 자리 잡음. 코틀린·스칼라·클로저·그루비 등 여러 언어도 JVM 위에서 실행되며 자바 생태계를 확장함.

2017년 이후 자바는 시간 기반 릴리스 모델로 전환해 6개월마다 기능 릴리스를 공개하고, 일부 버전을 장기 지원(LTS) 기준점으로 제공하는 체계를 갖춤.

타임라인

21
1991 1건
35년 전

썬 마이크로시스템즈의 제임스 고슬링, 마이크 셰리든, 패트릭 노튼이 가전·셋톱박스 등 임베디드 기기를 겨냥한 새 언어 프로젝트에 착수. 프로젝트명은 "그린(Green)", 언어명은 멘로파크 사무실 밖 떡갈나무에서 따 "오크(Oak)"로 명명됨.

디지털 케이블 TV 산업이 받아들이기엔 지나치게 앞선 기술이었으나, 이후 인도네시아산 자바 커피에서 이름을 따 자바(Java)로 개칭되며 훗날 플랫폼 독립적 언어 자바의 출발점이 됨.

1995 1건
31년 전
1995-05-23 공개한 프로그래밍 언어·플랫폼

썬, SunWorld '95에서 자바 공식 발표

1995년 5월 23일 샌프란시스코 SunWorld '95 컨퍼런스에서 썬 마이크로시스템즈가 자바를 공식 발표. 넷스케이프의 마크 앤드리슨이 무대에 올라 넷스케이프 네비게이터에 자바를 탑재하겠다고 깜짝 발표하며 업계의 폭발적 관심을 이끌어냄.

'한 번 작성하면 어디서나 실행된다(Write Once, Run Anywhere)'는 이식성을 내세워 운영체제에 구애받지 않는 소프트웨어 개발의 길을 엶. 웹과 기업용 시스템의 표준 플랫폼으로 빠르게 확산되며 썬의 가장 큰 기술적 유산이 됨.

1996 1건
30년 전

썬 마이크로시스템즈가 새로 설립한 자회사 자바소프트(JavaSoft)를 통해 자바의 첫 공식 구현인 JDK 1.0을 공개. '한 번 작성하면 어디서나 실행(Write Once, Run Anywhere)'을 표방하며 주요 플랫폼에 무료 런타임을 제공했고, 네트워크·파일 접근을 제한하는 구성 가능한 보안 모델을 갖춤.

주요 웹 브라우저들이 웹 페이지 안에서 자바 애플릿을 실행하는 기능을 곧 탑재하면서 자바가 빠르게 대중화된 계기.

1998 1건
28년 전

썬 마이크로시스템즈가 JDK 1.2를 공개하며 자바 플랫폼을 ‘Java 2’라는 새 브랜드 아래 재정비함. 이 릴리스는 이후 Java 2 Standard Edition, 즉 J2SE 1.2로 불리며 자바가 애플릿 중심 언어에서 범용 애플리케이션 플랫폼으로 확장되는 전환점이 됨.

표준 클래스 라이브러리에 Swing GUI API와 컬렉션 프레임워크를 통합하고, Java Plug-in, Java IDL, strictfp 키워드 등을 추가함. 이를 통해 데스크톱 사용자 인터페이스, 객체 컬렉션 처리, 기업 시스템과의 상호운용성에 필요한 기반을 넓힘.

JDK 1.2는 플랫폼 규모를 59개 패키지와 약 1,520개 클래스로 확대하며 이전 세대보다 크게 확장된 자바 환경을 제시함. 이후 J2ME와 J2EE가 등장하면서 모바일·임베디드, 엔터프라이즈, 표준 플랫폼으로 나뉘는 Java 2 에디션 체계의 출발점이 됨.

1999 2건
27년 전

썬 마이크로시스템즈가 JavaOne 1999에서 소형 전자기기와 임베디드 기기를 겨냥한 Java 2 Micro Edition(J2ME)을 발표함. 제한된 메모리·처리 성능·저장 공간을 가진 휴대기기와 소비자 전자기기에서도 자바 애플리케이션을 실행할 수 있도록 별도의 플랫폼 계층을 제시함.

J2ME는 기기 특성에 맞춰 구성(configuration)과 프로파일(profile)을 조합하는 구조를 채택해, 하나의 자바 실행 환경을 모든 기기에 그대로 적용하기 어려운 문제를 해결하려 했음. 이후 CLDC·MIDP 체계가 정립되며 피처폰과 초기 모바일 애플리케이션 생태계의 핵심 플랫폼으로 자리 잡음.

자바가 데스크톱과 서버를 넘어 모바일·임베디드 영역으로 확장되는 출발점.

썬 마이크로시스템즈가 Java 2 Platform, Enterprise Edition 1.2(J2EE 1.2)를 공개하며 기업용 자바 애플리케이션을 위한 통합 플랫폼을 제시함. 웹 애플리케이션, 분산 컴포넌트, 메시징, 트랜잭션, 데이터베이스 연동에 필요한 규격을 하나의 엔터프라이즈 표준 묶음으로 정리한 첫 J2EE 릴리스.

J2EE 1.2는 Servlet 2.2, JSP 1.1, Enterprise JavaBeans 1.1, JMS 1.0.2, JDBC 2.0, JTA·JTS 등을 포함해 애플리케이션 서버 중심의 다계층 기업 시스템 개발 모델을 구체화함. 개발자는 특정 서버 제품에 종속되지 않고 표준 API와 배포 형식을 기준으로 대규모 웹·업무 시스템을 구축할 수 있게 됨.

이후 Java EE를 거쳐 Jakarta EE로 이어지는 엔터프라이즈 자바 생태계의 출발점.

2002 1건
24년 전

썬 마이크로시스템즈가 J2SE 1.4를 정식 발표함. 자바 표준 플랫폼에 assert 문을 추가하고, Perl 계열 문법을 바탕으로 한 정규표현식 API를 도입하며 언어 차원의 검증 기능과 문자열 처리 기능을 크게 보강함.

가장 중요한 변화 가운데 하나는 새로운 입출력 API인 NIO(New I/O)의 추가. 채널(channel)·버퍼(buffer)·셀렉터(selector)를 중심으로 파일과 네트워크 I/O를 처리하는 모델을 제공해, 기존 스트림 중심 API보다 대규모 네트워크 서버와 비차단 I/O에 적합한 기반을 마련함.

이와 함께 XML 처리, IPv6 지원, 이미지 I/O, 로깅 API, 웹 서비스 관련 기능 등이 추가됨. J2SE 1.4는 자바가 데스크톱·애플릿 중심 환경을 넘어, 네트워크·서버·표준 기반 엔터프라이즈 개발에 필요한 기능을 폭넓게 갖추기 시작한 릴리스.

2004 1건
22년 전

코드명 "Tiger"로 알려진 J2SE 5.0이 발표됨. 컬렉션에 컴파일 시점 정적 타입 안전성을 부여하는 제네릭(Generics), 기본형과 래퍼 클래스를 자동 변환하는 오토박싱/언박싱, 향상된 for 문, 열거형, 어노테이션(메타데이터) 등 언어 차원의 주요 기능이 대거 추가됨.

썬이 "1995년 이후 가장 중요한 자바 업데이트"로 표현한 이정표적 릴리스로, 자바 언어의 표현력과 타입 안전성을 크게 끌어올림.

2006 1건
20년 전

썬 마이크로시스템즈가 자바 구현을 GNU GPL v2와 클래스패스 예외(Classpath Exception) 조건으로 공개하겠다고 발표하고, 첫 단계로 HotSpot 자바 가상 머신과 javac 자바 컴파일러의 소스 코드를 공개함.

이는 썬이 독점적으로 관리해 오던 자바 런타임과 개발 도구의 핵심을 자유·오픈소스 소프트웨어 생태계로 옮기기 시작한 결정. GPL의 파생 저작물 공개 의무는 유지하면서도, 자바 라이브러리를 사용하는 일반 애플리케이션까지 GPL 적용 대상으로 확장되지 않도록 클래스패스 예외를 함께 적용함.

이후 2007년 5월 클래스 라이브러리의 대다수가 추가로 공개되고, 완전한 빌드 가능한 자바 SE 구현을 지향하는 OpenJDK 프로젝트로 발전하는 출발점.

2007 1건
19년 전

썬 마이크로시스템즈가 OpenJDK를 출범시키고, 앞서 공개한 HotSpot JVM과 javac에 이어 자바 SE 개발 키트의 나머지 핵심 소스 코드를 GPL v2와 클래스패스 예외 조건으로 공개함. 동시에 OpenJDK 커뮤니티의 운영 원칙을 마련하기 위한 임시 거버넌스 위원회를 구성함.

공개 범위에는 코어 클래스 라이브러리와 AWT·Swing 등 자바 데스크톱 API의 상당 부분이 포함됨. 다만 제3자 권리가 얽힌 글꼴·그래픽 래스터라이저, 사운드 엔진, 일부 보안·SNMP 구성요소 등은 즉시 자유 소프트웨어로 전환되지 못해 바이너리 플러그 형태로 남음.

자바 SE의 구현·개선·배포가 썬 단독 통제에서 공개 커뮤니티 협업 구조로 옮겨간 출발점. 이후 잔여 비공개 구성요소가 대체·공개되며 OpenJDK는 주요 리눅스 배포판과 상용 JDK 배포판의 공통 기반으로 자리 잡음.

2008 1건
18년 전

구글이 Android 1.0 SDK Release 1을 공개하며 안드로이드의 첫 정식 개발 플랫폼을 선보임. SDK는 API 안정성을 보장하고, 개발자가 앱을 만들어 첫 상용 안드로이드 기기와 함께 출시될 Android Market에 배포할 수 있는 기반을 제공함.

안드로이드 애플리케이션은 주로 자바 언어로 작성됐지만, 표준 JVM 위에서 실행되지는 않음. 개발 도구가 자바 바이트코드를 DEX 형식으로 변환하고, 이를 Dalvik 가상 머신이 실행하는 구조를 채택해 제한된 메모리와 배터리를 가진 모바일 기기에 맞춘 독자적 실행 환경을 구성함.

이 사건은 자바 개발자 생태계가 데스크톱·서버를 넘어 스마트폰 애플리케이션 시장으로 대규모 확장되는 계기. 동시에 자바 API와 호환 구현을 둘러싼 권리 문제가 훗날 오라클과 구글의 장기 소송으로 이어지는 기술적 배경이 됨.

2010 2건
16년 전

오라클이 썬 마이크로시스템즈 인수를 완료함. 2009년 4월 발표된 거래는 약 74억 달러 규모였으며, 미국과 유럽연합의 규제 승인 절차를 거쳐 2010년 1월 최종 종결됨. 이로써 1982년 설립된 썬 마이크로시스템즈는 약 28년간 이어 온 독립 기업으로서의 경영을 마감하고 오라클 조직에 편입됨.

오라클은 이 인수로 자바 플랫폼과 관련 특허·저작권, OpenJDK와 Java SE의 개발 주도권을 비롯해 솔라리스, MySQL, SPARC 서버·스토리지 등 썬의 핵심 기술 자산을 확보함. 래리 엘리슨은 당시 자바를 오라클이 인수한 가장 중요한 소프트웨어 자산으로 평가하며, 오라클의 미들웨어·데이터베이스·엔터프라이즈 시스템 전략과의 결합을 강조함.

인수는 자바의 기술적·법적 통제권이 썬에서 오라클로 넘어간 전환점이기도 함. 이후 오라클은 안드로이드에서 사용된 Java SE API 선언 코드 문제를 둘러싸고 구글과 소송을 벌였고, 이 분쟁은 2021년 미국 연방대법원이 구글의 사용을 공정 이용으로 판단하며 종결됨.

자바가 창립 기업 썬의 독립적 관리 체제에서 벗어나, 대형 엔터프라이즈 소프트웨어 기업 오라클의 제품 전략과 사업 모델 안으로 편입된 사건.

MySQL

오라클이 캘리포니아 북부연방지방법원에 구글을 상대로 안드로이드의 자바 관련 저작권 및 특허 침해를 주장하는 소송을 제기함. 오라클은 썬 마이크로시스템즈 인수로 확보한 자바 플랫폼의 권리를 근거로, 안드로이드가 자바 기술을 라이선스 없이 사용했다고 주장하며 손해배상과 침해 중단을 위한 금지명령을 청구함.

초기 소장은 안드로이드의 Dalvik 가상 머신, 개발 도구, 클래스 라이브러리 등이 자바 관련 특허 7건을 침해했다고 주장함. 저작권 쟁점은 이후 자바 API 37개 패키지의 선언 코드와 구조·순서·조직(structure, sequence, and organization), 관련 문서의 사용 문제로 구체화됨. 구글은 자바 언어 자체와 독자 구현 코드는 자유롭게 사용할 수 있으며, 호환성을 위한 API 사용은 저작권 침해가 아니라고 맞섬.

자바 API의 저작권 보호 범위와 호환 구현의 허용 한계를 둘러싼 이 분쟁은 약 10년간 이어짐. 미국 연방대법원은 2021년 구글의 API 선언 코드 사용이 공정 이용에 해당한다고 판단해 구글 승소로 결론냄.

2014 1건
12년 전

오라클이 Java SE 8을 정식 발표함. 자바 언어와 표준 라이브러리에 람다 표현식, 메서드 참조, 함수형 인터페이스, 인터페이스 기본 메서드를 도입하며 함수형 스타일의 프로그래밍을 본격적으로 지원함.

컬렉션 데이터를 선언적으로 변환·필터링·집계할 수 있는 Stream API가 추가되고, java.util.function 패키지와 병렬 스트림 처리 기반도 함께 마련됨. 기존 객체지향 구조를 유지하면서도 익명 클래스 중심으로 작성되던 반복·콜백·컬렉션 처리 코드를 더 짧고 조합 가능하게 바꾼 변화.

이와 함께 Optional, 새로운 날짜·시간 API인 java.time, 반복 어노테이션 등도 추가됨. Java SE 8은 자바의 현대적 언어 기능과 API 설계 방향을 크게 바꾼 대표적 장기 지원 릴리스로 자리 잡으며, 이후 수년간 기업용 자바 개발의 사실상 기준 버전으로 널리 사용됨.

2017 2건
9년 전

오라클이 IBM·레드햇과 함께 Java Platform, Enterprise Edition(Java EE)을 이클립스 파운데이션(Eclipse Foundation)으로 이관하겠다고 발표함. Java EE의 오픈소스 구현과 관련 기술을 단일 기업이 주도하던 구조에서, 여러 기업과 개발자가 참여하는 공개 협업 체계로 옮기겠다는 결정.

이관 대상에는 엔터프라이즈 자바의 핵심 API와 참조 구현, 기술 규격 개발 과정이 포함됨. Java EE는 이후 이클립스 파운데이션의 EE4J(Eclipse Enterprise for Java) 프로젝트 아래에서 개발되기 시작했고, 클라우드 네이티브·마이크로서비스 환경에 맞춘 엔터프라이즈 자바 발전의 기반으로 재편됨.

다만 JavaJava EE 상표권은 오라클이 유지했기 때문에, 이클립스 파운데이션은 후속 플랫폼 명칭으로 Jakarta EE를 채택함. 2019년 Jakarta EE 8이 공개되며 이관 작업이 실질적으로 마무리됐고, Java EE는 Jakarta EE라는 새 이름 아래 발전을 이어가게 됨.

기업용 자바의 규격과 구현이 오라클 중심 체제에서 벗어나, 이클립스 파운데이션과 다수 공급업체가 함께 운영하는 개방형 거버넌스 구조로 전환된 사건.

오라클이 Java SE 9를 정식 발표하며 프로젝트 직소(Project Jigsaw)의 핵심 성과인 자바 플랫폼 모듈 시스템(Java Platform Module System)을 도입함. JSR 376과 JEP 261에 기반한 이 체계는 자바 언어, JVM, 표준 API에 모듈이라는 새로운 프로그램 구성 단위를 추가한 변화.

JDK는 java.*jdk.* 모듈로 분할되고, 개발자는 module-info.java를 통해 의존 관계와 외부 공개 패키지를 명시할 수 있게 됨. 이를 통해 대규모 애플리케이션의 의존성 관리와 캡슐화를 강화하고, 필요한 모듈만 포함한 맞춤형 런타임 이미지를 만들 수 있는 기반을 마련함. jlink 도구는 모듈 조합을 바탕으로 경량 실행 환경을 생성하도록 지원함.

Java SE 9는 거대해진 JDK의 내부 구조와 배포 방식을 재편한 대형 전환점. 같은 해 오라클과 OpenJDK는 장기 개발 주기를 줄이고 시간 기반 릴리스 모델로 전환하는 계획을 제시했으며, 이후 Java 10부터 새 기능 릴리스가 6개월 간격으로 배포되기 시작함.

자바가 수년 단위의 대형 버전 업그레이드 중심 체계에서 벗어나, 모듈화된 플랫폼 구조와 예측 가능한 정기 릴리스 체계를 갖추기 시작한 사건.

2018 1건
8년 전

오라클이 Java SE 11을 정식 발표함. Java 9부터 도입된 시간 기반 릴리스 모델 아래 처음 제공된 장기 지원(LTS) 릴리스로, 6개월마다 기능 릴리스를 내되 기업 사용자가 장기간 안정적으로 채택할 기준 버전을 별도로 제공하는 체계를 구체화함.

JDK 9에서 인큐베이팅 기능으로 도입됐던 표준 HTTP Client API를 정식화해 HTTP/2와 WebSocket을 지원하도록 했고, java 실행기로 단일 .java 소스 파일을 별도 컴파일 단계 없이 직접 실행할 수 있는 기능도 추가함. 개발 편의성과 네트워크 프로그래밍 환경을 현대화한 변화.

한편 JavaFX 모듈은 JDK 11에서 분리되어 별도 OpenJFX 배포판으로 제공되기 시작함. Java EE·CORBA 관련 모듈도 제거되면서, 자바 표준 플랫폼과 부가 기술의 경계를 다시 정리하는 계기가 됨.

Java SE 11은 Java 8 이후 장기간 업그레이드를 미뤄 온 기업 환경이 다음 세대 자바로 이동할 수 있는 핵심 기준점이 되었으며, 이후 Java 17·21 등으로 이어지는 LTS 중심 채택 전략의 출발점으로 자리 잡음.

2019 1건
7년 전

오라클이 Java SE 8 업데이트 8u211부터 새 Oracle Technology Network(OTN) 라이선스를 적용함. 이에 따라 이전 BCL(Binary Code License) 아래 일반적인 데스크톱·서버 용도로 무료 제공되던 Oracle JDK 8의 상업적 사용·업데이트 모델이 종료되고, 개인용·개발·테스트·시연 목적의 무료 사용과 상업용 구독 라이선스가 구분됨.

앞선 2019년 1월 15일 Java 8의 마지막 공개 업데이트인 8u201·8u202가 배포됐으며, 이후 상업 환경에서 Oracle JDK 8의 지속적 보안 업데이트와 지원을 받으려는 조직은 Java SE Subscription을 구매하거나 다른 배포판·신규 Java 버전으로 전환해야 하는 상황이 됨.

이 변화는 자바 언어의 라이선스가 바뀐 사건이 아니라, 오라클이 제공하는 Oracle JDK의 배포·지원 조건이 바뀐 사건. 다만 많은 기업이 Oracle JDK와 OpenJDK 기반 배포판의 차이를 재검토하게 만들었고, Java 버전 업그레이드·배포판 전환·소프트웨어 자산 관리가 주요 운영 과제로 떠오르는 계기가 됨.

2021 1건
5년 전

미국 연방대법원이 구글 대 오라클 소송에서 6대 2로 구글의 손을 들어줌. 스티븐 브라이어 대법관이 다수 의견을 작성했고, 대법원은 구글이 안드로이드 개발에 사용한 약 1만 1,500줄의 Java SE API 선언 코드가 공정 이용에 해당한다고 판단함. 에이미 코니 배럿 대법관은 사건 심리와 판단에 참여하지 않음.

대법원은 자바 API 선언 코드가 저작권 보호 대상인지에 대해서는 직접 결론을 내리지 않음. 해당 코드가 저작권으로 보호될 수 있다고 논의를 위해 가정한 뒤, 스마트폰이라는 다른 컴퓨팅 환경에서 개발자가 기존 기술을 활용하도록 한 구글의 사용은 변형적이며 공정 이용이라고 판시함.

법원은 API 선언 코드가 프로그래머가 미리 작성된 기능을 호출하는 사용자 인터페이스 역할을 한다는 점, 구글이 구현 코드는 독자적으로 작성했다는 점, 복제된 약 1만 1,500줄이 문제 된 API 전체 약 286만 줄의 0.4%에 불과하다는 점 등을 함께 고려함.

2010년 오라클의 소 제기 이후 약 10년간 이어진 분쟁은 이 판결로 사실상 마무리됨. 소프트웨어 인터페이스의 재구현과 호환성 확보를 위한 제한적 코드 사용에서 공정 이용이 적용될 수 있음을 보여 준 대표적 판례.

2023 2건
3년 전

오라클이 Java SE Subscription의 신규 판매 모델을 Java SE Universal Subscription으로 전환함. 기존의 프로세서·Named User Plus 등 배포 환경과 실제 사용 규모를 기준으로 하던 라이선스 방식 대신, 조직의 Employee 수를 기준으로 구독료를 산정하는 모델을 도입함.

이 구독은 데스크톱, 서버, 컨테이너, 클라우드 환경의 Oracle Java SE 사용과 업데이트·지원 권한을 하나의 계약으로 묶는 방식. Employee 산정에는 정규직뿐 아니라 시간제·임시 인력, 외주·계약 인력 등 조직을 위해 일하는 인력이 포함될 수 있어, 실제 자바 사용자나 설치 수보다 훨씬 넓은 조직 규모가 비용 기준이 될 수 있음.

기존 Java SE Subscription 계약 고객은 기존 조건과 측정 기준으로 갱신할 수 있었지만, 신규 계약에서는 직원 수 기반 Universal Subscription이 중심 모델이 됨. 이 변화는 기업이 Oracle JDK 사용 범위와 비용을 다시 점검하고, OpenJDK 기반 배포판으로의 전환이나 자바 실행 환경 표준화 전략을 검토하게 만든 중요한 라이선스 전환점.

오라클과 OpenJDK가 Java SE 21을 정식 공개함. Java 21은 주요 배포판 공급업체가 장기 지원(LTS) 버전으로 제공한 릴리스로, Java 17 이후 기업 환경이 다음 세대 자바로 전환하는 핵심 기준점이 됨.

가장 큰 변화는 프로젝트 룸(Project Loom)에서 발전한 가상 스레드(Virtual Threads)의 정식 도입. 가상 스레드는 운영체제 스레드와 일대일로 연결되지 않는 경량 java.lang.Thread 구현으로, 서버 애플리케이션이 기존의 요청당 스레드(thread-per-request) 구조를 유지하면서도 대량의 I/O 대기 작업을 더 높은 동시성으로 처리할 수 있게 함.

언어 기능으로는 레코드 패턴과 switch를 위한 패턴 매칭이 정식화됨. 객체의 타입을 검사하고 내부 구성 요소를 분해하는 코드를 더 선언적으로 작성할 수 있게 되면서, instanceof 검사와 형변환, 중첩된 조건문 중심의 분기 로직을 단순화하는 기반이 마련됨.

이와 함께 순차 컬렉션 API, 세대별 ZGC 등이 포함됐으며, 구조적 동시성·문자열 템플릿·스코프 값 등은 프리뷰 또는 인큐베이터 기능으로 제공됨. Java 21은 동시성 모델 현대화와 언어 표현력 개선을 함께 담아, 6개월 릴리스 체계에서 널리 채택된 대표 LTS 릴리스로 자리 잡음.

그 외 사실들

기록

  • 자바는 "한 번 작성하면 어디서나 실행(Write Once, Run Anywhere, WORA)"을 표방하며, 컴파일된 바이트코드가 JVM이 지원하는 모든 플랫폼에서 재컴파일 없이 동작함.

  • 자바 언어 설계의 5대 목표는 단순·객체 지향·친숙함, 견고함·보안성, 아키텍처 중립성·이식성, 고성능 실행, 그리고 인터프리트·다중 스레드·동적 실행 지원임.

트리비아