자바 버전 역사

자바 언어는 JDK 1.0 이후 여러 차례 변경되었으며, 표준 라이브러리에 수많은 클래스와 패키지가 추가되었다. J2SE 1.4부터 자바 언어의 발전은 자바 커뮤니티 프로세스 (JCP)에 의해 관리되었으며, JCP는 Java Specification Request (JSR)를 사용하여 자바 플랫폼에 추가 및 변경 사항을 제안하고 지정한다. 이 언어는 Java Language Specification (JLS)에 의해 명시되며, JLS의 변경 사항은 JSR 901에 따라 관리된다. 2017년 9월, 자바 플랫폼의 수석 아키텍트인 마크 라인홀트는 당시 2년 주기 대신 "6개월마다 한 번의 기능 릴리스"로 릴리스 주기를 변경할 것을 제안했다. 이 제안은 이후 모든 버전에 적용되었으며, 현재도 이 릴리스 일정을 따르고 있다.

언어 변경 외에도 자바 클래스 라이브러리에도 수년에 걸쳐 변경이 이루어졌으며, JDK 1.0의 수백 개의 클래스에서 J2SE 5의 삼천 개 이상의 클래스로 성장했다. 스윙 및 자바2D와 같은 완전히 새로운 API들이 도입되었으며, 원래 JDK 1.0 클래스와 메서드 중 많은 부분이 더 이상 사용되지 않게 되었고, 제거된 API는 거의 없다(최소한 자바 22에서는 스레딩을 위한 API 하나가 제거되었다). 일부 프로그램은 자바 플랫폼의 한 버전에서 이전 버전으로 자바 프로그램을 변환할 수 있도록 한다(예: 자바 5.0을 1.4로 백포트). (참조: 자바 백포팅 도구)

오라클의 자바 SE 지원 로드맵에 따르면, 자바 SE 25 (LTS)가 2025년 9월 현재 최신 버전이며, 버전 21, 17, 11 및 8은 여전히 지원되는 (장기 지원 버전 − LTS) 버전으로, 오라클 고객은 오라클 프리미어 지원을 받게 된다. 오라클은 개발 및 개인용으로 자바 8에 대한 무료 공개 업데이트를 무기한으로 계속 제공한다.

OpenJDK의 경우, 광범위한 커뮤니티의 여러 조직에서 상업적 장기 지원 및 자유 소프트웨어 업데이트를 모두 제공한다.

자바 25는 2025년 9월 16일에 출시되었다.

 릴리스 표 

 JDK 1.0 

첫 번째 버전은 1996년 1월 23일에 출시되었다. 첫 번째 안정 버전인 JDK 1.0.2는 자바 1이라고 불린다.

포함된 내용은 다음과 같다.

 코어 언어 기능 (java.lang의 기본 자바 자료형, java.util의 유틸리티 클래스)
 그래픽 지원 (AWT 프레임워크)
 자바 애플릿 생성 지원
 I/O 및 네트워킹 라이브러리

 JDK 1.1 

1997년 2월 19일 릴리스의 주요 추가 사항은 다음과 같다.Version 1.1 press release, Sun.
 애브스트랙트 윈도 툴킷 (AWT) 이벤트 모델의 광범위한 재구성
 언어에 내부 클래스 추가
 자바빈즈
 자바 데이터베이스 연결 (JDBC) 및 SQL 지원
 자바 원격 메서드 호출 (RMI) 및 직렬화
 리플렉션 (인트로스펙션만 지원했으며 런타임에 수정은 불가능했다.) (J2SE 1.2에서  클래스와  클래스와 같은 서브클래스를 도입하여 객체를 리플렉션으로 수정하는 기능이 추가되었다.)
 저스트 인 타임 컴파일 (JIT), 마이크로소프트 윈도우 플랫폼용으로 시만텍이 자바소프트를 위해 제작
 탈리전트에서 시작된 국제화 및 유니코드 지원

 J2SE 1.2 

1998년 12월 8일 릴리스 및 J2SE 5.0까지의 후속 릴리스는 소급적으로 자바 2로 리브랜딩되었으며, 기본 플랫폼을 J2EE (자바 2 플랫폼, 엔터프라이즈 에디션) 및 J2ME (자바 2 플랫폼, 마이크로 에디션)와 구별하기 위해 버전 이름 "J2SE" (자바 2 플랫폼, 스탠더드 에디션)가 JDK를 대체했다. 이는 59개의 패키지에 1520개의 클래스로 자바 플랫폼 크기를 3배로 늘린 매우 중요한 자바 릴리스였다. 주요 추가 사항은 다음과 같다.Version 1.2 press release, Sun.
 `strictfp` 키워드 (JVM 17에 의해 더 이상 사용되지 않는 키워드이므로 새 코드에서는 사용해서는 안 된다)
 스윙 그래픽 API가 코어 클래스에 통합되었다.
 선의 JVM은 처음으로 JIT 컴파일러를 장착했다.
 자바 플러그인
 CORBA 상호 운용성을 위한 IDL 구현인 자바 IDL
 컬렉션 프레임워크

 J2SE 1.3 

2000년 5월 8일 릴리스에서 가장 주목할 만한 변경 사항은 다음과 같다.Version 1.3 press release, Sun.
 핫스팟 JVM 포함 (핫스팟 JVM은 J2SE 1.2 JVM용으로 1999년 4월에 처음 출시되었다)
 RMI는 CORBA와의 선택적 호환성을 지원하도록 수정되었다.
 자바 네이밍 및 디렉터리 인터페이스 (JNDI)가 코어 라이브러리에 포함되었다 (이전에는 확장으로 사용 가능).
 자바 플랫폼 디버거 아키텍처 (JPDA)
 자바사운드
 합성 프록시 클래스

자바 1.3은 마이크로소프트 윈도우 95를 공식적으로 지원하는 마지막 자바 릴리스이다.

 J2SE 1.4 

2002년 2월 6일 릴리스는 자바 커뮤니티 프로세스의 JSR 59에 따라 개발된 첫 번째 자바 플랫폼 릴리스이다. 주요 변경 사항은 다음과 같다.Version 1.4 press release.
 언어 변경
 `assert` 키워드 (JSR 41에 명시됨)
 라이브러리 개선
 펄 정규 표현식을 모델로 한 정규 표현식
 예외 체인을 통해 예외가 원본 하위 수준 예외를 캡슐화할 수 있다.
 IPv6 (Internet Protocol version 6) 지원
 논블로킹 I/O (NIO라고 명명됨) (JSR 51에 명시됨)
 로깅 API (JSR 47에 명시됨)
 JPEG 및 이식 가능한 네트워크 그래픽과 같은 형식으로 이미지를 읽고 쓰는 이미지 I/O API
 통합된 XML 파서 및 XSLT 프로세서 (JAXP) (JSR 5 및 JSR 63에 명시됨)
 통합된 보안 및 암호화 확장 (JCE, JSSE, 자바 인증 및 권한 부여 서비스)
 자바 웹 스타트 포함 (자바 웹 스타트는 J2SE 1.3용으로 2001년 3월에 처음 출시되었다) (JSR 56에 명시됨)
 환경 설정 API (`java.util.prefs`)
자바 1.4에 대한 공개 지원 및 보안 업데이트는 2008년 10월에 종료되었다. 오라클 고객을 위한 유료 보안 업데이트는 2013년 2월에 종료되었다.

 Java SE 5 

2004년 9월 30일 릴리스는 원래 1.5로 번호가 매겨졌으며, 이는 여전히 내부 버전 번호로 사용된다. 이 번호는 "J2SE의 성숙도, 안정성, 확장성 및 보안 수준을 더 잘 반영하기 위해" 변경되었다. 이 버전은 JSR 176에 따라 개발되었다.

자바 SE 5는 2008년 4월 8일에 공개 업데이트 기간이 시작되었으며, 2009년 11월 3일부로 더 이상 공개 업데이트를 제공하지 않는다. 유료 오라클 고객에게는 2015년 5월까지 업데이트가 제공되었다.

타이거는 몇 가지 중요한 새로운 언어 기능을 추가했다.Version 1.5 press release.Version 1.5 full list of changes.
 제네릭: 컬렉션에 대해 컴파일 시간 (정적) 자료형 안전성을 제공하고 대부분의 형 변환이 필요 없게 한다 (JSR 14에 명시됨).
 메타데이터: 애너테이션이라고도 불린다. 클래스 및 메서드와 같은 언어 구성에 추가 데이터를 태그할 수 있게 하며, 이 데이터는 메타데이터 인식 유틸리티에 의해 처리될 수 있다 (JSR 175에 명시됨).
 오토박싱/언박싱: `int`와 같은 기본 자료형과 와 같은 기본 래퍼 클래스 간의 자동 변환 (JSR 201에 명시됨).
 열거형: `enum` 키워드는 자료형 안전한, 정렬된 값 목록(예: `Day.MONDAY`, `Day.TUESDAY` 등)을 생성한다. 이전에는 자료형 안전하지 않은 상수 정수나 수동으로 구성된 클래스(자료형 안전 열거형 패턴)로만 달성할 수 있었다 (JSR 201에 명시됨).
 가변인자: 메서드의 마지막 매개변수는 이제 자료형 이름 뒤에 세 개의 점(예: `void drawtext(String... lines)`)을 사용하여 선언할 수 있다. 호출 코드에서는 해당 자료형의 매개변수를 원하는 만큼 사용할 수 있으며, 이들은 배열에 담겨 메서드로 전달되거나, 또는 호출 코드에서 해당 자료형의 배열을 전달할 수 있다.
 향상된 `for each` 루프: `for` 루프 구문은 배열 또는 표준  클래스와 같은 모든 의 각 멤버를 반복하는 특수 구문으로 확장된다 (JSR 201에 명시됨).
 다중 스레드 자바 프로그램의 개선된 실행 시맨틱; 새로운 자바 메모리 모델은 이전 사양의 복잡성, 효율성 및 성능 문제를 해결한다.
 정적 임포트

표준 라이브러리에도 다음과 같은 개선 사항이 있었다.
 RMI 객체에 대한 자동 스텁 생성
 스윙: 스킨 변경 가능한 새로운 룩 앤드 필, 신스라고 불린다.
 패키지 `java.util.concurrent`의 동시성 유틸리티
 다양한 입력 스트림 및 버퍼에서 데이터를 파싱하기 위한 스캐너 클래스

자바 5는 마이크로소프트 윈도우 98 및 윈도우 ME를 공식적으로 지원하는 마지막 자바 릴리스이며, 윈도우 비스타는 자바 SE 5가 2009년 10월에 지원 종료되기 전에 지원되었던 최신 윈도우 버전이다.

자바 5 업데이트 5 (1.5.0_05)는 윈도우 95 (인터넷 익스플로러 5.5 설치된) 및 윈도우 NT 4.0에서 작동하는 마지막 자바 릴리스이다.

자바 5는 애플 맥 OS X 10.4 (타이거)에서 처음 사용할 수 있었으며 애플 맥 OS X 10.5 (레오파드)에 기본으로 설치된 자바 버전이었다.

자바 1.5에 대한 공개 지원 및 보안 업데이트는 2009년 11월에 종료되었다. 오라클 고객을 위한 유료 보안 업데이트는 2015년 4월에 종료되었다.

 버전 변경 
이 버전은 자바 언어에 대한 새로운 버전 관리 시스템을 도입했지만, 개발자 라이브러리에는 이전 버전 관리 시스템이 계속 사용되었다.

이러한 대응은 이후 릴리스(Java 6 = JDK 1.6, Java 7 = JDK 1.7 등)를 통해 계속되었다.

 Java SE 6 

2006년 12월 11일에 릴리스된 버전부터 선은 "J2SE"라는 이름을 자바 SE로 바꾸고 버전 번호에서 ".0"을 삭제했다.Java brand naming. 개발자를 위한 내부 번호는 1.6.0으로 유지된다.Version 6, Java webnotes, Sun.

이 버전은 JSR 270에 따라 개발되었다.

개발 단계에서 개선 사항 및 버그 수정이 포함된 새로운 빌드가 약 일주일마다 릴리스되었다. 베타 버전은 2006년 2월과 6월에 릴리스되었으며, 2006년 12월 11일에 최종 릴리스가 이루어졌다.

이 버전에 포함된 주요 변경 사항은 다음과 같다.Version 1.6 press release.Version 1.6 full list of changes.
 이전 Win9x 버전 지원 중단; 비공식적으로 자바 6 업데이트 7이 이러한 윈도우 버전에서 작동하는 것으로 나타난 마지막 자바 릴리스였다. 이는 업데이트 10의 주요 변경 사항 때문으로 추정된다.
 스크립팅 언어 지원 (JSR 223): 스크립팅 언어와의 긴밀한 통합을 위한 일반 API 및 모질라 자바스크립트 라이노 통합이 내장되어 있다.
 코어 플랫폼,. 및 스윙의 극적인 성능 향상.
 JAX-WS (JSR 224)를 통한 웹 서비스 지원 개선.
 자바 데이터베이스 연결 4.0 지원 (JSR 221).
 자바 컴파일러 API (JSR 199): 자바 프로그램이 자바 컴파일러를 프로그래밍 방식으로 선택하고 호출할 수 있도록 하는 API.
 JAXB를 버전 2.0으로 업그레이드: StAX 파서 통합 포함.
 플러그형 애너테이션 지원 (JSR 269).
 API에 스윙워커 통합, 테이블 정렬 및 필터링, 진정한 스윙 더블 버퍼링 (회색 영역 효과 제거)과 같은 많은 GUI 개선 사항.
 JVM 개선 사항에는 다음이 포함된다: 동기화 및 컴파일러 성능 최적화, 새로운 알고리즘 및 기존 쓰레기 수집 알고리즘 업그레이드, 애플리케이션 시작 성능.

