자바 언어는 JDK 1.0 이후로 여러 가지 변경 사항을 겪었을 뿐만 아니라 표준 라이브러리에 대한 수많은 클래스 및 패키지 추가를 거쳤다. J2SE 1.4 이후 Java 언어의 발전은 JSR(Java Specification Requests)을 사용하여 Java 플랫폼에 대한 추가 및 변경 사항을 제안하고 규정하는 JCP(Java Community Process)에 의해 관리되었다. 언어는 JLS(Java Language Specification)에 의해 규정된다. JLS에 대한 변경 사항은 JSR 901에 따라 관리된다. 2017년 9월 Java 플랫폼의 수석 아키텍트인 마크 레이놀드(Mark Reinhold)는 릴리스 트레인을 당시의 2년 일정이 아닌 "6개월마다 하나의 기능 릴리스"로 변경할 것을 제안했다. 이 제안은 이후의 모든 버전에 적용되었다.

언어 변경 외에도 JDK 1.0의 수백 개 클래스에서 J2SE 5의 3,000개 이상으로 성장한 수년에 걸쳐 Java 클래스 라이브러리에 다른 변경 사항이 적용되었다. Swing 및 Java2D와 같은 완전히 새로운 API가 도입되었으며 원래의 수많은 JDK 1.0 클래스 및 메서드는 현재 구식(deprecated)이다. 일부 프로그램은 Java 플랫폼의 한 버전에서 이전 버전으로 Java 프로그램을 변환할 수 있다. (예: Java 5.0이 1.4로 백포트됨)

Oracle Java SE 지원 로드맵과 관련하여 버전 19는 최신 버전이며 버전 17, 11 및 8은 현재 지원되는 LTS(장기 지원) 버전이며 오라클 프리미어 서포트(Oracle Premier Support)를 받게 된다. Java 8 LTS 상업용 마지막 무료 소프트웨어 공개 업데이트는 Oracle에서 2022년 3월에 출시했으며 Oracle은 계속해서 개발 및 개인용 무료 공개 Java 8 업데이트를 지속적으로 출시하고 있다. Java 7은 더 이상 공개적으로 지원되지 않는다. Java 11의 경우 Oracle은 대중을 위해 장기 지원을 제공하지 않는다. 대신 Eclipse Adoptium 등과 같은 광범위한 OpenJDK 커뮤니티가 작업을 수행할 것으로 예상된다.

Java 17 최신(3차) LTS가 2021년 9월 14일에 릴리스되었다.

Java 19 일반 가용성은 2022년 9월 20일에 시작되었다.

최신(제4차) LTS인 자바 21은 2023년 9월 19일에 출시되었다.

## JDK 1.0
첫 번째 버전은 1996년 1월 23일에 출시되었다. 첫 번째 안정 버전인 JDK 1.0.2는 Java 1이라고 한다.

## JDK 1.1
1997년 2월 19일 릴리스의 주요 추가 사항은 다음과 같다.

## J2SE 1.2
1998년 12월 8일의 릴리스와 J2SE 5.0을 통한 후속 릴리스는 소급하여 Java 2로 이름이 변경되었으며 버전 이름 "J2SE"는 기본 플랫폼을 J2EE와 구별하기 위해 JDK를 대체했다. 및 J2ME. 이것은 Java 플랫폼의 크기를 59개 패키지의 1520개 클래스로 세 배로 늘린 매우 중요한 Java 릴리스였다. 주요 추가 사항:

## J2SE 1.3
2000년 5월 8일 릴리스에서 가장 주목할 만한 변경 사항은 다음과 같다.

Java 1.3은 Microsoft Windows 95를 공식적으로 지원하는 마지막 Java 릴리스이다.

## J2SE 1.4
2002년 2월 6일 릴리스는 Java Community Process에서 JSR 59로 개발된 Java 플랫폼의 첫 번째 릴리스였다. 주요 변경 사항은 다음과 같다.

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