자바 6는 64비트 (코어 2 듀오 이상) 프로세서 머신에서 실행되는 Mac OS X 10.5 (레오파드)에 설치할 수 있다. 자바 6는 Mac OS X 10.6 (스노우 레오파드)를 실행하는 32비트 및 64비트 머신 모두에서 지원된다.

자바 6은 2013년 2월에 지원 수명이 종료되었으며, 이때 모든 공개 업데이트(보안 업데이트 포함)가 중단될 예정이었다. 오라클은 2013년 3월과 4월에 자바 6에 대한 두 가지 추가 업데이트를 릴리스했으며, 이는 일부 보안 취약점을 패치했다.

 자바 6 업데이트 
자바 6 출시 이후, 선과 나중에 오라클은 여러 업데이트를 출시했는데, 이는 공개 API를 변경하지 않으면서 최종 사용자 유용성을 향상시키거나 버그를 수정했다.

 자바 6 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 6 2006-12-23 이 릴리스는 웹 서비스, 스크립팅, 데이터베이스, 플러그형 애너테이션 및 보안 분야에서 많은 개선 사항을 추가했으며, 품질, 호환성 및 안정성도 향상되었다. JConsole이 이제 공식적으로 지원된다. Java DB 지원이 추가되었다. Java SE 6 Update 1 2007-05-07  Java SE 6 Update 2 2007-07-03  Java SE 6 Update 3 2007-10-03  Java SE 6 Update 4 2008-01-14  HotSpot VM 10 Java SE 6 Update 5 2008-03-05  여러 보안 결함이 제거되었다. AOL, DigiCert 및 TrustCenter의 새 루트 인증서가 이제 포함된다. Java SE 6 Update 6 2008-04-16  악명 높은 Xlib/XCB 잠금 어설션 문제에 대한 해결책이 도입되었다. LoginContext와 함께 Kerberos 인증을 사용할 때의 메모리 누수가 수정되었다. 여러 다른 버그도 수정되었다. Java SE 6 Update 7 비공식적으로 Java SE 6 Update 7 (1.6.0.7)은 Win9x 운영 체제 제품군에서 작동하는 것으로 나타난 마지막 버전이다. Java SE 6 Update 10 2008-10-15 HotSpot VM 11. 이 업데이트의 주요 변경 사항은 다음과 같다.
 애플릿 및 자바 웹 스타트 애플리케이션의 배포를 용이하게 하는 자바스크립트 함수 집합인 Java Deployment Toolkit.
 가장 일반적으로 사용되는 JRE 클래스만 포함하는 작은 설치 프로그램인 Java Kernel. 다른 패키지는 필요할 때 다운로드된다.
 향상된 업데이터.
 향상된 버전 관리 및 pack200 지원: 서버 측 지원은 더 이상 필요하지 않다.
 콜드 시작 시간을 개선하기 위한 Java Quick Starter.
 Direct3D 및 하드웨어 가속을 사용하여 Windows에서 자바2D 그래픽 기본 요소의 성능 향상.
 신스 기반의 Nimbus라는 새로운 스윙 룩 앤드 필.
 차세대 자바 플러그인: 애플릿은 이제 별도의 프로세스에서 실행되며 웹 스타트 애플리케이션의 많은 기능을 지원한다. Java SE 6 Update 11  2008-12-03  13개의 보안 수정 Java SE 6 Update 12  2008-12-12 보안 수정 없음; 64비트 자바 플러그인 (64비트 웹 브라우저 전용); 윈도우 서버 2008 지원; 그래픽 및 자바FX 애플리케이션의 성능 향상 Java SE 6 Update 13  2009-03-24 7개의 보안 수정, LDAP에서 자바 객체를 저장하고 검색하는 JNDI가 약간 수정됨, JMX 변경 (createMBeanunregisterMBean), 4개의 새 루트 인증서 추가됨 Java SE 6 Update 14 2009-05-28 HotSpot VM 14. 이 릴리스에는 JIT 컴파일러에 대한 광범위한 성능 업데이트, 64비트 머신용 압축된 포인터, 그리고 실험적인 가비지 퍼스트 (G1)라는 낮은 일시 중지 쓰레기 수집기 지원이 포함되어 있다.

`–XX:+DoEscapeAnalysis` 옵션은 HotSpot JIT 컴파일러에게 이스케이프 분석을 사용하여 지역 객체가 힙 대신 스택에 할당될 수 있는지 여부를 결정하도록 지시한다.

일부 개발자들은 이 릴리스에서 디버거가 무작위로 중단점을 놓치는 문제를 발견했다. 선은 이 문제를 추적하는 해당 버그를 가지고 있다. 해결책은 클라이언트 및 서버 VM에 적용된다. `-XX:+UseParallelGC` 옵션을 사용하면 실패를 방지할 수 있다. 또 다른 해결책은 업데이트 13으로 롤백하거나 업데이트 16으로 업그레이드하는 것이다. Java SE 6 Update 15  2009-08-04  패치 인플레이스 기능 도입 Java SE 6 Update 16  2009-08-11  업데이트 14에서 도입된 디버거가 중단점을 놓치는 문제 수정 Java SE 6 Update 17  2009-11-04  보안 수정; 두 개의 새 루트 인증서 Java SE 6 Update 18  2010-01-13  보안 수정 없음; Hotspot VM 16; 우분투 8.04 LTS 데스크탑 에디션, SLES 11, 윈도우 7, 레드햇 엔터프라이즈 리눅스 5.3, 파이어폭스 3.6, VisualVM 1.2 지원; 자바 DB 업데이트; 많은 성능 개선 Java SE 6 Update 19  2010-03-30  보안 수정; 루트 인증서 변경: 7개 추가, 3개 제거, 5개 더 강력한 서명 알고리즘으로 교체; TLS 재협상 공격에 대한 임시 수정 Java SE 6 Update 20  2010-04-15  2개의 보안 수정 Java SE 6 Update 21  2010-07-07  보안 수정 없음; Hotspot VM 17; 레드햇 엔터프라이즈 리눅스 5.4 및 5.5, 오라클 엔터프라이즈 리눅스 4.8, 5.4, 5.5 지원; 구글 크롬 4 지원; 사용자 정의 로딩 진행률 표시기 지원; VisualVM 1.2.2 Java SE 6 Update 22  2010-10-12  29개의 보안 수정;  지원 Java SE 6 Update 23  2010-12-08  보안 수정 없음; Hotspot VM 19; 오른쪽에서 왼쪽으로 쓰는 언어에 대한 더 나은 지원 Java SE 6 Update 24 2011-02-15  21개의 보안 수정; 자바 DB 업데이트 Java SE 6 Update 25  2011-03-21 보안 수정 없음; Hotspot VM 20; 인터넷 익스플로러 9, 파이어폭스 4 및 크롬 10 지원; BigDecimal 개선; 서버 VM에서 클라이언트 VM과 마찬가지로 빠르게 시작하면서 더 나은 최고 성능을 달성할 수 있도록 "계층화된" 컴파일 포함 (이 기능은 `-server` 및 `-XX:+TieredCompilation` 명령 옵션을 지정하여 활성화됨) Java SE 6 Update 26  2011-06-07  17개의 새로운 보안 수정; Windows Vista SP1과 호환되는 마지막 버전 Java SE 6 Update 27  2011-08-16  보안 수정 없음; 파이어폭스 5 인증 Java SE 6 Update 29  2011-10-18  20개의 보안 수정, 다양한 버그 수정 Java SE 6 Update 30  2011-12-12  보안 수정 없음; 업데이트 29의 SSL 회귀 수정; 레드햇 엔터프라이즈 리눅스 6 지원 Java SE 6 Update 31  2012-02-14  14개의 보안 수정 및 1개의 버그 수정; 윈도우 2000에서 안정적으로 작동하는 마지막 버전 Java SE 6 Update 32  2012-04-26  보안 수정 없음, 다양한 버그 수정 Java SE 6 Update 33  2012-06-12  14개의 보안 수정, 향상된 VM 구성 파일 로딩 Java SE 6 Update 34  2012-08-14  보안 수정 없음, 다양한 버그 수정 Java SE 6 Update 35  2012-08-30  심층 보안 수정 포함 Java SE 6 Update 37  2012-10-16  30개의 보안 수정 Java SE 6 Update 38  2012-12-11  다양한 버그 수정 Java SE 6 Update 39  2013-02-01  50개의 보안 수정 Java SE 6 Update 41  2013-02-19  5개의 보안 수정 Java SE 6 Update 43  2013-03-04  2개의 보안 수정 Java SE 6 Update 45  2013-04-16  42개의 보안 수정; 기타 변경 사항; 최종 공개 업데이트. Java SE 6 Update 51  2013-06-18  공개적으로 사용 불가, Java SE Support 프로그램 및 OS X Snow Leopard, Lion & Mountain Lion용 Apple Update를 통해서만 사용 가능; 최대 40개의 보안 수정 Java SE 6 Update 65  2013-10-15  공개적으로 사용 불가, Java SE Support 프로그램 및 OS X Snow Leopard, Lion & Mountain Lion용 Apple Update를 통해서만 사용 가능; 최소 11개의 중요 보안 수정 Java SE 6 Update 71  2014-01-14  공개 다운로드 불가; 33개의 수정 Java SE 6 Update 75  2014-04-15  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터 No. #54를 통해서만 사용 가능; 25개의 보안 수정 Java SE 6 Update 81  2014-07-15  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정 Java SE 6 Update 85  2014-10-16  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 보안 수정 Java SE 6 Update 91  2015-01-21  Linux x64 및 Windows i586 버전은 Java SE 6 참조 구현으로 제공된다. 다른 버전은 Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정 Java SE 6 Update 95  2015-04-14  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 14개의 보안 수정 Java SE 6 Update 101  2015-07-15  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 보안 수정 IE 10 및 11에 대한 인증이 1.6.0_101에 도입되었다. Java SE 6 Update 105  2015-10-20  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 17개의 보안 수정 Java SE 6 Update 111  2016-01-20  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정 Java SE 6 Update 113  2016-02-05  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정 Java SE 6 Update 115  2016-04-21  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정 Java SE 6 Update 121  2016-07-19  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정 Java SE 6 Update 131  2016-10-18  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정 Java SE 6 Update 141  2017-01-17  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 17개의 보안 수정 Java SE 6 Update 151  2017-04-18  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 10개의 보안 수정 Java SE 6 Update 161  2017-07-18  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정 Java SE 6 Update 171  2017-10-20  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 7개의 보안 수정 Java SE 6 Update 181  2018-01-16  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정 Java SE 6 Update 191  2018-04-17  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 7개의 보안 수정 Java SE 6 Update 201  2018-07-17  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 3개의 보안 수정 Java SE 6 Update 211  2018-10-18  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정

 Java SE 7 

자바 7은 2011년 7월 7일에 출시된 주요 업데이트이며 2011년 7월 28일에 개발자에게 제공되었다. 개발 기간은 13개의 마일스톤으로 구성되었으며, 2011년 6월 6일에 13개의 마일스톤 중 마지막이 완료되었다. 평균적으로 마일스톤당 8개의 빌드 (일반적으로 개선 사항 및 버그 수정 포함)가 릴리스되었다. OpenJDK 7 프로젝트의 기능 목록에는 많은 변경 사항이 나열되어 있다.

자바 7의 추가 사항은 다음과 같다.
 새로운 `invokedynamic` 바이트코드와 JSR-292에 따른 동적 프로그래밍 언어를 위한 JVM 지원, 현재 다국어 가상 머신에서 진행 중인 프로토타이핑 작업에 따른 것이다.
 압축된 64비트 포인터 (Java 6에서 `-XX:+UseCompressedOops`와 함께 사용 가능)
 Project Coin 언어 기능:
 switch의 문자열
 try-statement의 자동 리소스 관리 (try-with-resources statement)
 제네릭 인스턴스 생성을 위한 개선된 자료형 추론, 다이아몬드 연산자 `<>`라고도 불린다.
 간소화된 varargs 메서드 선언
 이진 정수 리터럴
 숫자 리터럴에 밑줄 허용
 향상된 자료형 검사 기능으로 다중 예외 유형 포착 및 예외 다시 던지기
 JSR 166에 따른 동시성 유틸리티
 여러 파일 시스템, 파일 메타데이터 및 심볼릭 링크 지원을 추가하는 새로운 파일 I/O 라이브러리 (JSR 203에 정의됨). 새로운 패키지는 `java.nio.file`, `java.nio.file.attribute` 및 `java.nio.file.spi`
 컬렉션 및 객체 배열을 정렬하기 위해 합병 정렬 대신 팀소트 사용
 타원 곡선 암호 알고리즘에 대한 라이브러리 수준 지원
 최신 GPU의 특정 기능을 향상시키는 Java 2D용 XRender 파이프라인
 버전 6u10에서 지원되지 않는 API로 처음 구현된 그래픽 기능에 대한 새로운 플랫폼 API
 SCTP 및 소켓 직접 프로토콜을 포함한 새로운 네트워크 프로토콜에 대한 향상된 라이브러리 수준 지원
 업스트림 XML 및 유니코드 업데이트
 자바 배포 규칙 세트

람다 (람다 함수의 자바 구현), 직소 (모듈의 자바 구현), 그리고 코인 일부는 자바 7에서 제외되어 자바 8의 일부로 릴리스되었다 (직소는 자바 9에서 릴리스되었다).

자바 7은 2012년 4월부터 자바 8이 출시될 때까지 java.com에서 다운로드되는 기본 버전이었다.

 자바 7 업데이트 
오라클은 2015년 4월에 제품의 공개 가용성이 종료될 때까지 분기별로 자바 7 제품군에 대한 공개 업데이트를 발행했다.Critical Patch Update table shows four dates per year 2022년 7월까지 계속된 JDK 7에 대한 추가 업데이트는 지원 계약이 있는 고객에게만 제공된다.

 자바 7 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 7  2011-07-28  초기 릴리스; HotSpot VM 21 Java SE 7 Update 1 2011-10-18  20개의 보안 수정, 기타 버그 수정 Java SE 7 Update 2 2011-12-12  보안 수정 없음; HotSpot VM 22; 안정성 및 성능 향상; 솔라리스 11 및 파이어폭스 5 이상 지원; 자바FX가 Java SE JDK에 포함됨, 웹 배포 애플리케이션 개선 Java SE 7 Update 32012-02-14  14개의 보안 수정 Java SE 7 Update 4 2012-04-26  보안 업데이트 없음; HotSpot VM 23; Mac OS X용 JDK 지원; 새로운 지원 쓰레기 수집기: 가비지 퍼스트 (G1) Java SE 7 Update 5 2012-06-12  14개의 보안 수정 Java SE 7 Update 6 2012-08-14  자바FX 및 자바 접근 브리지 (Java Access Bridge)가 Java SE JDK 및 JRE 설치에 포함됨, 터치 지원 모니터 및 터치 패드용 자바FX 지원, 리눅스용 자바FX 지원, ARM용 리눅스용 JDK Java SE 7 Update 7 2012-08-30  4개의 보안 수정 Java SE 7 Update 9 2012-10-16  30개의 보안 취약점 수정 Java SE 7 Update 10 2012-12-11  새로운 보안 기능, 브라우저에서 자바 애플리케이션 실행을 비활성화하는 기능 및 JRE가 안전하지 않을 때 경고하는 새로운 대화 상자, 버그 수정 Java SE 7 Update 11 2013-01-13  올슨 데이터 2012i; 자바FX 독립 실행형 버전이 설치된 시스템에서 플러그인 등록 문제에 대한 버그 수정, 에 대한 보안 수정; 자바 애플릿 및 웹 시작 애플리케이션의 기본 보안 수준이 "중간"에서 "높음"으로 상향 조정됨 Java SE 7 Update 13  2013-02-01  50개의 보안 수정 Java SE 7 Update 15 2013-02-19  5개의 보안 수정 Java SE 7 Update 17 2013-03-04  2개의 보안 수정 Java SE 7 Update 21 2013-04-16  42개의 보안 수정, 플러그인을 포함하지 않는 새로운 서버 JRE, ARM용 리눅스용 JDK를 포함한 여러 변경 사항 Java SE 7 Update 25 2013-06-18  40개의 보안 수정을 포함한 여러 변경 사항 Java SE 7 Update 40 2013-09-10  621개의 버그 수정, 새로운 보안 기능, 하드플로트 ARM, 자바 미션 컨트롤 5.2 및 레티나 디스플레이 지원 Java SE 7 Update 45 2013-10-15  51개의 보안 수정; 자바 애플리케이션의 무단 재배포 방지; 보안 프롬프트 복원; JAXP 변경; TimeZone.setDefault 변경 Java SE 7 Update 51 2014-01-14  36개의 보안 수정; 매니페스트 없는 JAVA 애플릿 차단 (원격 콘솔 - Java 애플릿 - IBM IMM 카드, HP iLO 카드 등) 경고 대화 상자에 "다음 버전에서 차단됩니다" 문구가 있더라도,Oracle to patch Java, other products Tuesday, ZDNet, 17개의 버그 수정 Java SE 7 Update 55 2014-04-15  37개의 보안 수정, 19개의 버그 수정 Java SE 7 Update 60 2014-05-28  자바 미션 컨트롤 5.3, 130개의 버그 수정 Java SE 7 Update 65 2014-07-15  18개의 버그 수정 Java SE 7 Update 67 2014-08-04  1개의 버그 수정 Java SE 7 Update 71 2014-10-14  16개의 버그 수정 Java SE 7 Update 72 2014-10-14  Java SE 7의 해당 패치 세트 업데이트(PSU)로서 업데이트 71과 동일한 릴리스 날짜, 36개의 버그 수정 Java SE 7 Update 75 2015-01-20  12개의 버그 수정, SSLv3 기본적으로 비활성화됨 Java SE 7 Update 76 2015-01-20  Java SE 7의 해당 패치 세트 업데이트(PSU)로서 업데이트 75와 동일한 릴리스 날짜, 97개의 버그 수정 Java SE 7 Update 79 2015-04-14  21개의 보안 수정, 6개의 버그 수정, Java SE 7 Update 80 2015-04-14  Java 7의 마지막 공개 릴리스; Java SE 7의 해당 패치 세트 업데이트(PSU)로서 업데이트 79와 동일한 릴리스 날짜, 104개의 버그 수정 Java SE 7 Update 85 2015-07-15  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 25개의 보안 수정 Java SE 7 Update 91 2015-10-20  공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 20개의 보안 수정 Java SE 7 Update 95 2016-01-19 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정 Java SE 7 Update 97 2016-02-05 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정 Java SE 7 Update 99 2016-03-23 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정 Java SE 7 Update 101 2016-04-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 22개의 보안 수정 Java SE 7 Update 111 2016-07-19 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 36개의 보안 수정 Java SE 7 Update 121 2016-10-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 32개의 보안 수정 Java SE 7 Update 131 2017-01-17 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 34개의 보안 수정 Java SE 7 Update 141 2017-04-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정 Java SE 7 Update 151 2017-07-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 4개의 보안 수정 Java SE 7 Update 161 2017-10-20 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 4개의 보안 수정 Java SE 7 Update 171 2018-01-16 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 51개의 보안 수정 Java SE 7 Update 181 2018-04-17 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정 Java SE 7 Update 191 2018-07-17 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 9개의 보안 수정 Java SE 7 Update 201 2018-10-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정 Java SE 7 Update 211 2019-01-15 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정 Java SE 7 Update 221 2019-04-16 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정 Java SE 7 Update 231 2019-07-16 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 6개의 보안 수정 Java SE 7 Update 241 2019-10-15 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정 Java SE 7 Update 251 2020-01-14 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정 Java SE 7 Update 261 2020-04-14 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정 Java SE 7 Update 271 2020-07-14 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정 Java SE 7 Update 281 2020-10-20 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정 Java SE 7 Update 291 2021-01-19 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정 Java SE 7 Update 301 2021-04-12 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정 Java SE 7 Update 311 2021-07-20 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 24개의 버그 수정 Java SE 7 Update 321 2021-10-19 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 16개의 버그 수정 Java SE 7 Update 331 2022-01-18 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 버그 수정

 Java SE 8 (LTS) 

자바 8은 2014년 3월 18일에 출시되었으며, 원래 자바 7에서 계획되었지만 나중에 연기된 일부 기능을 포함했다.

기능 작업은 JDK 개선 제안 (JEP) 측면에서 구성되었다.
JSR 335, JEP 126: 프로젝트 람다 및 기본 메서드 (가상 확장 메서드)에 따른 람다 표현식 (공식적으로 람다 표현식; 비공식적으로 클로저)에 대한 언어 수준 지원. 이는 기존 구현을 깨뜨리지 않고 인터페이스에 메서드를 추가하는 데 사용될 수 있다. 람다 표현식 지원 여부에 대한 자바 커뮤니티 내에서 지속적인 논쟁이 있었다. 선은 나중에 람다 표현식이 자바에 포함될 것이라고 선언하고 기능 개선을 위해 커뮤니티의 의견을 구했다. 람다 표현식 지원은 또한 함수형 스타일의 요소 스트림 작업을 가능하게 하며, 컬렉션에 대한 맵리듀스에서 영감을 받은 변환과 같은 기능을 포함한다. 기본 메서드는 API 작성자가 인터페이스에 새 메서드를 추가할 때 기존 코드를 깨뜨리지 않고 사용할 수 있다. 비록 주된 의도는 아니었지만, 기본 메서드는 동작의 다중 상속에도 사용될 수 있다 (상태는 아님).
, 애플리케이션 내부에 포함된 자바스크립트 코드를 실행할 수 있는 자바스크립트 런타임

부호 없는 정수 연산

 (자바FX 애플리케이션 JAR 직접 실행)

자바 8은 윈도우 XP에서 지원되지 않지만 JDK 8 업데이트 25부터는 윈도우 XP에서 설치 및 실행이 가능하다. 이전 버전의 JDK 8은 아카이브된 ZIP 형식 파일을 다운로드하여 실행 파일을 압축 해제하는 방식으로 XP에서 실행할 수 있었다. XP에서 실행할 수 있는 자바 8의 마지막 버전은 업데이트 251이다.

2014년 10월부터 자바 8은 공식 웹사이트에서 다운로드되는 기본 버전이 되었다 (그리고 자바 9를 대체하여 다시 다운로드). "오라클은 개인 사용자를 위해 자바 SE 8의 공개 업데이트 및 자동 업데이트를 무기한으로 계속 제공할 것이다."

 자바 8 업데이트 
 자바 8 업데이트 표 릴리스 릴리스 날짜주요 내용Java SE 82014-03-18초기 릴리스Java SE 8 Update 52014-04-15`Caller-Allowable-Codebase` 속성에서 "`*`" 사용; 11개의 버그 수정Java SE 8 Update 112014-07-15Java Dependency Analysis Tool (jdeps); 후원사를 비활성화하는 Java Control Panel 옵션; JAR 파일 속성 – Entry-Point; JAXP 처리 제한 속성 – maxElementDepth; 18개의 보안 버그 수정, 15개의 버그 수정Java SE 8 Update 202014-08-19669개의 버그 수정, JMC 5.4, 문자열 중복 제거 (기본적으로 비활성화됨) Java SE 8 Update 25 2014-10-14 10개의 버그 수정 Java SE 8 Update 31 2015-01-19 26개의 버그 수정; SSLv3 (기본적으로 비활성화됨) Java SE 8 Update 40 2015-03-03 645개의 버그 수정, 시스템 메모리 가용성을 나타내는 데 도움이 되는 "메모리 압력" 개념 추가 (낮은 압력 = 높은 메모리, 높은 압력 = 낮은 메모리) Java SE 8 Update 45 2015-04-14 13개의 버그 수정 Java SE 8 Update 51 2015-07-14 Windows 플랫폼에서 네이티브 샌드박스 지원 추가 (기본적으로 비활성화됨); 또한 25개의 보안 수정, 14개의 버그 수정 Java SE 8 Update 60 2015-08-18 480개의 버그 수정 Java SE 8 Update 65 2015-10-20 25개의 보안 수정, 3개의 버그 수정 Java SE 8 Update 66 2015-11-16 15개의 버그 수정 Java SE 8 Update 71 2016-01-19 8개의 보안 수정, 5개의 버그 수정 Java SE 8 Update 72 2016-01-19 8개의 보안 수정, 5개의 버그 수정, 여러 개선 사항 Java SE 8 Update 73 2016-02-03 1개의 보안 수정 Java SE 8 Update 74 2016-02-03 1개의 보안 수정 Java SE 8 Update 77 2016-03-23 1개의 보안 수정 Java SE 8 Update 91 2016-04-19 9개의 보안 수정, 4개의 버그 수정 및 개선 사항 Java SE 8 Update 92 2016-04-19 8u91의 보안 및 버그 수정과 76개의 추가 버그 수정; `ExitOnOutOfMemoryError` 및 `CrashOnOutOfMemoryError` 플래그가 도입됨 Java SE 8 Update 101 2016-07-19 8u92의 보안 및 버그 수정과 9개의 추가 버그 수정 Java SE 8 Update 102 2016-07-19 8u101의 보안 및 버그 수정과 118개의 추가 버그 수정 Java SE 8 Update 111 2016-10-18 7개의 보안 수정 및 9개의 버그 수정 Java SE 8 Update 112 2016-10-18 8u111에 비해 추가 기능 및 139개의 버그 수정 Java SE 8 Update 121 2017-01-17 8u112에 비해 3개의 추가 기능, 5개의 변경 사항 및 11개의 버그 수정. Java SE 8 Update 131 2017-04-18 4개의 변경 사항 및 42개의 버그 수정 (2개는 주목할 만함). Java SE 8 Update 141 2017-07-18 추가 기능, 3개의 변경 사항 및 12개의 버그 수정. Java SE 8 Update 144 2017-07-26 8u141의 32개 보안 수정 및 버그 수정. Java SE 8 Update 151 2017-10-17 22개 보안 수정, 2개 참고 사항, 1개 인증서 취소, 1개 새 기능, 6개 변경 사항, 8u144의 24개 버그 수정. Java SE 8 Update 152 2017-10-17 보안 수정, 1개의 새 기능, 1개의 변경 사항, 8u151의 238개 버그 수정 (1개는 주목할 만함). Java SE 8 Update 161 2018-01-16 21개 보안 수정, 3개 새 기능, 9개 변경 사항, 8u152의 1개 버그 수정. Java SE 8 Update 162 2018-01-16 보안 수정, 63개의 버그 수정. Java SE 8 Update 171 2018-04-17 보안 수정, 버그 수정. Java SE 8 Update 172 2018-04-17 보안 수정, 버그 수정. Java SE 8 Update 181 2018-07-17 보안 수정, 버그 수정. Java SE 8 Update 191 2018-10-16 새로운 기능, 변경 사항, 버그 수정, 보안 수정. Java SE 8 Update 192 2018-10-16 새로운 기능, 변경 사항, 버그 수정. Java SE 8 Update 201 2019-01-15 새로운 기능, 변경 사항, 버그 수정. Java SE 8 Update 202 2019-01-15 새로운 기능, 변경 사항, 버그 수정. Java SE 8 Update 211 2019-04-16 새로운 기능, 변경 사항, 버그 수정. 라이선스 업데이트. Java SE 8 Update 212 2019-04-16 새로운 기능 (예: 비트코인 및 "새 일본 연호 레이와"를 포함한 5가지 통화 기호), 변경 사항, 버그 수정. 라이선스 업데이트. Java SE 8 Update 221 2019-07-16 새로운 기능, 변경 사항, 버그 수정. Java SE 8 Update 231 2019-10-15 새로운 기능, 변경 사항, 버그 수정 및 18개의 보안 수정. Java SE 8 Update 241 2020-01-14 새로운 기능, 변경 사항, 버그 수정. Java SE 8 Update 251 2020-04-14 새로운 기능, 변경 사항, 버그 수정. Windows XP에서 비공식적으로 작동하는 것으로 나타난 마지막 버전. Java SE 8 Update 261 2020-07-14새로운 기능, 변경 사항, 133개의 버그 수정. Java SE 8 Update 271 2020-10-20새로운 기능, 변경 사항, 65개의 버그 수정. Java SE 8 Update 281 2021-01-19새로운 기능, 변경 사항, 33개의 버그 수정. Java SE 8 Update 291 2021-04-20새로운 기능, 변경 사항, 28개의 버그 수정.Java SE 8 Update 3012021-07-20새로운 기능, 변경 사항, 90개의 버그 수정.Java SE 8 Update 3112021-10-19새로운 기능, 변경 사항, 52개의 버그 수정.Java SE 8 Update 3212022-01-18새로운 기능, 변경 사항, 62개의 버그 수정.Java SE 8 Update 3312022-04-19새로운 기능, 변경 사항, 37개의 버그 수정.Java SE 8 Update 3332022-05-021개의 변경 사항과 2개의 버그 수정이 포함된 패치.Java SE 8 Update 3412022-07-19새로운 기능, 변경 사항, 42개의 버그 수정.Java SE 8 Update 3512022-10-18새로운 기능, 변경 사항, 95개의 버그 수정.Java SE 8 Update 3612023-01-17새로운 기능, 변경 사항, 버그 수정.Java SE 8 Update 3712023-04-18Java SE 8 Update 3812023-07-18보안 패치Java SE 8 Update 3912023-10-17Java SE 8 Update 4012024-01-16Java SE 8 Update 4112024-04-16시간대 데이터 IANA TZ Data 2024a로 업데이트, 새로운 기능, 변경 사항, 타사 라이브러리 업데이트, 37개의 버그 수정.Java SE 8 Update 4212024-07-16Java SE 8 Update 4312024-10-15Java SE 8 Update 4412025-01-21Java SE 8 Update 4512025-04-15Java SE 8 Update 4612025-07-15Java SE 8 Update 4712025-10-21

 Java SE 9 