Java SE 5는 2008년 4월 8일에 공개 업데이트 종료 기간에 들어갔다. 업데이트는 2009년 11월 3일부로 더 이상 공개되지 않는다. 업데이트는 2015년 5월까지 유료 Oracle 고객에게 제공되었다.

자바 SE 5의 코드명 타이거(Tiger)는 몇 가지 중요한 새 언어 기능을 추가했다.

또한 표준 라이브러리에 다음과 같은 개선 사항이 있다.

Java 5는 Microsoft Windows 98 및 Windows ME를 공식적으로 지원하는 Java의 마지막 릴리스이며, Windows Vista는 Java 5가 2009년 10월에 단종되기 전에 Java SE 5가 지원되는 최신 Windows 버전이었다.

Java 5 업데이트 5(1.5.0_05)는 Windows 95(Internet Explorer 5.5 설치) 및 Windows NT 4.0에서 작동하는 마지막 Java 릴리스이다.

Java 5는 Apple Mac OS X 10.4(Tiger)에서 처음 사용할 수 있었고 Apple Mac OS X 10.5(Leopard)에 설치된 기본 Java 버전이었다.

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

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

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

개발 단계에서 개선 사항 및 버그 수정을 포함한 새로운 빌드가 거의 매주 릴리스되었다. 베타 버전은 2006년 2월과 6월에 출시되어 2006년 12월 11일에 최종 출시되었다.

이 버전에 포함된 주요 변경 사항:

이전 Win9x 버전에 대한 지원이 중단되었다. 비공식적으로 Java 6 Update 7은 이러한 버전의 Windows에서 작동하는 것으로 나타난 Java의 마지막 릴리스였다. 이것은 업데이트 10의 주요 변경 사항 때문이라고 간주된다.

Java 6은 64비트(Core 2 Duo 이상) 프로세서 시스템에서 실행되는 Mac OS X 10.5(Leopard)에 설치할 수 있다. Java 6은 Mac OS X 10.6(Snow Leopard)을 실행하는 32비트 및 64비트 시스템에서도 모두 지원된다.

Java 6은 2013년 2월에 지원 수명이 종료되었으며 이때 보안 업데이트를 포함한 모든 공개 업데이트가 중지될 예정이었다. Oracle은 2013년 3월과 4월에 Java 6에 대한 두 가지 업데이트를 추가로 발표하여 일부 보안 취약점을 패치했다.

### 자바 6 업데이트
Java 6 릴리스 이후 Sun 및 이후 Oracle은 공용 API를 변경하지 않으면서 최종 사용자 사용성을 향상시키거나 버그를 수정하는 몇 가지 업데이트를 릴리스했다.

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

Java 7의 추가 사항은 다음과 같다.

Lambda(Java의 람다 함수 구현), Jigsaw(Java의 모듈 구현) 및 Coin의 일부는 Java 7에서 제외되었으며 Java 8의 일부로 릴리스되다.(Jigsaw는 Java 9에서 릴리스됨)

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

### 자바 7 업데이트
Oracle은 제품의 공개 가용성이 종료되는 2015년 4월까지 분기별로 Java 7 제품군에 대한 공개 업데이트를 발표했다. 2022년 7월까지 계속되는 JDK 7의 추가 업데이트는 지원 계약이 있는 고객에게만 제공된다.

## 자바 SE 8
Java 8은 2014년 3월 18일에 릴리스되었으며 Java 7용으로 계획되었지만 나중에 연기된 일부 기능이 포함되었다.

기능에 대한 작업은 JEP(JDK Enhancement Proposals) 측면에서 구성되었다.

Java 8은 Windows XP에서 지원되지 않지만 JDK 8 업데이트 25부터는 Windows XP에서 계속 설치 및 실행할 수 있다. JDK 8의 이전 업데이트는 보관된 zip 형식 파일을 다운로드하고 실행 파일에 대한 압축을 풀어 XP에서 실행할 수 있다. XP에서 실행할 수 있는 Java 8의 마지막 버전은 업데이트 251이다. 그러나 구성 요소 호환성은 초기 빌드에서 지원되지 않는 OS에서 중단되기 시작한다. Java 8 업데이트는 계속 개발 중이다.

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