자바 SE 9는 2017년 9월 21일에 출시되었다. 이는 자바 실행 위원회에서 프로젝트 직소의 현재 구현을 둘러싼 논쟁적인 수용 때문이었으며, 오라클은 몇 가지 미해결 문제와 우려 사항을 수정하고 몇 가지 중요한 기술적 질문을 개선해야 했다. 2017년 6월 말, 자바 커뮤니티 프로세스는 제안된 모듈 시스템 계획에 대해 거의 만장일치로 합의를 표명했다.
 JSR 376: 프로젝트 직소에 따른 JDK 모듈화 (자바 플랫폼 모듈 시스템)
 자바DB가 JDK에서 제거되었다
 , 다양한 `java.util.concurrent.atomic` 및 `sun.misc.Unsafe` 작업에 해당하는 표준적인 호출 수단 정의
 , @SafeVarargs를 private 인스턴스 메서드에 허용; 실질적으로 final 변수를 try-with-resources 문의 리소스로 사용 허용; 추론된 자료형의 인자 자료형이 denotable인 경우 익명 클래스에 다이아몬드 연산자 허용; 자바 SE 8에서 시작된 밑줄을 합법적인 식별자 이름 집합에서 완전히 제거; 인터페이스의 private 메서드 지원
 : JShell은 자바 언어용 REPL 명령줄 인터페이스이다.


 , 리액티브 스트림의 자바 구현을 포함한다, 새로운 `Flow` 클래스를 포함한다 이는 이전에 리액티브 스트림에서 제공했던 인터페이스를 포함한다.Reactive Streams Releases First Stable Version for JVM

 , 모듈 세트와 해당 종속성을 사용자 정의 런타임 이미지로 조립하고 최적화할 수 있는 도구 생성. 이는 실행할 JVM을 포함하여 완전히 사용 가능한 실행 파일을 생성할 수 있게 한다.
 , GraalVM이 제공하는 선행 컴파일

첫 번째 자바 9 릴리스 후보는 2017년 8월 9일에 출시되었다. 자바 9의 첫 번째 안정 버전은 2017년 9월 21일이었다.

 역사 
자바원 2011에서 오라클은 2016년에 자바 9에 출시할 것으로 기대되는 기능들을 논의했다. 자바 9에는 멀티 기가바이트 힙에 대한 더 나은 지원, 더 나은 네이티브 코드 통합, 다른 기본 쓰레기 수집기 (G1, "더 짧은 응답 시간"을 위해) 및 자체 튜닝 JVM이 포함될 것으로 예상되었다. 2016년 초, 자바 9의 릴리스는 2017년 3월로 재조정되었고, 나중에 다시 4개월 연기되어 2017년 7월로 미뤄졌다.

 자바 9 업데이트 
 자바 9 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 9 2017-09-21 초기 릴리스 Java SE 9.0.1 2017-10-17 새로운 기능
 org.omg.CORBA.ORB::string_to_object 메서드에 추가 IDL 스텁 유형 검사 추가 (other-libs/corba)
알려진 문제
 OpenJDK 9에서 TLS가 기본적으로 작동하지 않음 (security-libs/java.security)
변경 사항
 폐기된 스위스컴 루트 인증서 "swisscomrootevca2" 제거 (security-libs/java.security)
 기존 공급자를 재구성하여 키 길이의 기본값에 대해 동일한 상수를 참조하도록 함 (security-libs/java.security)
 컬렉션은 직렬화 필터를 사용하여 배열 크기 제한 (security-libs/java.security)
 JKS 및 JCEKS를 사용할 때 keytool에 경고 추가 (security-libs/java.security)
기타 참고 사항
 FTP URL 핸들러의 기본 시간 제한이 변경됨 (core-libs/java.net)
버그 수정
 12개의 버그 수정 Java SE 9.0.4 2018-01-16 새로운 기능
 오라클 자바 SE 루트 CA 프로그램의 루트 인증서 오픈 소스화 (security-libs/javax.net.ssl)
 TLS 세션 해시 및 확장 마스터 비밀 확장 지원 추가 (security-libs/javax.net.ssl)
 TLS용 유한 필드 디피-헬만 임시 매개변수 협상 (security-libs/javax.net.ssl)
 org.omg.CORBA.ORBstring_to_object 메서드에 추가 IDL 스텁 유형 검사 추가 (other-libs/corba)
변경 사항
 RSA 공개 키 유효성 검사 (security-libs/javax.crypto)
 공급자 기본 키 크기 업데이트됨 (security-libs/javax.crypto)
 엄격한 키 생성 (security-libs/javax.crypto)
 내보낼 수 있는 암호화 스위트 비활성화 (security-libs/javax.net.ssl)
 JMX 연결에는 역직렬화 필터가 필요함 (core-svc/javax.management)
 JDK 변환, 유효성 검사 및 XPath는 시스템 기본 파서를 사용함 (xml/jaxp)
버그 수정
 Windows 10 Creators Update에서 IE11에서 JNLP 파일이 시작되지 않음 (deploy/webstart)
 11개의 버그 수정

 Java SE 10 

OpenJDK 10은 2018년 3월 20일에 출시되었으며, 12가지 새로운 기능이 확인되었다. 이 기능에는 다음이 포함된다.













이 중 첫 번째 JEP 286 지역 변수 자료형 추론은 `var` 키워드를 지역 변수에 사용할 수 있게 하며, 실제 자료형은 컴파일러가 계산한다. 이 변경으로 개발자는 변수의 자료형을 수동으로 지정하는 대신 다음을 수행할 수 있다.
var list = new ArrayList<String>(); // ArrayList<String> 추론
var stream = list.stream();         // Stream<String> 추론

 자바 10 업데이트 
 자바 10 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 10 2018-03-20 초기 릴리스 Java SE 10.0.1 2018-04-17 새로운 기능
 향상된 KeyStore 메커니즘 (security-libs/javax.crypto)
변경 사항
 224비트 미만의 EC 키로 서명된 XML 서명 비활성화 (security-libs/javax.xml.crypto)
 3DES 암호화 스위트 비활성화 (security-libs/javax.net.ssl)
기타 참고 사항
 CipherOutputStream 사용 (security-libs/javax.crypto)
버그 수정
 5개의 버그 수정 Java SE 10.0.2 2018-07-17 변경 사항
 filterArguments가 잘못된 순서로 여러 필터를 실행함 (core-libs/java.lang.invoke)
 LDAP 지원 개선 (core-libs/javax.naming)
 더 나은 스택 워킹 (core-libs/java.io:serialization)
버그 수정
 G1 GC 중 JVM 충돌 (hotspot/gc)
 7개의 버그 수정

 Java SE 11 (LTS) 

JDK 11은 2018년 9월 25일에 출시되었으며, 현재 버그 수정이 진행 중이다. 이 버전은 LTS, 즉 장기 지원을 제공한다. 다른 기능 외에도 자바 11에는 다음과 같은 여러 새로운 기능이 포함되어 있다.


















이전 릴리스의 여러 기능이 삭제되었다. 특히, 자바 애플릿 및 자바 웹 스타트는 더 이상 사용할 수 없다. 자바FX, 자카르타 EE 및 CORBA 모듈은 JDK에서 제거되었다.

 자바 11 업데이트 
 자바 11 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 11 2018-09-25 초기 릴리스 Java SE 11.0.1 2018-10-16 변경 사항
 추가 TeliaSonera 루트 인증서 추가 (security-libs/java.security)
 LDAP 지원 개선 (core-libs/javax.naming)
 usagetracker.properties 파일의 중앙 파일 시스템 위치 변경 (core-svc)
 키 저장소에서 클라이언트 인증서 조회 문제 (security-libs/javax.net.ssl)
 모든 DES TLS 암호화 스위트 비활성화 (security-libs/javax.net.ssl)
 암호화 입력 개선 (security-libs/javax.crypto)
버그 수정
 LDAPS 통신 실패 (core-libs/javax.naming)
 더 나은 HTTP 리디렉션 지원 (core-libs/java.net)
 5개의 버그 수정 Java SE 11.0.2 2019-01-15 알려진 문제
 Swing에서 GTK+ 3.20 이상 버전은 지원되지 않음 (client-libs)
변경 사항
 TLS anon 및 NULL 암호화 스위트 비활성화됨 (security-libs/javax.net.ssl)
 Linux 네이티브 코드 검사 (hotspot/runtime)
 JDK 11 설치 프로그램에서는 제어판의 자바 접근 브리지 확인란 옵션을 사용할 수 없음 (security-libs/javax.net.ssl)
버그 수정
 59개의 버그 수정 Java SE 11.0.3 2019-04-16 새로운 기능
 일본 새 시대에 대한 사각형 문자 지원 (core-libs/java.util:i18n)
알려진 문제
 자바 접근 브리지 설치 해결책 (install)
변경 사항
 GlobalSign R6 루트 인증서 추가 (security-libs/java.security)
 시만텍 루트 CA로 고정된 TLS 서버 인증서 불신 (security-libs/javax.net.ssl)
 새로운 일본 시대 이름 레이와 (core-libs/java.time)
 java.time.chrono.JapaneseEra에서 새로운 일본 시대 지원 (core-libs/java.time)
버그 수정
 17개의 버그 수정 Java SE 11.0.4 2019-07-16 새로운 기능
 HotSpot Windows OS 탐지가 Windows Server 2019를 올바르게 식별함 (hotspot/runtime)
제거된 기능 및 옵션
 두 DocuSign 루트 CA 인증서 제거 (security-libs/java.security)
 두 Comodo 루트 CA 인증서 제거 (security-libs/java.security)
 T-Systems Deutsche Telekom 루트 CA 2 인증서 제거 (security-libs/java.security)
 GTE CyberTrust Global Root 제거 (security-libs/java.security)
기타 참고 사항
 com.sun.org.apache.xml.internal.security.ignoreLineBreaks 시스템 속성 (security-libs/javax.xml.crypto)
 ECC 구현 간 전환을 위한 시스템 속성 (security-libs/javax.crypto)
버그 수정
 42개의 버그 수정 Java SE 11.0.5 2019-10-15 새로운 기능
 새로운 자바 플라이트 레코더 (JFR) 보안 이벤트 (security-libs/java.security)
기타 참고 사항
 macOS Catalina (10.15)에서 JDK 또는 JRE 사용 (docs)
 기본 TLS 알고리즘에서 구식 NIST EC 곡선 제거 (security-libs/javax.net.ssl)
 SecretKeyFactory PBKDF2 구현에서 SunJCE Mac 사용 (security-libs/javax.crypto)
 자바 접근 브리지 설치 해결책 (install)
 XML 서명 구현을 Apache Santuario 2.1.3으로 업데이트 (security-libs/javax.xml.crypto)
 시스템 속성 jdk.security.useLegacyECC가 기본적으로 비활성화됨 (security-libs/javax.crypto)
 사양을 준수하도록 Properties.loadFromXML 변경 (core-libs/java.util)
 Runtime.exec 및 ProcessBuilder 인수 제한 (core-libs/java.lang)
 Windows 2019 Core Server는 지원되지 않음 (client-libs/2d)
버그 수정
 83개의 버그 수정 Java SE 11.0.6 2020-01-14 새로운 기능
 SASL 메커니즘 제한 허용 (security-libs/javax.security)
 SunPKCS11 공급자가 PKCS#11 v2.40 지원으로 업그레이드됨 (security-libs/javax.crypto:pkcs11)
기타 참고 사항
 레지스트리 지원 개선 (core-libs/java.rmi)
 신뢰 앵커 인증서에 대한 새로운 검사 (security-libs/java.security)
 신뢰할 수 있는 TLS 서버 인증서에 정확한 일치 필요 (security-libs/java.security)
 LuxTrust Global Root 2 인증서 추가 (install/security-libs/java.security)
 4개의 Amazon 루트 CA 인증서 추가 (security-libs/java.security)
 기본적으로 AOT 비활성화 및 관련 플래그를 실험용으로 변경 (hotspot/compiler)
 Epsilon GC가 검사된 배열 저장을 잘못 처리함 (hotspot/gc)
버그 수정
 SunPKCS11의 메모리 증가 문제 수정 (security-libs/javax.crypto:pkcs11)
 더 나은 직렬 필터 처리 (core-libs/java.io:serialization)
 123개의 버그 수정 Java SE 11.0.7 2020-04-14 새로운 기능
 MS Cryptography Next Generation (CNG) 지원 (security-libs/javax.crypto)
버그 수정
 140개의 버그 수정 Java SE 11.0.8 2020-07-14 새로운 기능
 TLS 서명 체계를 구성하는 새로운 시스템 속성 (security-libs/javax.net.ssl)
 Apache Santuario 라이브러리 버전 2.1.4로 업데이트 (security-libs/javax.xml.crypto)
 Xcode 10.1로 도구 체인 업그레이드 (infrastructure)
 Windows용 Oracle JDK 설치 프로그램은 모든 명령 프롬프트에서 도달 가능한 경로에 실행 파일 (javac 등)을 제공함 (install/install)
제거된 기능 및 옵션
 Comodo 루트 CA 인증서 제거 (security-libs/java.security)
 DocuSign 루트 CA 인증서 제거 (security-libs/java.security)
기타 참고 사항
 향상된 직렬화 처리 (security-libs/javax.net.ssl)
 배열 목록 개선 (security-libs/javax.net.ssl)
 기본 SSLEngine은 서버 역할로 생성해야 함 (security-libs/javax.net.sslc)
 컨테이너 내에서 OperatingSystemMXBean 메서드는 컨테이너 특정 데이터를 반환함 (core-svc/java.lang.management)
 기본 SSL 세션 캐시 크기가 20480으로 업데이트됨 (security-libs)
 NSWindowStyleMaskTexturedBackground 사용 중단됨 (client-libs/javax.swing)
버그 수정
 167개의 버그 수정 Java SE 11.0.92020-10-20 새로운 기능
 TLS, CertPath 및 서명된 JAR의 약한 명명된 곡선은 기본적으로 비활성화됨 (security-libs/java.security)
 Kerberos 교차 영역 참조 지원 (RFC 6806) (security-libs/org.ietf.jgss:krb5)
 인증서 체인 처리 개선 (security-libs/javax.net.ssl)
 약한 알고리즘이 사용될 경우 도구 경고 (security-libs/java.security)
 krb5.conf에서 canonicalize 지원 (security-libs/org.ietf.jgss:krb5)
기타 참고 사항
 Clear Connections를 통해 인증이 허용되는 LDAP 인증 메커니즘을 제어하는 속성 추가 (core-libs/javax.naming)
 3개의 SSL Corporation 루트 CA 인증서 추가 (security-libs/java.security)
 Entrust 루트 인증 기관 – G4 인증서 추가 (security-libs/java.security)
 영어 및 다른 로케일 간의 지역 시간대 이름 불일치 (core-libs/java.util:i18n)
 프록시 클래스 향상된 지원 (core-libs/java.io:serialization)
버그 수정
 118개의 버그 수정 Java SE 11.0.10 2021-01-19 새로운 기능
 keytool 키 쌍 생성에 -groupname 옵션 추가 (security-libs/java.security)
 certificate_authorities 확장 지원 (security-libs/javax.net.ssl)
 Linux의 POSIX_SPAWN 옵션 (core-libs/java.lang)
 TLS에서 X25519 및 X448 지원 (security-libs/javax.net.ssl)
 jarsigner가 POSIX 파일 권한 및 심볼릭 링크 속성 보존 (security-libs/java.security)
기타 참고 사항
 Solaris용 Oracle JDK11u는 이제 harfbuzz를 설치해야 함 (client-libs/2d)
 JDK 시간대 데이터가 tzdata2020d로 업그레이드됨 (core-libs/java.time)
 JDK 시간대 데이터가 tzdata2020c로 업그레이드됨 (core-libs/java.time)
 tzdata2020b의 일부로 US/Pacific-New Zone 이름 제거됨 (core-libs/java.time)
버그 수정
 118개의 버그 수정 Java SE 11.0.11 2021-04-20 새로운 기능
 jdeps --print-module-deps가 전이적 종속성 보고 (tools)
기타 참고 사항
 JDK 내장 JNDI RMI 및 LDAP 구현에 의한 원격 객체 재구성을 제어하는 새로운 시스템 및 보안 속성 (core-libs/javax.naming)
 2개의 HARICA 루트 CA 인증서 추가 (security-libs/java.security)
 TLS 1.0 및 1.1 비활성화 (security-libs/javax.net.ssl)
 MS950 문자 집합 인코더의 변환 테이블 수정 (core-libs/java.nio.charsets)
 Windows에서 ProcessBuilder 따옴표 처리의 모호성 감소 (core-libs/java.lang)
버그 수정
 88개의 버그 수정 Java SE 11.0.12 2021-07-20 새로운 기능
 교차 영역 MSSFU 지원 (security-libs/org.ietf.jgss:krb5)
 PKCS12 키 저장소 생성 사용자 정의 (security-libs/java.security)
제거된 기능 및 옵션
 1024비트 키를 가진 루트 인증서 제거 (security-libs/java.security)
 Telia Company의 Sonera Class2 CA 인증서 제거 (security-libs/java.security)
기타 참고 사항
 JDK RPM이 제공하는 기능 목록 업데이트됨 (install/install)
 Windows JDK 설치 프로그램에 ADDLOCAL=ToolsFeature,SourceFeature 인수는 더 이상 필요하지 않음 (install/install)
 기본 PKCS12 암호화 및 MAC 알고리즘 업그레이드됨 (security-libs/java.security)
 SHA-1 JAR 비활성화 (security-libs/java.security)
 TLS 애플리케이션 계층 프로토콜 협상 (ALPN) 값 인코딩 개선 (security-libs/javax.net.ssl)
 URL FTP 프로토콜 핸들러: 수동 모드에서 IPv4 주소 유효성 검사 (core-libs/java.net)
버그 수정
 106개의 버그 수정 Java SE 11.0.13 2021-10-19 새로운 기능
 컨텍스트 특정 역직렬화 필터 (core-libs/java.io:serialization)
제거된 기능 및 옵션
 IdenTrust 루트 인증서 제거 (security-libs/java.security)
 OracleJDK 11u에서 실험적 AOT 및 JIT 컴파일러 제거 (hotspot/compiler)
기타 참고 사항
 릴리스가 Windows 11을 올바르게 인식하지 못함 (core-libs/java.lang)
 Linux RPM/DEB 설치 프로그램의 패키지 이름 변경 (install)
 기본적으로 활성화된 암호화 스위트 선호도 업데이트됨 (security-libs/javax.net.ssl)
 JDK 내장 JNDI LDAP 구현에 의한 참조 주소 객체 재구성을 제어하는 시스템 속성 (core-libs/javax.naming)
 릴리스가 Windows Server 2022를 올바르게 인식하지 못함 (hotspot/runtime)
 RFC 5280에 따라 발행 인증서의 SKID에서 AKID를 생성하도록 keytool 업데이트됨 (security-libs/java.security)
 보안 모듈 데이터베이스에 외부 FIPS 모듈이 있을 때 NSS로 SunPKCS11 초기화 (security-libs/javax.crypto:pkcs11)
버그 수정
 93개의 버그 수정 Java SE 11.0.14 2022-01-18 새로운 기능
 새로운 SunPKCS11 구성 속성 (security-libs/javax.crypto:pkcs11)
 시스템 속성으로 구성 가능한 확장 (security-libs/javax.net.ssl)
제거된 기능 및 옵션
 Google의 GlobalSign 루트 인증서 제거 (security-libs/java.security)
기타 참고 사항
 Zip 파일 시스템 공급자가 엔트리 이름 요소에 "." 또는 ".."가 포함될 때 ZipException을 throw함 (core-libs/java.nio)
 시간대 데이터 2021c로 업데이트 (core-libs/java.time)
 Java GSS/Kerberos에 대한 LDAP 채널 바인딩 지원 (core-libs/javax.naming)
 SocketExceptions는 SSLSocketImpl에서 SSLExceptions로 래핑되지 않음 (security-libs/javax.net.ssl)
 OperatingSystemMXBean.getProcessCpuLoad가 이제 컨테이너 인식을 함 (hotspot/runtime)
버그 수정
 71개의 버그 수정Java SE 11.0.152022-04-19새로운 기능
 SunPKCS11 공급자가 PKCS11 라이브러리에서 지원하는 경우 ChaCha20-Poly1305 암호 및 ChaCha20 KeyGenerator 지원 (security-libs/javax.crypto:pkcs11)
 ChaCha20 및 Poly1305 TLS 암호화 스위트 (security-libs/javax.net.ssl)
 새로운 XML 처리 제한 (xml/jaxp)
기타 참고 사항
 macOS KeychainStore에서 적절한 신뢰 설정이 있는 인증서만 신뢰할 수 있는 인증서 항목으로 노출 (security-libs/java.security)
 내장 JNDI 공급자에서 URL 문자열 구문 분석이 더 엄격해짐 (core-libs/javax.naming)
버그 수정
 81개의 버그 수정Java SE 11.0.162022-07-19 새로운 기능
 Java GSS/Kerberos를 위한 HTTPS 채널 바인딩 지원 (core-libs/java.net)
기타 참고 사항
 java.net.InetAddress를 업데이트하여 모호한 IPv4 주소 리터럴 감지 (core-libs/java.net)
 Firefox 102를 사용하여 다운로드할 때 JDK 번들 확장자가 잘림 (core-libs/java.io:serialization)
 Vector는 요소의 누락된 클래스에 대해 ClassNotFoundException을 throw해야 함 (core-libs/java.io:serialization)
 IOException이 발생하면 기본 JDK 압축기가 닫힘 (core-libs/java.util.jar)
버그 수정
 74개의 버그 수정Java SE 11.0.16.12022-08-18 변경 사항
 C2 컴파일 오류가 JVM을 예측할 수 없게 충돌시킴 (hotspot/compiler)Java SE 11.0.172022-10-18새로운 기능
 기본 PKCS12 MAC 알고리즘 업그레이드 (security-libs/java.security)
 역직렬화용 JDK 플라이트 레코더 이벤트 (core-libs/java.io:serialization)
기타 참고 사항
 SHA-1 서명된 JAR 비활성화됨 (security-libs/java.security)
 Kerberos에서 3DES 및 RC4 사용 중단 (security-libs/org.ietf.jgss:krb5)
 HttpURLConnection 기본 Keep Alive Timeout 구성 가능하게 함 (core-libs/java.net)
 활성 프로세서 수 계산 시 CPU 공유 무시됨 (hotspot/runtime)
 시간대 데이터 2022c로 업데이트 (core-libs/java.time)
 com.sun.net.httpserver.HttpServer에 대한 최대 개방 연결 수를 제한하는 새로운 시스템 속성 (core-libs/java.net)
버그 수정
 118개의 버그 수정Java SE 11.0.182023-01-17 새로운 기능
 DTLS 재개는 HelloVerifyRequest 메시지 사용 (security-libs/javax.net.ssl)
 OCSP 응답에서 RSASSA-PSS 지원 (security-libs/java.security)
알려진 문제
 Oracle Linux 특정 x64 JDK RPM 설치 시 i686 종속성 가져옴 (install/install)
기타 참고 사항
 FXML 자바스크립트 엔진 기본적으로 비활성화됨 (javafx/fxml)
 독일어 번역 리소스 번들 (globalization)
 RPM JDK 설치 프로그램 변경 사항 (install/install)
 Windows JDK 설치 프로그램에서 여러 JDK 업데이트의 Side-by-Side 설치 비활성화 (install/install)
 모든 JDK 업데이트 릴리스는 macOS의 동일한 디렉터리에 설치됨 (install/install)
 ProcessBuilder의 따옴표로 묶인 인수 처리 오류 (core-libs/java.lang)
 Principals 또는 Credentials 세트에서 Null 제거에 대한 LoginModule의 새로운 구현 참고 사항 (security-libs/javax.security)
 Visual Studio 2022로 도구 체인 업그레이드 (infrastructure)
 SSLEngine.closeInbound() 동작 변경 (security-libs/javax.net.ssl)
버그 수정
 58개의 버그 수정Java SE 11.0.192023-04-18 새로운 기능
 Windows에 기본 GSS-API 라이브러리 추가 (security-libs/org.ietf.jgss)
기타 참고 사항
 HTML ObjectView 생성 처리를 위한 시스템 속성 (client-libs/javax.swing)
 Certigna(Dhimyotis) 루트 CA 인증서 추가 (security-libs/java.security)
 기본적으로 활성화된 TLS 프로토콜에서 SSLv2Hello 및 SSLv3 제거 (security-libs/javax.net.ssl)
 File::listRoots가 Windows의 모든 사용 가능한 드라이브를 반환하도록 변경됨 (core-libs/java.io)
 Diffie-Hellman 및 DSA AlgorithmParameters 요청에 대한 Crypto-J 예외 (security-libs/java.security)