## 자바 SE 9
Java SE 9는 2017년 9월 21일에 사용할 수 있게 되었다. Java Executive Committee가 Project Jigsaw의 현재 구현체에 대한 논란의 여지가 있는 수용으로 인해 Oracle이 몇 가지 미결 문제 및 우려 사항을 수정하고 몇 가지 중요한 기술 질문을 수정하게 되었다. 2017년 6월 마지막 날 Java Community Process는 제안된 모듈 시스템 체계에 대해 거의 만장일치로 동의했다.

첫 번째 Java 9 릴리스 후보는 2017년 8월 9일에 릴리스되었다. Java 9의 첫 번째 안정적인 릴리스는 2017년 9월 21일에 릴리스되었다.

### 역사
JavaOne 2011에서 Oracle은 2016년에 Java 9용으로 출시할 기능에 대해 논의했다. Java 9에는 멀티 기가바이트 힙에 대한 더 나은 지원, 더 나은 네이티브 코드 통합, 다른 기본 가비지 콜렉터 및 자체 조정 JVM. 2016년 초에 Java 9의 출시 일정이 2017년 3월로 재조정되었으며 나중에 2017년 7월로 4개월 더 연기되었다.

## 자바 SE 10
OpenJDK 10은 2018년 3월 20일에 릴리스되었으며 12개의 새로운 기능이 확인되었다. 이러한 기능은 다음과 같다.

## 자바 SE 11
JDK 11은 2018년 9월 25일에 릴리스되었으며 현재 버그 수정을 위해 버전이 열려 있다. LTS 또는 장기 지원을 제공한다. 그 중에서도 Java 11에는 다음과 같은 여러 가지 새로운 기능이 포함되어 있다.

이전 릴리스의 여러 기능이 삭제되었다. 특히 Java 애플릿과 Java Web Start는 더 이상 사용할 수 없다. JavaFX, Java EE 및 CORBA 모듈이 JDK에서 제거되었다.

## 자바 SE 12
JDK 12는 2019년 3월 19일에 릴리스되었다. 그 중에서도 Java 12에는 다음과 같은 여러 가지 새로운 기능이 포함되어 있다.

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

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

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