버그 수정
 55개의 버그 수정Java SE 11.0.202023-07-18 새로운 기능
 GB18030-2022 지원을 위한 추가 문자 허용 (core-libs/java.lang)
 GB18030-2022 지원 (core-libs/java.nio.charsets)
 GB 18030-2022 구현 레벨 2 지원을 명시하도록 Character 클래스의 Javadoc 업데이트 (core-libs/java.lang)
 Windows KeyStore가 로컬 머신 위치에 대한 접근을 포함하도록 업데이트됨 (security-libs/java.security)
 새로운 JFR 이벤트: jdk.InitialSecurityProperty (security-libs/java.security)
 새로운 JFR 이벤트: jdk.SecurityProviderService (security-libs/java.security)
 JDK는 이제 PKCS#1 형식의 RSA 키를 허용함 (security-libs/javax.crypto)
알려진 문제
 시스템 사용자가 공유 파일을 사용하는 경우 Windows에서 JDK 업그레이드 문제 (install)
기타 참고 사항
 JDK-8251329 제한을 해제하는 시스템 속성 (core-libs/java.nio)
 Linux의 누락된 /usr/java/default 심볼릭 링크 복원됨 (install/install)
 JDK RPM 설치 시 대안 손상 (install/install)
 TWCA 루트 CA 인증서 추가 (security-libs/java.security)
 4개의 GTS 루트 CA 인증서 추가 (security-libs/java.security)
 Microsoft Corporation의 2개의 TLS 루트 CA 인증서 추가 (security-libs/java.security)
 Java SE 사양 유지 관리 버전을 위한 시스템 속성 (core-libs/java.lang)
 GregorianCalender.computeTime() JVM 충돌 (hotspot/compiler)
 CDS 아카이브용 ASLR 지원 (hotspot/runtime)
 기본 java.security 파일 로드 실패 시 오류 발생 (security-libs/java.security)
 서명 파일의 최대 크기를 제어하는 새로운 시스템 속성 (security-libs/java.security)
 ZIP64 확장 필드 유효성 검사 개선 (core-libs/java.util.jar)
버그 수정
 43개의 버그 수정Java SE 11.0.212023-10-17 새로운 기능
 -XshowSettings:locale 출력에 이제 Tzdata 버전 포함 (tools/launcher)
제거된 기능 및 옵션
 SECOM Trust System의 RootCA1 루트 인증서 제거 (security-libs/java.security)
기타 참고 사항
 Certigna 루트 CA 인증서 추가 (security-libs/java.security)
 Debian JDK 설치 프로그램 변경 사항 (install/install)
 java.security.manager 시스템 속성에 대한 Allow 및 Disallow 옵션 무시 (security-libs/java.security)
 기본 TLS Diffie-Hellman 그룹 크기가 1024비트에서 2048비트로 증가됨 (security-libs/javax.net.ssl)
 기본적으로 서버 암호화 스위트 선호도 사용 (security-libs/javax.net.ssl)
버그 수정
 29개의 버그 수정Java SE 11.0.222024-01-16 새로운 기능
 XML Signature Secure Validation Mode를 토글하는 새로운 시스템 속성 (security-libs/javax.xml.crypto)
알려진 문제
 제한된 범위 검사 제거로 인한 잠재적 성능 회귀 (hotspot/compiler)
기타 참고 사항
 hs-err 및 VM.info에 프로세스-메모리 정보 추가 (hotspot/runtime)
 시스템 속성 jdk.jar.maxSignatureFileSize의 기본값 증가 (security-libs/java.security)
 DigiCert, Inc.의 4개 루트 인증서 추가 (security-libs/java.security)
 eMudhra Technologies Limited의 3개 루트 인증서 추가 (security-libs/java.security)
 Telia Root CA v2 인증서 추가 (security-libs/java.security)
 Let's Encrypt의 ISRG Root X2 CA 인증서 추가 (security-libs/java.security)
 모든 키 유형에 대해 X509KeyManager.chooseClientAlias 한 번 호출 (security-libs/javax.net.ssl)
 hs-err 및 VM.info에 프로세스-메모리 정보 추가 (hotspot/runtime)
버그 수정
 29개의 버그 수정 Java SE 11.0.23 2024-04-16 Java SE 11.0.24 2024-07-16 Java SE 11.0.25 2024-10-15 Java SE 11.0.26 2025-01-21 Java SE 11.0.27 2025-04-15 Java SE 11.0.28 2025-07-15 Java SE 11.0.29 2025-10-21

 Java SE 12 

JDK 12는 2019년 3월 19일에 출시되었다. 다른 기능 외에도 자바 12에는 다음과 같은 여러 새로운 기능이 포함되어 있다.









프리뷰 기능 JEP 325는 `switch` 문을 확장하여 표현식으로도 사용할 수 있게 하며, 오른쪽에 표현식이 오는 새로운 형태의 case 레이블을 추가한다. break 문은 필요 없다. 복잡한 표현식의 경우 `yield` 문을 사용할 수 있다. 이는 자바 SE 14에서 표준이 된다.

int ndays = switch(month) {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if (year % 400 == 0) yield 29;
        else if (year % 100 == 0) yield 28;
        else if (year % 4 == 0) yield 29;
        else yield 28; }
};

 자바 12 업데이트 
 자바 12 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 12 2019-03-19 초기 릴리스 Java SE 12.0.1 2019-04-16 알려진 문제
 자바 접근 브리지 설치 해결책 (install)
변경 사항
 GlobalSign R6 루트 인증서 추가 (security-libs/java.security)
 새로운 일본 시대 이름 레이와 (core-libs/java.time)
버그 수정
 3개의 버그 수정 Java SE 12.0.2 2019-07-16 제거된 기능 및 옵션
 두 DocuSign 루트 CA 인증서 제거 (security-libs/java.security)
 두 Comodo 루트 CA 인증서 제거 (security-libs/java.security)
 T-Systems Deutsche Telekom 루트 CA 2 인증서 제거 (security-libs/java.security)
기타 참고 사항
 자바 접근 브리지 설치 해결책 (install)

 Java SE 13 

JDK 13은 2019년 9월 17일에 출시되었다. 자바 13에는 다음과 같은 새로운 기능과 "수백 가지의 작은 개선 사항 및 수천 가지의 버그 수정"이 포함되어 있다.






JEP 355 텍스트 블록은 여러 줄 문자열 리터럴을 허용한다.