String html = """

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

## 자바 SE 15
JDK 15는 2020년 9월 15일에 릴리스되었다. Java 15는 다음을 추가한다. 여러 줄 문자열 리터럴(일명 텍스트 블록)을 지원한다. Shenandoah 및 Z 가비지 컬렉터(후자는 ZGC로 축약되기도 함)가 이제 프로덕션에서 사용할 준비가 되었다. Oracle의 Solaris 운영 체제(및 SPARC CPU)에 대한 지원이 중단되었다.(예: Java 11에서는 계속 사용 가능) Nashorn JavaScript 엔진이 제거되었다. 일부 루트 CA 인증서도 제거했다.

## 자바 SE 16
JDK 16은 2021년 3월 16일에 릴리스되었다. Java 16은 Ahead-of-Time 컴파일(및 Graal JIT) 옵션을 제거한다. Java 구현 자체는 여전히 C++로 작성되었으며 Java 16부터 최신 C++14(예: C++17 또는 C++20은 아님)가 허용된다. 코드도 GitHub로 이관하여 소스 제어 시스템에서 Mercurial을 삭제했다.

## 자바 SE 17
JDK 17은 2021년 9월 이후 현재 LTS(장기 지원) 릴리스이다. Java 17은 새로운 6개월 릴리스 주기(첫 번째는 Java 11)로 전환한 이후 두 번째 장기 지원(LTS) 릴리스이다.

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

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

Jep 405는 레코드 패턴을 허용하여 instanceof 연산자의 패턴 일치 기능을 확장하고 표현식을 전환하여 레코드의 구성 요소를 명시적으로 참조하는 레코드 패턴을 포함한다.

## 자바 SE 20
Java 20은 2023년 3월에 출시되었다.

## 자바 SE 21
Java 21은 2023년 9월 19일에 출시되었다. 프리뷰 및 인큐베이팅 JEP만 있는 Java 20과 비교하면 미리 보기 또는 인큐베이팅 상태가 아닌 8개의 JEP가 있다. Java 21에는 Java 17(스위치 문에 대한 패턴 일치) 및 Java 19(레코드 패턴)에서 처음으로 미리 본 기능이 도입되었다. x86 기반 윈도우 32비트 버전은 제거를 위해 구식화되었다.

## 자바 SE 22
2023년 6월 기준으로 자바 22의 사양은 아직 확정되지 않았다. 자바 22는 2024년 3월 출시될 예정이다.

## 구현체
공식적으로 지원되는 Java 플랫폼은 Sun에서 처음 개발되어 현재 Oracle에서 관리하고 있는 Java SE이다. 릴리스는 개방형 개발 모델을 사용하는 무료 오픈 소스 프로젝트인 OpenJDK 프로젝트를 기반으로 한다. 그러나 부분적으로 독점 소프트웨어로서의 Java의 초기 역사로 인해 다른 Java 구현체가 존재한다. 대조적으로 일부 구현체는 표준 구현체보다 약간의 이점을 제공하기 위해 만들어졌으며 종종 일부 학술 또는 기업 후원 연구의 결과이다. 많은 Linux 배포판에는 Red Hat이 시작한 IcedTea 프로젝트를 통한 OpenJDK 빌드가 포함되어 있어 보다 간단한 빌드 및 통합 환경을 제공한다.

Visual J++ 및 Microsoft Java Virtual Machine은 호환되지 않는 구현체로 생성되었다. Sun v. Microsoft 소송 후 Microsoft는 이를 포기하고 .NET 플랫폼 작업을 시작했다. 2021년에 Microsoft는 먼저 Java 11용 호환 "Microsoft Build of OpenJDK" 배포를 시작한 다음 Java 17용 배포를 시작했다. 해당 빌드는 Windows뿐만 아니라 Linux 및 macOS도 지원한다.

Azul의 Zing과 같은 다른 독점 Java 구현체를 사용할 수 있다. Azul은 Zulu라는 이름으로 인증된 오픈 소스 OpenJDK 빌드를 제공한다.

OpenJDK가 출시되기 전에는 Sun의 구현체가 여전히 독점적이었지만 GNU Classpath 프로젝트는 Java 플랫폼의 무료 오픈 소스 구현체를 제공하기 위해 만들어졌다. OpenJDK가 공식 참조 구현체가 된 JDK 7 릴리스 이후 GNU Classpath 프로젝트의 원래 동기는 거의 완전히 사라졌고 마지막 릴리스는 2012년이었다.

Apache Harmony 프로젝트는 OpenJDK 출시 직전에 시작되었다. Sun의 초기 소스 코드 릴리스 이후 Harmony 프로젝트는 OpenJDK용으로 선택된 보호 라이선스와 달리 느슨한 라이선스로 구현체를 제공하기 위해 계속 노력했다. 구글은 나중에 안드로이드를 개발하여 느슨한 라이선스로 출시했다. Android는 Harmony 프로젝트의 일부를 Google 자체의 Dalvik 가상 머신 및 ART로 보완했다. 이후 Apache Harmony는 사용 중지되었으며 Google은 Harmony 구성 요소를 OpenJDK의 동등한 구성 요소로 전환했다.

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

독점 소프트웨어로 시작했지만 지금은 오픈 소스인 몇 가지 다른 구현체가 존재한다. IBM은 처음에 OpenJ9을 독점 J9로 개발했지만 이후 프로젝트 라이선스를 다시 부여하고 이클립스 재단에 기부했다. JRockit은 Oracle에서 인수하여 후속 OpenJDK 버전에 통합된 독점 구현체이다.