String html = """
              <html lang="en">
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

 자바 13 업데이트 
 자바 13 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 13 2019-09-17 초기 릴리스 Java SE 13.0.1 2019-10-15 기타 참고 사항
 macOS Catalina (10.15)에서 JDK 또는 JRE 사용 (docs)
 기본 TLS 알고리즘에서 구식 NIST EC 곡선 제거 (security-libs/javax.net.ssl)
 macOS 다크 모드에서 텍스트 가시성 문제 (client-libs)
 Runtime.exec 및 ProcessBuilder 인수 제한 (core-libs/java.lang) Java SE 13.0.2 2020-01-14 기타 참고 사항
 신뢰 앵커 인증서에 대한 새로운 검사 (security-libs/java.security)
 신뢰할 수 있는 TLS 서버 인증서에 정확한 일치 필요 (security-libs/java.security)
 LuxTrust Global Root 2 인증서 추가 (security-libs/java.security)
 4개의 Amazon 루트 CA 인증서 추가 (security-libs/java.security)
 레지스트리 지원 개선 (core-libs/java.rmi)
버그 수정
 더 나은 직렬 필터 처리 (core-libs/java.io:serialization)
 29개의 버그 수정

 Java SE 14 

JDK 14는 2020년 3월 17일에 출시되었다. 자바 14에는 다음과 같은 새로운 기능과 "수백 가지의 작은 개선 사항 및 수천 가지의 버그 수정"이 포함되어 있다.

















JEP 305, instanceof를 위한 패턴 매칭은 일반적인 `instanceof` 테스트에 이어 즉시 캐스팅되는 경우를 단순화하여 다음을 대체한다.

if (obj instanceof String) {
    String s = (String)obj;
    System.out.println(s.length());
}

다음과 같이 변경된다.

if (obj instanceof String s) {
    System.out.println(s.length());
}

JEP 359 레코드는 간단한 불변 튜플과 유사한 클래스를 쉽게 생성할 수 있게 한다.

record Point(int x, int y) { }
Point p = new Point(3, 4);
System.out.println(p.x());

 자바 14 업데이트 
 자바 14 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 14 2020-03-17 초기 릴리스 Java SE 14.0.1 2020-04-14 버그 수정
 2개의 버그 수정 Java SE 14.0.2 2020-07-14 제거된 기능 및 옵션
 Comodo 루트 CA 인증서 제거 (security-libs/java.security)
 DocuSign 루트 CA 인증서 제거 (security-libs/java.security)
기타 참고 사항
 배열 목록 개선 (core-libs/java.util:collections)
 기본 SSLEngine은 서버 역할로 생성해야 함 (security-libs/javax.net.ssl)
 향상된 직렬화 처리 (core-libs/java.io:serialization)
버그 수정
 8개의 버그 수정

 Java SE 15 

JDK 15는 2020년 9월 15일에 출시되었다. 자바 15는 예를 들어 여러 줄 문자열 리터럴 (텍스트 블록)을 지원한다. Shenandoah 및 Z 쓰레기 수집기 (후자는 때때로 ZGC로 약칭됨)는 이제 프로덕션에서 사용할 준비가 되었다 (즉, 더 이상 실험적이라고 표시되지 않음). 오라클의 솔라리스 운영 체제 (및 SPARC CPU) 지원은 중단되었다 (Java 11 등에서는 여전히 사용 가능). Nashorn 자바스크립트 엔진이 제거되었다. 또한 일부 루트 CA 인증서도 제거되었다.















JEP 360 봉인된 클래스는 다른 클래스나 인터페이스가 자신을 확장하거나 구현하는 것을 제한하는 봉인된 클래스 및 인터페이스를 추가한다. `permits` 절에 지정된 클래스만 해당 클래스나 인터페이스를 확장할 수 있다.
package com.example.geometry;

public abstract sealed class Shape
    permits Circle, Rectangle, Square {...}

레코드와 함께 봉인된 클래스는 합계 자료형이다. 이들은 레코드, 스위치 표현식, instanceof를 위한 패턴 매칭과 같은 다른 최신 기능들과 잘 작동한다. 이들은 모두 2018년 9월 개빈 비어만과 브라이언 고에츠가 처음 논의한 "자바의 패턴 매칭" 시스템의 일부를 형성한다.

 자바 15 업데이트 
 자바 15 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 15 2020-09-15 초기 릴리스 Java SE 15.0.1 2020-10-20 새로운 기능
 인증서 체인 처리 개선 (security-libs/javax.net.ssl)
기타 참고 사항
 Clear Connections를 통해 인증이 허용되는 LDAP 인증 메커니즘을 제어하는 속성 추가 (core-libs/javax.naming)
 3개의 SSL Corporation 루트 CA 인증서 추가 (security-libs/java.security)
 Entrust 루트 인증 기관 – G4 인증서 추가 (security-libs/java.security)
 프록시 클래스 향상된 지원 (core-libs/java.io:serialization)
버그 수정
 8개의 버그 수정 Java SE 15.0.2 2021-01-19기타 참고 사항
 JDK 시간대 데이터가 tzdata2020d로 업그레이드됨 (core-libs/java.time)
 JDK 시간대 데이터가 tzdata2020c로 업그레이드됨 (core-libs/java.time)
 tzdata2020b의 일부로 US/Pacific-New Zone 이름 제거됨 (core-libs/java.time)
버그 수정
 24개의 버그 수정

 Java SE 16 

JDK 16은 2021년 3월 16일에 출시되었다. 자바 16은 선행 컴파일 (및 Graal JIT) 옵션을 제거한다. 자바 구현 자체는 C++로 작성되었고 여전히 그렇지만, 자바 16부터는 더 최신 C++14 (그러나 아직 C++17 또는 C++20 등은 아님)가 허용된다. 코드도 깃허브로 옮겨졌으며, 머큐리얼은 소스 제어 시스템에서 제외되었다.






  — 아직 안정적이지 않음











 자바 16 업데이트 
 자바 16 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 16 2021-03-16 초기 릴리스 Java SE 16.0.1 2021-04-20 기타 참고 사항
 JDK 내장 JNDI RMI 및 LDAP 구현에 의한 원격 객체 재구성을 제어하는 새로운 시스템 및 보안 속성 (core-libs/javax.naming)
 2개의 HARICA 루트 CA 인증서 추가 (security-libs/java.security)
 Windows에서 ProcessBuilder 따옴표 처리의 모호성 감소 (core-libs/java.lang)
버그 수정
 30개의 버그 수정 Java SE 16.0.2 2021-07-20 제거된 기능 및 옵션
 Telia Company의 Sonera Class2 CA 인증서 제거 (security-libs/java.security)
기타 참고 사항
 JDK RPM이 제공하는 기능 목록 업데이트됨 (install/install)
 Linux RPM/DEB 설치 프로그램의 패키지 이름 변경 (install/install)
 URL FTP 프로토콜 핸들러: 수동 모드에서 IPv4 주소 유효성 검사 (core-libs/java.net)
 SocketExceptions는 SSLSocketImpl에서 SSLExceptions로 래핑되지 않음 (security-libs/javax.net.ssl)
 SHA-1 JAR 비활성화 (security-libs/java.security)
버그 수정
 25개의 버그 수정

 Java SE 17 (LTS) 

JDK 17은 2021년 9월에 출시되었다. 자바 17은 새로운 6개월 릴리스 주기 (첫 번째는 자바 11)로 전환한 이후 두 번째 장기 지원 (LTS) 릴리스이다.















JEP 406은 instanceof 작업에 사용되는 패턴 매칭 구문을 switch 문 및 표현식으로 확장한다. 이는 인수의 유형, null 케이스 및 정제 패턴에 따라 케이스를 선택할 수 있게 한다.

Object o = ...;
return switch (o) {
        case null       -> "Null";
        case String s   -> "String %s".formatted(s);
        case Long l     -> "long %d".formatted(l);
        case Double d   -> "double %f".formatted(d);
        case Integer i && i > 0                            // refining patterns
                        -> "positive int %d".formatted(i);
        case Integer i && i == 0
                        -> "zero int %d".formatted(i);
        case Integer i && i < 0
                        -> "negative int %d".formatted(i);
        default         -> o.toString();
};

 자바 17 업데이트 
 자바 17 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 17 2021-09-14 초기 릴리스 Java SE 17.0.1 2021-10-19 제거된 기능 및 옵션
 IdenTrust 루트 인증서 제거 (security-libs/java.security)
기타 사항
 릴리스가 윈도우 11을 올바르게 인식하지 못함 (core-libs/java.lang)
 JDK 내장 JNDI LDAP 구현에 의한 참조 주소 객체 재구성을 제어하는 시스템 속성 (core-libs/javax.naming)
 릴리스가 윈도우 서버 2022를 올바르게 인식하지 못함 (hotspot/runtime)
 OperatingSystemMXBean.getProcessCpuLoad가 이제 컨테이너 인식 (hotspot/runtime)
버그 수정
 21개의 버그 수정 Java SE 17.0.2 2022-01-18 제거된 기능 및 옵션
 구글의 GlobalSign 루트 인증서 제거 (security-libs/java.security)
기타 사항
 네트워크 드라이브에서 JDK 실행 가능 설치 프로그램 시작 전 지연 시간 연장 (install/install)
 윈도우에서 file.encoding 시스템 속성 값이 올바르지 않음 (core-libs/java.io)
 엔트리 이름 요소에 "." 또는 ".."이 포함된 경우 Zip 파일 시스템 공급자가 ZipException을 던짐 (core-libs/java.nio)
 시간대 데이터를 2021c로 업데이트 (core-libs/java.time)
 ZGC: 긴 비강력 참조 처리 시간 수정 (hotspot/gc)
버그 수정
 164개의 버그 수정 Java SE 17.0.3 2022-04-19 새로운 기능
 새로운 XML 처리 제한 (xml/jaxp)
기타 사항
 macOS 키체인 저장소에서 적절한 신뢰 설정이 있는 인증서만 신뢰할 수 있는 인증서 항목으로 노출 (security-libs/java.security)
 내장 JNDI 공급자에서 URL 문자열 파싱이 더 엄격해짐 (core-libs/javax.naming)
버그 수정
 48개의 버그 수정 Java SE 17.0.3.1 2022-05-02 변경 사항
 java.io.File에서 윈도우 대체 데이터 스트림 지원을 비활성화하는 새로운 시스템 속성 (core-libs/java.io)
버그 수정
 2개의 버그 수정 Java SE 17.0.4 2022-07-19 새로운 기능
 자바 GSS/Kerberos를 위한 HTTPS 채널 바인딩 지원 (core-libs/java.net)
기타 사항
 모호한 IPv4 주소 리터럴을 감지하도록 java.net.InetAddress 업데이트 (core-libs/java.net)
 IOException 발생 시 기본 JDK 압축기가 닫힘 (core-libs/java.util.jar)
 활성 프로세서 수 계산 시 CPU 공유 무시 (hotspot/runtime)
버그 수정
 60개의 버그 수정 Java SE 17.0.4.1 2022-08-18 변경 사항
 C2 컴파일 오류로 JVM이 예측할 수 없이 충돌함 (hotspot/compiler) Java SE 17.0.5 2022-10-18 새로운 기능
 자바 GSS/Kerberos를 위한 HTTPS 채널 바인딩 지원 (core-libs/java.net)
기타 사항
 모호한 IPv4 주소 리터럴을 감지하도록 java.net.InetAddress 업데이트 (core-libs/java.net)
 IOException 발생 시 기본 JDK 압축기가 닫힘 (core-libs/java.util.jar)
 활성 프로세서 수 계산 시 CPU 공유 무시 (hotspot/runtime)
버그 수정
 77개의 버그 수정 Java SE 17.0.6 2023-01-17 새로운 기능
 DTLS 재개는 HelloVerifyRequest 메시지를 사용함 (security-libs/javax.net.ssl)
 OCSP 응답에서 RSASSA-PSS 지원 (security-libs/java.security)
알려진 문제
 오라클 리눅스 특정 x64 JDK RPM 설치 시 i686 종속성 가져옴 (install/install)
기타 사항
 FXML 자바스크립트 엔진 기본적으로 비활성화 (javafx/fxml)
 독일어 번역 리소스 번들 (globalization)
 RPM JDK 설치 프로그램 변경 사항 (install/install)
 윈도우 JDK 설치 프로그램에서 여러 JDK 업데이트의 동시 설치 비활성화 (install/install)
 모든 JDK 업데이트 릴리스가 macOS에서 동일한 디렉토리에 설치됨 (install/install)
 ProcessBuilder에서 인용된 인자 처리 오류 (core-libs/java.lang)
 LoginModule에서 Principal 또는 Credentials 집합에서 Null을 제거하는 새로운 구현 노트 (security-libs/javax.security)
 Visual Studio 2022로 툴체인 업그레이드 (infrastructure)
 SSLEngine.closeInbound() 동작 변경 (security-libs/javax.net.ssl)
버그 수정
 52개의 버그 수정 Java SE 17.0.7 2023-04-18 새로운 기능
 새로운 JFR 이벤트: jdk.InitialSecurityProperty (security-libs/java.security)
기타 사항
 HTML ObjectView 생성을 처리하는 시스템 속성 (client-libs/javax.swing)
 Certigna(Dhimyotis) CA 인증서 추가 (security-libs/java.security)
 윈도우에서 File::listRoots가 사용 가능한 모든 드라이브를 반환하도록 변경됨 (core-libs/java.io)
 기본 java.security 파일 로드 실패 시 오류 발생 (security-libs/java.security)
 Diffie-Hellman 및 DSA AlgorithmParameters 요청에 대한 Crypto-J 예외 (security-libs/java.security)
버그 수정
 69개의 버그 수정 Java SE 17.0.8 2023-07-18 새로운 기능
 GB18030-2022 지원 (core-libs/java.nio.charsets)
 로컬 머신 위치에 대한 접근을 포함하도록 윈도우 키스토어 업데이트 (security-libs/java.security)
 새로운 JFR 이벤트: jdk.SecurityProviderService (security-libs/java.security)
알려진 문제
 시스템 사용자가 공유 파일을 사용하는 경우 윈도우에서 JDK 업그레이드 문제 (install)
기타 사항
 JDK-8251329 제한을 끄는 시스템 속성 (core-libs/java.nio)
 데비안 JDK 설치 프로그램 변경 사항 (install/install)
 리눅스에서 누락된 /usr/java/default 심볼릭 링크 복원 (install/install)
 JDK RPM 설치 시 대안 손상 (install/install)
 TWCA 루트 CA 인증서 추가 (security-libs/java.security)
 4개의 GTS 루트 CA 인증서 추가 (security-libs/java.security)
 Microsoft Corporation의 2개 TLS 루트 CA 인증서 추가 (security-libs/java.security)
 GregorianCalender.computeTime() JVM 충돌 (hotspot/compiler)
 CDS 아카이브에 대한 ASLR 지원 (hotspot/runtime)
 서명 파일의 최대 크기를 제어하는 새로운 시스템 속성 (security-libs/java.security)
 ZIP64 추가 필드 유효성 검사 개선 (core-libs/java.util.jar)
버그 수정
 56개의 버그 수정 Java SE 17.0.9 2023-10-17 새로운 기능
 -XshowSettings:locale 출력에 이제 Tzdata 버전 포함 (tools/launcher)
제거된 기능 및 옵션
 SECOM Trust System의 RootCA1 루트 인증서 제거 (security-libs/java.security)
기타 사항
 Certigna 루트 CA 인증서 추가 (security-libs/java.security)
 기본 TLS Diffie-Hellman 그룹 크기가 1024비트에서 2048비트로 증가함 (security-libs/javax.net.ssl)
버그 수정
 56개의 버그 수정Java SE 17.0.102024-01-16 새로운 기능
 XML 서명 보안 유효성 검사 모드를 전환하는 새로운 시스템 속성 (security-libs/javax.xml.crypto)
알려진 문제
 제한된 범위 검사 제거로 인한 잠재적 성능 저하 (hotspot/compiler)
기타 사항
 시스템 속성 jdk.jar.maxSignatureFileSize의 기본값 증가 (security-libs/java.security)
 DigiCert, Inc.의 4개 루트 인증서 추가 (security-libs/java.security)
 eMudhra Technologies Limited의 3개 루트 인증서 추가 (security-libs/java.security)
 Telia Root CA v2 인증서 추가 (security-libs/java.security)
 Let's Encrypt의 ISRG Root X2 CA 인증서 추가 (security-libs/java.security)
 모든 키 유형에 대해 X509KeyManager.chooseClientAlias 한 번 호출 (security-libs/javax.net.ssl)
버그 수정
 46개의 버그 수정 Java SE 17.0.11 2024-04-16 Java SE 17.0.12 2024-07-16 Java SE 17.0.13 2024-10-15 Java SE 17.0.14 2025-01-21 Java SE 17.0.15 2025-04-15 Java SE 17.0.16 2025-07-15 Java SE 17.0.17 2025-10-21

 Java SE 18 

JDK 18은 2022년 3월 22일에 릴리스되었다.










 자바 18 업데이트 
 자바 18 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 18 2022-03-22 초기 릴리스 Java SE 18.0.1 2022-04-19 새로운 기능
 새로운 XML 처리 제한 (xml/jaxp)
기타 사항
 macOS 키체인 저장소에서 적절한 신뢰 설정이 있는 인증서만 신뢰할 수 있는 인증서 항목으로 노출 (security-libs/java.security)
 내장 JNDI 공급자에서 URL 문자열 파싱이 더 엄격해짐 (core-libs/javax.naming)
버그 수정
 18개의 버그 수정 Java SE 18.0.1.1 2022-05-02 core-libs/java.io
 java.io.File에서 윈도우 대체 데이터 스트림 지원을 비활성화하는 새로운 시스템 속성 (core-libs/java.io)
버그 수정
 2개의 버그 수정 Java SE 18.0.2 2022-07-19 제거된 기능 및 옵션
 Subject::current 및 Subject::callAs API의 대체 ThreadLocal 구현 제거 (security-libs/javax.security)
기타 사항
 모호한 IPv4 주소 리터럴을 거부하도록 java.net.InetAddress 업데이트 (core-libs/java.net)
 활성 프로세서 수 계산 시 CPU 공유 무시 (hotspot/runtime)
 인터페이스의 객체 메서드 참조에 대해 람다 역직렬화 실패 (tools/javac)
버그 수정
 49개의 버그 수정 Java SE 18.0.2.1 2022-08-18 변경 사항
 C2 컴파일 오류로 JVM이 예측할 수 없이 충돌함 (hotspot/compiler)

 Java SE 19 

JDK 19는 2022년 9월 20일에 릴리스되었다.








JEP 405는 레코드 패턴을 허용하여 instanceof 연산자와 Switch 표현식의 패턴 매칭 기능을 확장하여 레코드 구성 요소를 명시적으로 참조하는 레코드 패턴을 포함하도록 한다.
record Rectangle(int x, int y, int w, int h) {}

int area(Object o) {
    if (o instanceof Rectangle(int x, int y, int w, int h)) {
        return w * h;
    }
    return 0;
}
이러한 패턴은 중첩된 패턴을 포함할 수 있으며, 레코드의 구성 요소 자체가 레코드이므로 패턴이 더 많은 객체 그래프와 일치할 수 있다.

 자바 19 업데이트 
 자바 19 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 19 2022-09-20 초기 릴리스 Java SE 19.0.1 2022-10-18 기타 사항
 시간대 데이터를 2022c로 업데이트 (core-libs/java.time)
 com.sun.net.httpserver.HttpServer에 대한 열린 연결 수를 제한하는 새로운 시스템 속성 (core-libs/java.net)
버그 수정
 6개의 버그 수정 Java SE 19.0.2 2023-01-17 새로운 기능
 DTLS 재개는 HelloVerifyRequest 메시지를 사용함 (security-libs/javax.net.ssl)
기타 사항
 FXML 자바스크립트 엔진 기본적으로 비활성화 (javafx/fxml)
버그 수정
 28개의 버그 수정

 Java SE 20 

자바 20은 2023년 3월 21일에 릴리스되었다. 모든 JEP는 인큐베이터 또는 미리보기였다.








 자바 20 업데이트 
 자바 20 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 20 2023-03-21 초기 릴리스 Java SE 20.0.1 2023-04-18 기타 사항
 HTML ObjectView 생성을 처리하는 시스템 속성 (client-libs/javax.swing)
 Certigna(Dhimyotis) CA 인증서 추가 (security-libs/java.security)
 윈도우에서 File::listRoots가 사용 가능한 모든 드라이브를 반환하도록 변경됨 (core-libs/java.io)
버그 수정
 5개의 버그 수정 Java SE 20.0.2 2023-07-18 새로운 기능
 GB18030-2022 지원 (core-libs/java.nio.charsets)
알려진 문제
 시스템 사용자가 공유 파일을 사용하는 경우 윈도우에서 JDK 업그레이드 문제 (install)
기타 사항
 리눅스에서 누락된 /usr/java/default 심볼릭 링크 복원 (install/install)
 JDK RPM 설치 시 대안 손상 (install/install)
 TWCA 루트 CA 인증서 추가 (security-libs/java.security)
 4개의 GTS 루트 CA 인증서 추가 (security-libs/java.security)
 Microsoft Corporation의 2개 TLS 루트 CA 인증서 추가 (security-libs/java.security)
 CDS 아카이브에 대한 ASLR 지원 (hotspot/runtime)
 서명 파일의 최대 크기를 제어하는 새로운 시스템 속성 (security-libs/java.security)
 ZIP64 추가 필드 유효성 검사 개선 (core-libs/java.util.jar)
버그 수정
 33개의 버그 수정

 Java SE 21 (LTS) 

자바 21은 2023년 9월 19일에 릴리스되었다. 이 릴리스에서 윈도우 x86용 자바의 32비트 버전은 제거를 위해 폐기되었다. 미리보기 및 인큐베이팅 JEP만 있었던 자바 20에 비해, 인큐베이팅 및 미리보기 단계를 졸업한 8개의 JEP를 포함하여 다음 JEP가 추가되었다. 자바 21은 자바 17에서 처음 미리보기되었던 기능(Switch 문을 위한 패턴 매칭)과 자바 19에서 미리보기되었던 기능(레코드 패턴)을 도입한다. 자바 21에 추가된 모든 JEP는 다음과 같다.

















JEP 445는 이름 없는 클래스를 미리보기하여 상용구 코드 없이 기본적인 Main 클래스를 허용한다.void main() {
    System.out.println("Hello, World!");
}

다음 대신:public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

 자바 21 업데이트 
 자바 21 업데이트 표 릴리스 릴리스 날짜 주요 내용 Java SE 21 2023-09-19 초기 릴리스 Java SE 21.0.1 2023-10-17 기타 사항
 Certigna 루트 CA 인증서 추가 (security-libs/java.security)
 시스템 속성 jdk.jar.maxSignatureFileSize의 기본값 증가 (security-libs/java.security)
버그 수정
 40개의 버그 수정Java SE 21.0.22024-01-16 새로운 기능
 TCP_KEEPxxxx 확장 소켓 옵션이 이제 윈도우 플랫폼에서 지원됨 (core-libs/java.net)
알려진 문제
 제한된 범위 검사 제거로 인한 잠재적 성능 저하 (hotspot/compiler)
해결된 문제
 ZGC: Non-Default ObjectAlignmentInBytes에 대한 지원 재도입 (hotspot/compiler)
기타 사항
 DigiCert, Inc.의 4개 루트 인증서 추가 (security-libs/java.security)
 eMudhra Technologies Limited의 3개 루트 인증서 추가 (security-libs/java.security)
 Telia Root CA v2 인증서 추가 (security-libs/java.security)
 Let's Encrypt의 ISRG Root X2 CA 인증서 추가 (security-libs/java.security)
 NMT: 릴리스 빌드에서 피크 값 사용 가능하게 함 (hotspot/runtime)
 THP가 활성화되었지만 사용할 수 없는 경우 사용자 경고 추가 (hotspot/runtime)
버그 수정
 74개의 버그 수정Java SE 21.0.32024-04-16 새로운 기능
 자바용 XML 보안을 3.0.3으로 업데이트 (security-libs/javax.crypto)
알려진 문제
 누락된 공유 라이브러리로 인해 데비안 리눅스 배포판에서 jpackage 앱 빌드 실패 가능성 (tools/jpackage)
기타 사항
 AWT SystemTray API는 대부분의 리눅스 데스크톱에서 지원되지 않음 (client-libs/java.awt)
 Certainly R1 및 E1 루트 인증서 추가 (security-libs/java.security)
 레코드 패턴에서 final을 거부하여 자바 언어 사양과 javac 정렬 (tools/javac)
타사 라이브러리 업데이트
 FreeType 2.13.2 (java.desktop)
 Xalan Java 2.7.3 (java.xml)
 XML Security for Java 3.0.3 (java.xml.crypto)
버그 수정
 27개의 버그 수정Java SE 21.0.42024-07-16Java SE 21.0.52024-10-15Java SE 21.0.62025-01-21Java SE 21.0.72025-04-15Java SE 21.0.82025-07-25Java SE 21.0.92025-07-25

 Java SE 22 

자바 22는 2024년 3월 19일에 릴리스되었다. 이 릴리스에 다음 기능 또는 JEP가 추가되었다.













자바의 스레딩 구현과 관련된 API인 java.lang.Thread.countStackFrames는 제거되었다.

 Java SE 23 

자바 23은 2024년 9월 17일에 릴리스되었으며, 다음 JEP가 포함되었다.













문자열 템플릿 미리보기 기능은 디자인 문제로 인해 자바 23에서 제거되었다.

 Java SE 24 

자바 24 사양은 2024년 12월에 확정되었으며, 24개의 JEP가 릴리스에 포함되었고 2025년 3월 18일에 릴리스되었다.

다음 JEP는 이 자바 SE 버전을 대상으로 했다.

  (이전에는 프로젝트 릴리풋으로 알려짐)























자바 SE 24는 마이크로소프트 윈도우 10의 32비트 x86 에디션을 공식적으로 지원하는 마지막 자바 릴리스이다.

 Java SE 25 (LTS) 

자바 25 사양은 2025년 7월에 확정되었으며, 18개의 JEP가 릴리스에 포함되었다. 자바 25는 2025년 9월 16일에 릴리스되었다.




















 미래 기능 
 프로젝트 발할라: 객체 ID가 없지만 특정 경우에 향상된 메모리 레이아웃(간접 참조 감소)을 얻거나 할당이 완전히 최적화될 수 있는 값 클래스.
 프로젝트 파나마:
 네이티브 코드와의 상호 운용성 개선: 자바 소스 코드가 다른 언어의 함수를 호출하고 데이터 타입을 사용할 수 있도록 하며, 오늘날보다 더 쉽고 성능이 좋은 방식으로 (프로젝트 파나마의 이 부분은 자바 22에서 JEP 454: 외부 함수 & 메모리 API 아래 안정화되고 있다).
 Vector API, SIMD 프로그래밍을 위한 휴대용의 비교적 저수준 추상화 계층. 안정화는 프로젝트 발할라에 달려 있다.
 프로젝트 릴리풋: 자바 객체 헤더 크기 줄이기. 먼저 64비트로, 그 다음 32비트로.
 JIT 모드에서 시작 시간 및 웜업 시간(최고 성능까지의 시간) 감소:
 프로젝트 CRaC는 전체 JVM(실행 중인 애플리케이션과 함께)의 스냅샷을 만들고 필요한 조정(파일, 소켓 등 다시 열기)으로 복원할 수 있도록 한다.
 프로젝트 레이든은 특히 부분 또는 (장기적으로) 전체 AOT 컴파일을 허용하여 전반적인 동적 동작을 줄여("closed-world constraints" 채택을 통해) 동적 컴파일 오버헤드를 줄인다.
 프로젝트 바빌론은 코드 리플렉션(즉, 코드 자체에 대한 리플렉션)이라는 반영적 프로그래밍 능력 향상을 통해 자바 언어의 적용 범위를 대체 프로그래밍 모델로 확장하는 것을 목표로 한다. 명시된 주요 목표는 GPU에서 자바 코드를 실행하는 것이며, SQL 및 기타 프로그래밍 모델은 부차적인 목표이다.

 구현 
공식적으로 지원되는 자바 플랫폼은 썬에서 처음 개발되었고 현재 오라클이 관리하는 자바 SE이다. 릴리스는 OpenJDK 프로젝트를 기반으로 하며, 이는 자유 및 오픈 소스 프로젝트로 개방형 개발 모델을 따른다. 그러나 자바의 초기 사유 소프트웨어 역사로 인해 다른 자바 구현도 존재한다. 대조적으로, 일부 구현은 표준 구현보다 특정 이점을 제공하기 위해 만들어졌으며, 종종 학술 또는 기업 후원 연구의 결과였다. 많은 리눅스 배포판은 레드햇이 시작한 IcedTea 프로젝트를 통해 OpenJDK 빌드를 포함하며, 이는 더 간단한 빌드 및 통합 환경을 제공한다.

비주얼 J++와 마이크로소프트 자바 가상 머신은 호환되지 않는 구현으로 만들어졌다. 썬 대 마이크로소프트 소송 이후, 마이크로소프트는 이를 포기하고 .NET 플랫폼 작업을 시작했다. 2021년에 마이크로소프트는 자바 11부터 "Microsoft Build of OpenJDK"를 배포하기 시작했으며, 이후 자바 17에 대해서도 배포했다. 이들의 빌드는 윈도우뿐만 아니라 리눅스와 MacOS도 지원한다.

아줄의 Zing과 같은 다른 사유 자바 구현도 사용할 수 있다. 아줄은 Zulu라는 이름으로 인증된 오픈 소스 OpenJDK 빌드를 제공한다.

OpenJDK 릴리스 이전에 썬의 구현이 여전히 사유였을 때, GNU 클래스패스 프로젝트는 자바 플랫폼의 자유 및 오픈 소스 구현을 제공하기 위해 만들어졌다. OpenJDK가 공식 참조 구현이 된 JDK 7 릴리스 이후, GNU 클래스패스 프로젝트의 원래 동기는 거의 완전히 사라졌으며, 마지막 릴리스는 2012년이었다.

아파치 하모니 프로젝트는 OpenJDK 릴리스 직전에 시작되었다. 썬의 초기 소스 코드 릴리스 이후에도 하모니 프로젝트는 계속되었으며, OpenJDK에 선택된 보호적 라이선스와 대조적으로 완화된 라이선스 아래 구현을 제공하기 위해 노력했다. 구글은 나중에 안드로이드를 개발하고 완화된 라이선스 아래 릴리스했다. 안드로이드는 하모니 프로젝트의 일부를 통합하고 구글의 자체 달빅 가상 머신과 ART로 보완했다. 아파치 하모니는 이후 폐기되었으며, 구글은 하모니 구성 요소를 OpenJDK의 동등한 구성 요소로 대체했다.

Jikes와 Jikes RVM은 모두 IBM이 개발한 오픈 소스 연구 프로젝트이다.

사유 소프트웨어로 시작했지만 현재는 오픈 소스인 다른 구현도 여러 개 존재한다. IBM은 처음에 OpenJ9를 사유 J9로 개발했지만, 이후 프로젝트의 라이선스를 변경하고 이클립스 재단에 기증했다. JRockit은 오라클에 인수되어 이후 OpenJDK 버전에 통합된 사유 구현이다.

 2025년 가장 일반적으로 사용되는 구현 

아마존은 성능 향상 및 보안 수정 사항을 포함하는 장기 지원을 제공하는 비용 없는 다중 플랫폼 프로덕션 준비 OpenJDK 배포판인 Corretto를 개발했다. Corretto는 자바 SE 표준과 호환되는 것으로 인증되었으며, 아마존 내부에서 많은 프로덕션 서비스에 사용된다.

AdoptOpenJDK로 이전에 알려졌던 Eclipse Temurin 프로젝트는 완전히 오픈 소스 빌드 팜에서 사전 빌드된 OpenJDK 바이너리를 제공한다. 이 프로젝트는 2021년에 Adoptium 워킹 그룹의 일환으로 이클립스 재단으로 전환되었으며, 고품질의 벤더 중립적인 자바 런타임 배포를 보장한다.

BellSoft Liberica JDK는 임베디드 시스템 및 구형 아키텍처 지원을 포함하여 다양한 플랫폼용 빌드를 제공하는 또 다른 OpenJDK 기반 구현이다. JavaFX와 같은 추가 구성 요소를 포함하는 표준 버전과 "Full" 버전을 모두 제공한다.

SAP Machine은 SAP의 OpenJDK 다운스트림 배포판으로, SAP 애플리케이션 및 배포에 최적화되어 있다. OpenJDK의 릴리스 일정에 맞춰 단기 및 장기 지원 릴리스를 모두 제공한다.

알리바바 Dragonwell은 일부 자체 최적화가 포함된 OpenJDK의 다운스트림 버전이다. 시작 성능, 메모리 점유율 및 처리량 개선 사항을 포함한다.

GraalVM은 전통적인 자바 구현과는 상당히 다르다. 오라클 랩스에서 개발되었으며, 자바 외에도 자바스크립트, 파이썬, 루비, R과 같은 여러 언어를 지원하는 다중 언어 가상 머신을 제공한다. GraalVM은 자바로 작성된 고급 JIT 컴파일러를 포함하고 AOT 컴파일을 지원하여 네이티브 실행 파일을 생성하며, 시작 시간과 메모리 점유율을 크게 줄인다.

레드햇 빌드 OpenJDK는 레드햇 엔터프라이즈 리눅스 및 윈도우용 레드햇이 지원하는 OpenJDK 배포판으로, 레드햇의 구독 제품의 일부로 장기 지원 및 정기 업데이트를 제공한다.

Eclipse OpenJ9 JVM 및 OpenJDK 클래스 라이브러리를 기반으로 하는 Semeru Runtime은 IBM의 비용 없는 자바 런타임으로, 클라우드 배포에 최적화되어 있다. HotSpot 기반 구현과 비교하여 시작 시간 단축, 메모리 점유율 감소 및 처리량 개선을 제공한다.

 각주 

 외부 링크 
 Official Java SE Downloads
 Early history of Java 
 Sun Java Supported versions and EOL
 Downloads archive for older version of Java
 JDK Releases
 The Java Version Almanac

분류:소프트웨어의 역사
분류:자바 플랫폼
분류:소프트웨어 버전 역사