자바 버전 역사
자바 언어는 JDK 1.0 이후 여러 차례 변경되었으며, 표준 라이브러리에 수많은 클래스와 패키지가 추가되었다. J2SE 1.4부터 자바 언어의 발전은 자바 커뮤니티 프로세스 (JCP)에 의해 관리되었으며, JCP는 Java Specification Request (JSR)를 사용하여 자바 플랫폼에 추가 및 변경 사항을 제안하고 지정한다. 이 언어는 Java Language Specification (JLS)에 의해 명시되며, JLS의 변경 사항은 JSR 901에 따라 관리된다. 2017년 9월, 자바 플랫폼의 수석 아키텍트인 마크 라인홀트는 당시 2년 주기 대신 "6개월마다 한 번의 기능 릴리스"로 릴리스 주기를 변경할 것을 제안했다.[1][2] 이 제안은 이후 모든 버전에 적용되었으며, 현재도 이 릴리스 일정을 따르고 있다.
언어 변경 외에도 자바 클래스 라이브러리에도 수년에 걸쳐 변경이 이루어졌으며, JDK 1.0의 수백 개의 클래스에서 J2SE 5의 삼천 개 이상의 클래스로 성장했다. 스윙 및 자바2D와 같은 완전히 새로운 API들이 도입되었으며, 원래 JDK 1.0 클래스와 메서드 중 많은 부분이 더 이상 사용되지 않게 되었고, 제거된 API는 거의 없다(최소한 자바 22에서는 스레딩을 위한 API 하나가 제거되었다[3]). 일부 프로그램은 자바 플랫폼의 한 버전에서 이전 버전으로 자바 프로그램을 변환할 수 있도록 한다(예: 자바 5.0을 1.4로 백포트). (참조: 자바 백포팅 도구)
오라클의 자바 SE 지원 로드맵에 따르면,[4] 자바 SE 25 (LTS)가 2025년 9월 현재 최신 버전이며, 버전 21, 17, 11 및 8은 여전히 지원되는 (장기 지원 버전 − LTS) 버전으로, 오라클 고객은 오라클 프리미어 지원을 받게 된다. 오라클은 개발[4] 및 개인용으로 자바 8에 대한 무료 공개 업데이트를 무기한으로 계속 제공한다.[5]
OpenJDK의 경우, 광범위한 커뮤니티의 여러 조직에서 상업적 장기 지원 및 자유 소프트웨어 업데이트를 모두 제공한다.[6]
자바 25는 2025년 9월 16일에 출시되었다.[7]
릴리스 표
[편집]| 버전 | 유형 | 클래스 파일 형식 버전[8] | 출시일 | 공개 업데이트 종료 (무료) | 확장 지원 종료 (유료) |
|---|---|---|---|---|---|
| JDK 1.0 | 45[9] | 1996년 1월 23일 | 1996년 5월 | 빈칸 | |
| JDK 1.1 | 45 | 1997년 2월 18일 | 2002년 10월 | 빈칸 | |
| J2SE 1.2 | 46 | 1998년 12월 4일 | 2003년 11월 | 빈칸 | |
| J2SE 1.3 | 47 | 2000년 5월 8일 | 2006년 3월 | 빈칸 | |
| J2SE 1.4 | 48 | 2002년 2월 13일 | 2008년 10월 | 빈칸 | |
| J2SE 5.0 (1.5) | 49 | 2004년 9월 30일 | 2009년 10월 | 빈칸 | |
| Java SE 6 (1.6) | 50 | 2006년 12월 11일 | 오라클 2013년 4월 아줄 2018년 12월[10] |
레드햇 2016년 12월[11] 오라클 2018년 10월[12] 아줄 2027년 12월[10] 벨소프트 리베리카 2028년 3월[13] | |
| Java SE 7 (1.7) | 51 | 2011년 7월 28일 | 오라클 2015년 7월 아줄 2022년 7월[10] IBM 자바 SDK 2022년 9월[14] |
레드햇 2020년 6월[11] 오라클 2022년 7월[15] 아줄 2027년 12월[10] 벨소프트 리베리카 2028년 3월[13] | |
| Java SE 8 (1.8) | LTS | 52 | 2014년 3월 18일 | 오라클 2019년 4월 IBM 자바 SDK 2025년 4월[14] 레드햇 2026년 11월[11] 아줄 2026년 11월[10] IBM 세메루 런타임즈 2026년 11월[16] 이클립스 테무린 2030년 12월[17] 아마존 코레토 2030년 12월[18] |
오라클 2030년 12월[4] 아줄 2030년 12월[10] 벨소프트 리베리카 2031년 3월[13] |
| Java SE 9 (1.9) | 53 | 2017년 9월 21일 | 2018년 3월 | 빈칸 | |
| Java SE 10 (1.10) | 54 | 2018년 3월 20일 | 2018년 9월 | 빈칸 | |
| Java SE 11 | LTS | 55 | 2018년 9월 25일 | 오라클 2019년 4월 마이크로소프트 빌드 오브 OpenJDK 2027년 9월[19] 레드햇 2024년 10월[11] 이클립스 테무린 2027년 10월[17] IBM 세메루 런타임즈 2027년 10월[16] 아마존 코레토 2032년 1월[18] 아줄 2032년 1월[10] |
아줄 2032년 1월[10] 벨소프트 리베리카 2032년 3월[13] 레드햇 2027년 10월[11] 오라클 2032년 1월[4] |
| Java SE 12 | 56 | 2019년 3월 19일 | 2019년 9월 | 빈칸 | |
| Java SE 13 | 57 | 2019년 9월 17일 | 2020년 3월 | 빈칸 | |
| Java SE 14 | 58 | 2020년 3월 17일 | 2020년 9월 | 빈칸 | |
| Java SE 15 | 59 | 2020년 9월 16일 | 2021년 3월 | 빈칸 | |
| Java SE 16 | 60 | 2021년 3월 16일 | 2021년 9월 | 빈칸 | |
| Java SE 17 | LTS | 61 | 2021년 9월 14일 | 오라클 2024년 9월[4] 마이크로소프트 빌드 오브 OpenJDK 2027년 9월[19] 이클립스 테무린 2027년 10월[17] 레드햇 2027년 10월[11] IBM 세메루 런타임즈 2027년 10월[16] 아마존 코레토 2029년 10월[18] 아줄 2029년 9월[10] |
오라클 2029년 9월[4] 벨소프트 리베리카 2030년 3월[13] |
| Java SE 18 | 62 | 2022년 3월 22일 | 2022년 9월 | 빈칸 | |
| Java SE 19 | 63 | 2022년 9월 20일 | 2023년 3월 | 빈칸 | |
| Java SE 20 | 64 | 2023년 3월 21일 | 2023년 9월 | 빈칸 | |
| Java SE 21 | LTS | 65 | 2023년 9월 19일 | 오라클 2028년 9월[4] 마이크로소프트 빌드 오브 OpenJDK 2028년 9월[19] 레드햇 2029년 12월[11] 이클립스 테무린 2029년 12월[17] IBM 세메루 런타임즈 2029년 12월[16] 아마존 코레토 2030년 10월[18] 아줄 2031년 9월[10] |
오라클 2031년 9월[4] 벨소프트 리베리카 2032년 3월[13] |
| Java SE 22 | 66 | 2024년 3월 19일 | 2024년 9월 | 빈칸 | |
| Java SE 23 | 67 | 2024년 9월 17일 | 오라클 2025년 3월 아줄 2025년 3월[10] IBM 세메루 런타임즈 2025년 3월[16] |
빈칸 | |
| Java SE 24 | 68 | 2025년 3월 18일 | 2025년 9월 | 빈칸 | |
| Java SE 25 | LTS | 69 | 2025년 9월 16일 | 오라클 2030년 9월[4] 이클립스 테무린 2031년 9월[17] 아줄 2033년 9월[10] 아마존 코레토 2032년 7월[18] |
오라클 2033년 9월[4] 벨소프트 리베리카 2034년 3월[13] |
범례: 오래된 버전 오래된 버전, 지원 중 최신 버전 배포 예정 | |||||
JDK 1.0
[편집]| 출시됨 | 1996년 1월 23일 |
|---|
첫 번째 버전은 1996년 1월 23일에 출시되었다.[20][21] 첫 번째 안정 버전인 JDK 1.0.2는 자바 1이라고 불린다.[21]
포함된 내용은 다음과 같다.
- 코어 언어 기능 (java.lang의 기본 자바 자료형, java.util의 유틸리티 클래스)
- 그래픽 지원 (AWT 프레임워크)
- 자바 애플릿 생성 지원
- I/O 및 네트워킹 라이브러리
JDK 1.1
[편집]| 출시됨 | 1997년 2월 19일 |
|---|
1997년 2월 19일 릴리스의 주요 추가 사항은 다음과 같다.[22]
- 애브스트랙트 윈도 툴킷 (AWT) 이벤트 모델의 광범위한 재구성
- 언어에 내부 클래스 추가
- 자바빈즈
- 자바 데이터베이스 연결 (JDBC) 및 SQL 지원
- 자바 원격 메서드 호출 (RMI) 및 직렬화
- 리플렉션 (인트로스펙션만 지원했으며 런타임에 수정은 불가능했다.) (J2SE 1.2에서 AccessibleObject 클래스와 Field 클래스와 같은 서브클래스를 도입하여 객체를 리플렉션으로 수정하는 기능이 추가되었다.)
- 저스트 인 타임 컴파일 (JIT), 마이크로소프트 윈도우 플랫폼용으로 시만텍이 자바소프트를 위해 제작
- 탈리전트에서 시작된 국제화 및 유니코드 지원[23]
J2SE 1.2
[편집]| 코드명 | Playground |
|---|---|
| 출시됨 | 1998년 12월 8일 |
1998년 12월 8일 릴리스 및 J2SE 5.0까지의 후속 릴리스는 소급적으로 자바 2로 리브랜딩되었으며, 기본 플랫폼을 J2EE (자바 2 플랫폼, 엔터프라이즈 에디션) 및 J2ME (자바 2 플랫폼, 마이크로 에디션)와 구별하기 위해 버전 이름 "J2SE" (자바 2 플랫폼, 스탠더드 에디션)가 JDK를 대체했다. 이는 59개의 패키지에 1520개의 클래스로 자바 플랫폼 크기를 3배로 늘린 매우 중요한 자바 릴리스였다. 주요 추가 사항은 다음과 같다.[24]
- `strictfp` 키워드 (JVM 17에 의해 더 이상 사용되지 않는 키워드이므로 새 코드에서는 사용해서는 안 된다)
- 스윙 그래픽 API가 코어 클래스에 통합되었다.
- 선의 JVM은 처음으로 JIT 컴파일러를 장착했다.
- 자바 플러그인
- CORBA 상호 운용성을 위한 IDL 구현인 자바 IDL
- 컬렉션 프레임워크
J2SE 1.3
[편집]| 코드명 | Kestrel |
|---|---|
| 출시됨 | 2000년 5월 8일 |
2000년 5월 8일 릴리스에서 가장 주목할 만한 변경 사항은 다음과 같다.[25][26]
- 핫스팟 JVM 포함 (핫스팟 JVM은 J2SE 1.2 JVM용으로 1999년 4월에 처음 출시되었다)
- RMI는 CORBA와의 선택적 호환성을 지원하도록 수정되었다.
- 자바 네이밍 및 디렉터리 인터페이스 (JNDI)가 코어 라이브러리에 포함되었다 (이전에는 확장으로 사용 가능).
- 자바 플랫폼 디버거 아키텍처 (JPDA)
- 자바사운드
- 합성 프록시 클래스
자바 1.3은 마이크로소프트 윈도우 95를 공식적으로 지원하는 마지막 자바 릴리스이다.[27]
J2SE 1.4
[편집]| 코드명 | Merlin |
|---|---|
| 출시됨 | 2002년 2월 6일 |
| 지원 종료됨 | |
| 공개 | 2008년 10월 |
| 유료 | 2013년 2월 |
2002년 2월 6일 릴리스는 자바 커뮤니티 프로세스의 JSR 59에 따라 개발된 첫 번째 자바 플랫폼 릴리스이다. 주요 변경 사항은 다음과 같다.[28][29]
- 언어 변경
- `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월에 종료되었다.[30]
Java SE 5
[편집]| 코드명 | Tiger |
|---|---|
| 출시됨 | 2004년 9월 30일 |
| 지원 종료됨 | |
| 공개 | 2009년 11월 |
| 유료 | 2015년 4월 |
2004년 9월 30일 릴리스는 원래 1.5로 번호가 매겨졌으며, 이는 여전히 내부 버전 번호로 사용된다. 이 번호는 "J2SE의 성숙도, 안정성, 확장성 및 보안 수준을 더 잘 반영하기 위해" 변경되었다.[31] 이 버전은 JSR 176에 따라 개발되었다.
자바 SE 5는 2008년 4월 8일에 공개 업데이트 기간이 시작되었으며, 2009년 11월 3일부로 더 이상 공개 업데이트를 제공하지 않는다. 유료 오라클 고객에게는 2015년 5월까지 업데이트가 제공되었다.[4]
타이거는 몇 가지 중요한 새로운 언어 기능을 추가했다.[32][33]
- 제네릭: 컬렉션에 대해 컴파일 시간 (정적) 자료형 안전성을 제공하고 대부분의 형 변환이 필요 없게 한다 (JSR 14에 명시됨).
- 메타데이터: 애너테이션이라고도 불린다. 클래스 및 메서드와 같은 언어 구성에 추가 데이터를 태그할 수 있게 하며, 이 데이터는 메타데이터 인식 유틸리티에 의해 처리될 수 있다 (JSR 175에 명시됨).
- 오토박싱/언박싱: `int`와 같은 기본 자료형과
Integer와 같은 기본 래퍼 클래스 간의 자동 변환 (JSR 201에 명시됨). - 열거형: `enum` 키워드는 자료형 안전한, 정렬된 값 목록(예: `Day.MONDAY`, `Day.TUESDAY` 등)을 생성한다. 이전에는 자료형 안전하지 않은 상수 정수나 수동으로 구성된 클래스(자료형 안전 열거형 패턴)로만 달성할 수 있었다 (JSR 201에 명시됨).
- 가변인자: 메서드의 마지막 매개변수는 이제 자료형 이름 뒤에 세 개의 점(예: `void drawtext(String... lines)`)을 사용하여 선언할 수 있다. 호출 코드에서는 해당 자료형의 매개변수를 원하는 만큼 사용할 수 있으며, 이들은 배열에 담겨 메서드로 전달되거나, 또는 호출 코드에서 해당 자료형의 배열을 전달할 수 있다.
- 향상된 `for each` 루프: `for` 루프 구문은 배열 또는 표준
Collection클래스와 같은 모든Iterable의 각 멤버를 반복하는 특수 구문으로 확장된다 (JSR 201에 명시됨). - 다중 스레드 자바 프로그램의 개선된 실행 시맨틱; 새로운 자바 메모리 모델은 이전 사양의 복잡성, 효율성 및 성능 문제를 해결한다.[34]
- 정적 임포트
표준 라이브러리에도 다음과 같은 개선 사항이 있었다.
- RMI 객체에 대한 자동 스텁 생성
- 스윙: 스킨 변경 가능한 새로운 룩 앤드 필, 신스라고 불린다.
- 패키지 `java.util.concurrent`의 동시성 유틸리티[35]
- 다양한 입력 스트림 및 버퍼에서 데이터를 파싱하기 위한 스캐너 클래스
자바 5는 마이크로소프트 윈도우 98 및 윈도우 ME를 공식적으로 지원하는 마지막 자바 릴리스이며,[36] 윈도우 비스타는 자바 SE 5가 2009년 10월에 지원 종료되기 전에 지원되었던 최신 윈도우 버전이다.[30]
자바 5 업데이트 5 (1.5.0_05)는 윈도우 95 (인터넷 익스플로러 5.5 설치된) 및 윈도우 NT 4.0에서 작동하는 마지막 자바 릴리스이다.[37]
자바 5는 애플 맥 OS X 10.4 (타이거)에서 처음 사용할 수 있었으며[38] 애플 맥 OS X 10.5 (레오파드)에 기본으로 설치된 자바 버전이었다.
자바 1.5에 대한 공개 지원 및 보안 업데이트는 2009년 11월에 종료되었다. 오라클 고객을 위한 유료 보안 업데이트는 2015년 4월에 종료되었다.
버전 변경
[편집]이 버전은 자바 언어에 대한 새로운 버전 관리 시스템을 도입했지만, 개발자 라이브러리에는 이전 버전 관리 시스템이 계속 사용되었다.
Java 2 Platform Standard Edition의 이 릴리스를 식별하는 데 "1.5.0" 및 "5.0" 버전 번호가 모두 사용된다. "5.0" 버전은 제품 버전이며, "1.5.0"은 개발자 버전이다. "5.0"은 J2SE의 성숙도, 안정성, 확장성 및 보안 수준을 더 잘 반영하는 데 사용된다.
— "Version 1.5.0 or 5.0?", Java release notes[39]
이러한 대응은 이후 릴리스(Java 6 = JDK 1.6, Java 7 = JDK 1.7 등)를 통해 계속되었다.
Java SE 6
[편집]| 코드명 | Mustang |
|---|---|
| 출시됨 | 2006년 11월 11일 |
| 지원 종료됨 | |
| 공개 | 2013년 2월 |
2006년 12월 11일에 릴리스된 버전부터 선은 "J2SE"라는 이름을 자바 SE로 바꾸고 버전 번호에서 ".0"을 삭제했다.[40] 개발자를 위한 내부 번호는 1.6.0으로 유지된다.[41]
이 버전은 JSR 270에 따라 개발되었다.
개발 단계에서 개선 사항 및 버그 수정이 포함된 새로운 빌드가 약 일주일마다 릴리스되었다. 베타 버전은 2006년 2월과 6월에 릴리스되었으며, 2006년 12월 11일에 최종 릴리스가 이루어졌다.
이 버전에 포함된 주요 변경 사항은 다음과 같다.[42][43]
- 이전 Win9x 버전 지원 중단; 비공식적으로 자바 6 업데이트 7이 이러한 윈도우 버전에서 작동하는 것으로 나타난 마지막 자바 릴리스였다. 이는 업데이트 10의 주요 변경 사항 때문으로 추정된다.
- 스크립팅 언어 지원 (JSR 223): 스크립팅 언어와의 긴밀한 통합을 위한 일반 API 및 모질라 자바스크립트 라이노 통합이 내장되어 있다.
- 코어 플랫폼,[44][45] 및 스윙의 극적인 성능 향상.
- JAX-WS (JSR 224)를 통한 웹 서비스 지원 개선.
- 자바 데이터베이스 연결 4.0 지원 (JSR 221).
- 자바 컴파일러 API (JSR 199): 자바 프로그램이 자바 컴파일러를 프로그래밍 방식으로 선택하고 호출할 수 있도록 하는 API.
- JAXB를 버전 2.0으로 업그레이드: StAX 파서 통합 포함.
- 플러그형 애너테이션 지원 (JSR 269).[46]
- API에 스윙워커 통합, 테이블 정렬 및 필터링, 진정한 스윙 더블 버퍼링 (회색 영역 효과 제거)과 같은 많은 GUI 개선 사항.
- JVM 개선 사항에는 다음이 포함된다: 동기화 및 컴파일러 성능 최적화, 새로운 알고리즘 및 기존 쓰레기 수집 알고리즘 업그레이드, 애플리케이션 시작 성능.
자바 6는 64비트 (코어 2 듀오 이상) 프로세서 머신에서 실행되는 Mac OS X 10.5 (레오파드)에 설치할 수 있다.[47] 자바 6는 Mac OS X 10.6 (스노우 레오파드)를 실행하는 32비트 및 64비트 머신 모두에서 지원된다.
자바 6은 2013년 2월에 지원 수명이 종료되었으며, 이때 모든 공개 업데이트(보안 업데이트 포함)가 중단될 예정이었다.[48][49] 오라클은 2013년 3월과 4월에 자바 6에 대한 두 가지 추가 업데이트를 릴리스했으며, 이는 일부 보안 취약점을 패치했다.[50][51]
자바 6 업데이트
[편집]자바 6 출시 이후, 선과 나중에 오라클은 여러 업데이트를 출시했는데, 이는 공개 API를 변경하지 않으면서 최종 사용자 유용성을 향상시키거나 버그를 수정했다.[52]
| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| 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 SE 6 Update 11[55] | 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)라는 낮은 일시 중지 쓰레기 수집기 지원이 포함되어 있다.[56][57]
`–XX:+DoEscapeAnalysis` 옵션은 HotSpot JIT 컴파일러에게 이스케이프 분석을 사용하여 지역 객체가 힙 대신 스택에 할당될 수 있는지 여부를 결정하도록 지시한다. 일부 개발자들은 이 릴리스에서 디버거가 무작위로 중단점을 놓치는 문제를 발견했다.[58] 선은 이 문제를 추적하는 해당 버그를 가지고 있다. 해결책은 클라이언트 및 서버 VM에 적용된다.[59] `-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개의 보안 수정; RFC 5746 지원 |
| 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개의 새로운 보안 수정;[60] Windows Vista SP1과 호환되는 마지막 버전 |
| Java SE 6 Update 27 | 2011-08-16 | 보안 수정 없음; 파이어폭스 5 인증 |
| Java SE 6 Update 29 | 2011-10-18 | 20개의 보안 수정, 다양한 버그 수정[61] |
| Java SE 6 Update 30 | 2011-12-12 | 보안 수정 없음; 업데이트 29의 SSL 회귀 수정; 레드햇 엔터프라이즈 리눅스 6 지원 |
| Java SE 6 Update 31 | 2012-02-14 | 14개의 보안 수정 및 1개의 버그 수정; 윈도우 2000에서 안정적으로 작동하는 마지막 버전[62] |
| 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 | 심층 보안 수정 포함[63] |
| 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개의 보안 수정;[64] 기타 변경 사항; 최종 공개 업데이트.[65] |
| Java SE 6 Update 51 | 2013-06-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 OS X Snow Leopard, Lion & Mountain Lion용 Apple Update를 통해서만 사용 가능; 최대 40개의 보안 수정[66] |
| Java SE 6 Update 65 | 2013-10-15 | 공개적으로 사용 불가, Java SE Support 프로그램 및 OS X Snow Leopard, Lion & Mountain Lion용 Apple Update를 통해서만 사용 가능; 최소 11개의 중요 보안 수정[67] |
| 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개의 보안 수정[68] |
| Java SE 6 Update 81 | 2014-07-15 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정[69] |
| Java SE 6 Update 85 | 2014-10-16 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 보안 수정[70] |
| Java SE 6 Update 91 | 2015-01-21 | Linux x64 및 Windows i586 버전은 Java SE 6 참조 구현으로 제공된다.[71] 다른 버전은 Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정[72] |
| Java SE 6 Update 95 | 2015-04-14 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 14개의 보안 수정[73] |
| Java SE 6 Update 101 | 2015-07-15 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 보안 수정[74] IE 10 및 11에 대한 인증이 1.6.0_101에 도입되었다. |
| Java SE 6 Update 105 | 2015-10-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 17개의 보안 수정[75] |
| Java SE 6 Update 111 | 2016-01-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정[76] |
| Java SE 6 Update 113 | 2016-02-05 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정[77] |
| Java SE 6 Update 115 | 2016-04-21 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정[78] |
| Java SE 6 Update 121 | 2016-07-19 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정[79] |
| Java SE 6 Update 131 | 2016-10-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정[80] |
| Java SE 6 Update 141 | 2017-01-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 17개의 보안 수정[81] |
| Java SE 6 Update 151 | 2017-04-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 10개의 보안 수정[82] |
| Java SE 6 Update 161 | 2017-07-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정[83] |
| Java SE 6 Update 171 | 2017-10-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 7개의 보안 수정[84] |
| Java SE 6 Update 181 | 2018-01-16 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정[85] |
| Java SE 6 Update 191 | 2018-04-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 7개의 보안 수정[86] |
| Java SE 6 Update 201 | 2018-07-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 3개의 보안 수정[87] |
| Java SE 6 Update 211 | 2018-10-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정[88] |
Java SE 7
[편집]| 코드명 | Dolphin[89] |
|---|---|
| 출시됨 | 2011년 7월 28일 |
| 지원 종료됨 | |
| 공개 | 2015년 4월 |
| 유료 | 2022년 6월 |
자바 7은 2011년 7월 7일에 출시된[90] 주요 업데이트이며 2011년 7월 28일에 개발자에게 제공되었다.[91] 개발 기간은 13개의 마일스톤으로 구성되었으며, 2011년 6월 6일에 13개의 마일스톤 중 마지막이 완료되었다.[91][92] 평균적으로 마일스톤당 8개의 빌드 (일반적으로 개선 사항 및 버그 수정 포함)가 릴리스되었다. OpenJDK 7 프로젝트의 기능 목록에는 많은 변경 사항이 나열되어 있다.
자바 7의 추가 사항은 다음과 같다.[93]
- 새로운 `invokedynamic` 바이트코드와 JSR-292에 따른 동적 프로그래밍 언어를 위한 JVM 지원,[94] 현재 다국어 가상 머신에서 진행 중인 프로토타이핑 작업에 따른 것이다.
- 압축된 64비트 포인터[95] (Java 6에서 `-XX:+UseCompressedOops`와 함께 사용 가능)[96]
- Project Coin 언어 기능:[97]
- JSR 166에 따른 동시성 유틸리티[105]
- 여러 파일 시스템, 파일 메타데이터 및 심볼릭 링크 지원을 추가하는 새로운 파일 I/O 라이브러리 (JSR 203에 정의됨). 새로운 패키지는 `java.nio.file`, `java.nio.file.attribute` 및 `java.nio.file.spi`[106][107]
- 컬렉션 및 객체 배열을 정렬하기 위해 합병 정렬 대신 팀소트 사용
- 타원 곡선 암호 알고리즘에 대한 라이브러리 수준 지원
- 최신 GPU의 특정 기능을 향상시키는 Java 2D용 XRender 파이프라인
- 버전 6u10에서 지원되지 않는 API로 처음 구현된 그래픽 기능에 대한 새로운 플랫폼 API[108]
- SCTP 및 소켓 직접 프로토콜을 포함한 새로운 네트워크 프로토콜에 대한 향상된 라이브러리 수준 지원
- 업스트림 XML 및 유니코드 업데이트
- 자바 배포 규칙 세트[109]
람다 (람다 함수의 자바 구현), 직소 (모듈의 자바 구현), 그리고 코인 일부는 자바 7에서 제외되어 자바 8의 일부로 릴리스되었다 (직소는 자바 9에서 릴리스되었다).[110][111]
자바 7은 2012년 4월부터 자바 8이 출시될 때까지 java.com에서 다운로드되는 기본 버전이었다.[112]
자바 7 업데이트
[편집]오라클은 2015년 4월에 제품의 공개 가용성이 종료될 때까지 분기별로 자바 7 제품군에 대한 공개 업데이트를 발행했다.[113][114] 2022년 7월까지 계속된 JDK 7에 대한 추가 업데이트는 지원 계약이 있는 고객에게만 제공된다.[115]
| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 7[116] | 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 3 | 2012-02-14 | 14개의 보안 수정[117] |
| 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개의 보안 수정[118] |
| Java SE 7 Update 6 | 2012-08-14 | 자바FX 및 자바 접근 브리지 (Java Access Bridge)가 Java SE JDK 및 JRE 설치에 포함됨, 터치 지원 모니터 및 터치 패드용 자바FX 지원, 리눅스용 자바FX 지원, ARM용 리눅스용 JDK[119] |
| Java SE 7 Update 7 | 2012-08-30 | 4개의 보안 수정[63] |
| Java SE 7 Update 9 | 2012-10-16 | 30개의 보안 취약점 수정[120] |
| Java SE 7 Update 10 | 2012-12-11 | 새로운 보안 기능, 브라우저에서 자바 애플리케이션 실행을 비활성화하는 기능 및 JRE가 안전하지 않을 때 경고하는 새로운 대화 상자, 버그 수정 |
| Java SE 7 Update 11 | 2013-01-13 | 올슨 데이터 2012i; 자바FX 독립 실행형 버전이 설치된 시스템에서 플러그인 등록 문제에 대한 버그 수정, CVE-2013-0422에 대한 보안 수정;[121] 자바 애플릿 및 웹 시작 애플리케이션의 기본 보안 수준이 "중간"에서 "높음"으로 상향 조정됨 |
| Java SE 7 Update 13[122] | 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개의 보안 수정[66][123]을 포함한 여러 변경 사항 |
| Java SE 7 Update 40 | 2013-09-10 | 621개의 버그 수정,[124] 새로운 보안 기능, 하드플로트 ARM, 자바 미션 컨트롤 5.2 및 레티나 디스플레이 지원[125] |
| Java SE 7 Update 45 | 2013-10-15 | 51개의 보안 수정;[67] 자바 애플리케이션의 무단 재배포 방지; 보안 프롬프트 복원; JAXP 변경; TimeZone.setDefault 변경 |
| Java SE 7 Update 51 | 2014-01-14 | 36개의 보안 수정; 매니페스트 없는 JAVA 애플릿 차단 (원격 콘솔 - Java 애플릿 - IBM IMM 카드, HP iLO 카드 등) 경고 대화 상자에 "다음 버전에서 차단됩니다" 문구가 있더라도,[126][127] 17개의 버그 수정 |
| Java SE 7 Update 55 | 2014-04-15 | 37개의 보안 수정,[68] 19개의 버그 수정[128] |
| Java SE 7 Update 60 | 2014-05-28 | 자바 미션 컨트롤 5.3,[129] 130개의 버그 수정[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과 동일한 릴리스 날짜,[131] 36개의 버그 수정 |
| Java SE 7 Update 75 | 2015-01-20 | 12개의 버그 수정, SSLv3 기본적으로 비활성화됨 |
| Java SE 7 Update 76 | 2015-01-20 | Java SE 7의 해당 패치 세트 업데이트(PSU)로서 업데이트 75와 동일한 릴리스 날짜,[131] 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개의 보안 수정[132] |
| Java SE 7 Update 91 | 2015-10-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 20개의 보안 수정[133] |
| Java SE 7 Update 95 | 2016-01-19 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정[134] |
| Java SE 7 Update 97 | 2016-02-05 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정[77] |
| Java SE 7 Update 99 | 2016-03-23 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정[135] |
| Java SE 7 Update 101 | 2016-04-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 22개의 보안 수정[136] |
| Java SE 7 Update 111 | 2016-07-19 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 36개의 보안 수정[79] |
| Java SE 7 Update 121 | 2016-10-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 32개의 보안 수정[80] |
| Java SE 7 Update 131 | 2017-01-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 34개의 보안 수정[81] |
| Java SE 7 Update 141 | 2017-04-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정[137] |
| Java SE 7 Update 151 | 2017-07-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 4개의 보안 수정[83] |
| Java SE 7 Update 161 | 2017-10-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 4개의 보안 수정[84] |
| Java SE 7 Update 171 | 2018-01-16 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 51개의 보안 수정[85] |
| Java SE 7 Update 181 | 2018-04-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정[86] |
| Java SE 7 Update 191 | 2018-07-17 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 9개의 보안 수정[87] |
| Java SE 7 Update 201 | 2018-10-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 13개의 보안 수정[88] |
| Java SE 7 Update 211 | 2019-01-15 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정[138] |
| Java SE 7 Update 221 | 2019-04-16 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 5개의 보안 수정[139] |
| Java SE 7 Update 231 | 2019-07-16 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 6개의 보안 수정[140] |
| Java SE 7 Update 241 | 2019-10-15 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정[141] |
| Java SE 7 Update 251 | 2020-01-14 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 12개의 보안 수정[142] |
| Java SE 7 Update 261 | 2020-04-14 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 15개의 보안 수정[143] |
| Java SE 7 Update 271 | 2020-07-14 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정[144] |
| Java SE 7 Update 281 | 2020-10-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 8개의 보안 수정[145] |
| Java SE 7 Update 291 | 2021-01-19 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 1개의 보안 수정[146] |
| Java SE 7 Update 301 | 2021-04-12 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 11개의 보안 수정[147] |
| Java SE 7 Update 311 | 2021-07-20 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 24개의 버그 수정[148] |
| Java SE 7 Update 321 | 2021-10-19 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 16개의 버그 수정[149] |
| Java SE 7 Update 331 | 2022-01-18 | 공개적으로 사용 불가, Java SE Support 프로그램 및 Solaris 10의 권장 패치셋 클러스터를 통해서만 사용 가능; 18개의 버그 수정[150] |
Java SE 8 (LTS)
[편집]| LTS 버전 | |
| 코드명 | Spider |
|---|---|
| 출시됨 | 2014년 3월 18일 |
| JEP 수 | 8 |
자바 8은 2014년 3월 18일에 출시되었으며,[151][152] 원래 자바 7에서 계획되었지만 나중에 연기된 일부 기능을 포함했다.[153]
기능 작업은 JDK 개선 제안 (JEP) 측면에서 구성되었다.[154]
- JSR 335, JEP 126: 프로젝트 람다[155] 및 기본 메서드 (가상 확장 메서드)[156][157][158]에 따른 람다 표현식 (공식적으로 람다 표현식; 비공식적으로 클로저)에 대한 언어 수준 지원. 이는 기존 구현을 깨뜨리지 않고 인터페이스에 메서드를 추가하는 데 사용될 수 있다. 람다 표현식 지원 여부에 대한 자바 커뮤니티 내에서 지속적인 논쟁이 있었다.[159][160] 선은 나중에 람다 표현식이 자바에 포함될 것이라고 선언하고 기능 개선을 위해 커뮤니티의 의견을 구했다.[161] 람다 표현식 지원은 또한 함수형 스타일의 요소 스트림 작업을 가능하게 하며, 컬렉션에 대한 맵리듀스에서 영감을 받은 변환과 같은 기능을 포함한다. 기본 메서드는 API 작성자가 인터페이스에 새 메서드를 추가할 때 기존 코드를 깨뜨리지 않고 사용할 수 있다. 비록 주된 의도는 아니었지만,[156] 기본 메서드는 동작의 다중 상속에도 사용될 수 있다 (상태는 아님).
- JEP 174: 프로젝트 나쉬혼, 애플리케이션 내부에 포함된 자바스크립트 코드를 실행할 수 있는 자바스크립트 런타임
- JEP 104: 자바 자료형에 애너테이션
- 부호 없는 정수 연산[162]
- JEP 120: 반복 애너테이션
- JEP 150: 날짜 및 시간 API
- JEP 178: 정적으로 연결된 JNI 라이브러리
- JEP 153: 자바FX 애플리케이션 실행 (자바FX 애플리케이션 JAR 직접 실행)
- JEP 122: 영구 세대 제거
자바 8은 윈도우 XP에서 지원되지 않지만[163] JDK 8 업데이트 25부터는 윈도우 XP에서 설치 및 실행이 가능하다.[164] 이전 버전의 JDK 8은 아카이브된 ZIP 형식 파일을 다운로드하여 실행 파일을 압축 해제하는 방식으로 XP에서 실행할 수 있었다. XP에서 실행할 수 있는 자바 8의 마지막 버전은 업데이트 251이다.
2014년 10월부터 자바 8은 공식 웹사이트에서 다운로드되는 기본 버전이 되었다 (그리고 자바 9를 대체하여 다시 다운로드).[165] "오라클은 개인 사용자를 위해 자바 SE 8의 공개 업데이트 및 자동 업데이트를 무기한으로 계속 제공할 것이다."[166]
자바 8 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 8 | 2014-03-18 | 초기 릴리스 |
| Java SE 8 Update 5[167] | 2014-04-15 | `Caller-Allowable-Codebase` 속성에서 "`*`" 사용; 11개의 버그 수정 |
| Java SE 8 Update 11[168] | 2014-07-15 | Java Dependency Analysis Tool (jdeps); 후원사를 비활성화하는 Java Control Panel 옵션; JAR 파일 속성 – Entry-Point; JAXP 처리 제한 속성 – maxElementDepth; 18개의 보안 버그 수정,[169] 15개의 버그 수정 |
| Java SE 8 Update 20[170] | 2014-08-19 | 669개의 버그 수정,[171] JMC 5.4, 문자열 중복 제거 (기본적으로 비활성화됨) |
| Java SE 8 Update 25[172] | 2014-10-14 | 10개의 버그 수정 |
| Java SE 8 Update 31[173] | 2015-01-19 | 26개의 버그 수정; SSLv3 (기본적으로 비활성화됨) |
| Java SE 8 Update 40[174] | 2015-03-03 | 645개의 버그 수정,[175] 시스템 메모리 가용성을 나타내는 데 도움이 되는 "메모리 압력" 개념 추가 (낮은 압력 = 높은 메모리, 높은 압력 = 낮은 메모리) |
| Java SE 8 Update 45[176] | 2015-04-14 | 13개의 버그 수정 |
| Java SE 8 Update 51[177] | 2015-07-14 | Windows 플랫폼에서 네이티브 샌드박스 지원 추가 (기본적으로 비활성화됨); 또한 25개의 보안 수정, 14개의 버그 수정 |
| Java SE 8 Update 60[178] | 2015-08-18 | 480개의 버그 수정[179] |
| Java SE 8 Update 65[180] | 2015-10-20 | 25개의 보안 수정, 3개의 버그 수정 |
| Java SE 8 Update 66[181] | 2015-11-16 | 15개의 버그 수정 |
| Java SE 8 Update 71[182] | 2016-01-19 | 8개의 보안 수정, 5개의 버그 수정[183] |
| Java SE 8 Update 72[184] | 2016-01-19 | 8개의 보안 수정, 5개의 버그 수정, 여러 개선 사항 |
| Java SE 8 Update 73[185] | 2016-02-03 | 1개의 보안 수정 |
| Java SE 8 Update 74[186] | 2016-02-03 | 1개의 보안 수정 |
| Java SE 8 Update 77[187] | 2016-03-23 | 1개의 보안 수정 |
| Java SE 8 Update 91[188] | 2016-04-19 | 9개의 보안 수정, 4개의 버그 수정 및 개선 사항 |
| Java SE 8 Update 92[189] | 2016-04-19 | 8u91의 보안 및 버그 수정과 76개의 추가 버그 수정; `ExitOnOutOfMemoryError` 및 `CrashOnOutOfMemoryError` 플래그가 도입됨 |
| Java SE 8 Update 101[190] | 2016-07-19 | 8u92의 보안 및 버그 수정과 9개의 추가 버그 수정 |
| Java SE 8 Update 102[191] | 2016-07-19 | 8u101의 보안 및 버그 수정과 118개의 추가 버그 수정 |
| Java SE 8 Update 111[192] | 2016-10-18 | 7개의 보안 수정 및 9개의 버그 수정 |
| Java SE 8 Update 112[193] | 2016-10-18 | 8u111에 비해 추가 기능 및 139개의 버그 수정 |
| Java SE 8 Update 121[194] | 2017-01-17 | 8u112에 비해 3개의 추가 기능, 5개의 변경 사항 및 11개의 버그 수정. |
| Java SE 8 Update 131[195] | 2017-04-18 | 4개의 변경 사항 및 42개의 버그 수정 (2개는 주목할 만함). |
| Java SE 8 Update 141[196] | 2017-07-18 | 추가 기능, 3개의 변경 사항 및 12개의 버그 수정. |
| Java SE 8 Update 144[197] | 2017-07-26 | 8u141의 32개 보안 수정 및 버그 수정. |
| Java SE 8 Update 151[198] | 2017-10-17 | 22개 보안 수정, 2개 참고 사항, 1개 인증서 취소, 1개 새 기능, 6개 변경 사항, 8u144의 24개 버그 수정. |
| Java SE 8 Update 152[199] | 2017-10-17 | 보안 수정, 1개의 새 기능, 1개의 변경 사항, 8u151의 238개 버그 수정 (1개는 주목할 만함). |
| Java SE 8 Update 161[200] | 2018-01-16 | 21개 보안 수정, 3개 새 기능, 9개 변경 사항, 8u152의 1개 버그 수정. |
| Java SE 8 Update 162[201] | 2018-01-16 | 보안 수정, 63개의 버그 수정. |
| Java SE 8 Update 171[202] | 2018-04-17 | 보안 수정, 버그 수정. |
| Java SE 8 Update 172[203] | 2018-04-17 | 보안 수정, 버그 수정. |
| Java SE 8 Update 181[204] | 2018-07-17 | 보안 수정, 버그 수정. |
| Java SE 8 Update 191[205] | 2018-10-16 | 새로운 기능, 변경 사항, 버그 수정, 보안 수정. |
| Java SE 8 Update 192[206] | 2018-10-16 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 201[207] | 2019-01-15 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 202[208] | 2019-01-15 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 211[209] | 2019-04-16 | 새로운 기능, 변경 사항, 버그 수정. 라이선스 업데이트. |
| Java SE 8 Update 212[210] | 2019-04-16 | 새로운 기능 (예: 비트코인 및 "새 일본 연호 레이와"[210]를 포함한 5가지 통화 기호), 변경 사항, 버그 수정. 라이선스 업데이트. |
| Java SE 8 Update 221[211] | 2019-07-16 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 231[212] | 2019-10-15 | 새로운 기능, 변경 사항, 버그 수정 및 18개의 보안 수정. |
| Java SE 8 Update 241[213] | 2020-01-14 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 251[214] | 2020-04-14 | 새로운 기능, 변경 사항, 버그 수정. Windows XP에서 비공식적으로 작동하는 것으로 나타난 마지막 버전. |
| Java SE 8 Update 261[215] | 2020-07-14 | 새로운 기능, 변경 사항, 133개의 버그 수정.[216] |
| Java SE 8 Update 271[217] | 2020-10-20 | 새로운 기능, 변경 사항, 65개의 버그 수정.[218] |
| Java SE 8 Update 281[219] | 2021-01-19 | 새로운 기능, 변경 사항, 33개의 버그 수정.[220] |
| Java SE 8 Update 291[221] | 2021-04-20 | 새로운 기능, 변경 사항, 28개의 버그 수정.[222] |
| Java SE 8 Update 301[223] | 2021-07-20 | 새로운 기능, 변경 사항, 90개의 버그 수정.[224] |
| Java SE 8 Update 311[225] | 2021-10-19 | 새로운 기능, 변경 사항, 52개의 버그 수정.[226] |
| Java SE 8 Update 321[227] | 2022-01-18 | 새로운 기능, 변경 사항, 62개의 버그 수정.[228] |
| Java SE 8 Update 331[229] | 2022-04-19 | 새로운 기능, 변경 사항, 37개의 버그 수정.[230] |
| Java SE 8 Update 333[231] | 2022-05-02 | 1개의 변경 사항과 2개의 버그 수정이 포함된 패치.[232] |
| Java SE 8 Update 341[233] | 2022-07-19 | 새로운 기능, 변경 사항, 42개의 버그 수정.[234] |
| Java SE 8 Update 351[235] | 2022-10-18 | 새로운 기능, 변경 사항, 95개의 버그 수정.[236] |
| Java SE 8 Update 361[237] | 2023-01-17 | 새로운 기능, 변경 사항, 버그 수정. |
| Java SE 8 Update 371[238] | 2023-04-18 | |
| Java SE 8 Update 381[239] | 2023-07-18 | 보안 패치 |
| Java SE 8 Update 391[240] | 2023-10-17 | |
| Java SE 8 Update 401[241] | 2024-01-16 | |
| Java SE 8 Update 411[242] | 2024-04-16 | 시간대 데이터 IANA TZ Data 2024a로 업데이트, 새로운 기능, 변경 사항, 타사 라이브러리 업데이트, 37개의 버그 수정.[242] |
| Java SE 8 Update 421[243] | 2024-07-16 | |
| Java SE 8 Update 431[244] | 2024-10-15 | |
| Java SE 8 Update 441[245] | 2025-01-21 | |
| Java SE 8 Update 451[246] | 2025-04-15 | |
| Java SE 8 Update 461[247] | 2025-07-15 | |
| Java SE 8 Update 471[248] | 2025-10-21 |
Java SE 9
[편집]| 출시됨 | 2017년 9월 21일 |
|---|---|
| JEP 수 | 9 |
| 지원 종료됨 | |
| 공개 | 2018년 3월 |
자바 SE 9는 2017년 9월 21일에 출시되었다.[249] 이는 자바 실행 위원회에서 프로젝트 직소의 현재 구현을 둘러싼 논쟁적인 수용[250] 때문이었으며, 오라클은 몇 가지 미해결 문제와 우려 사항을 수정하고 몇 가지 중요한 기술적 질문을 개선해야 했다. 2017년 6월 말, 자바 커뮤니티 프로세스는 제안된 모듈 시스템 계획에 대해 거의 만장일치로 합의를 표명했다.[251]
- JSR 376: 프로젝트 직소에 따른 JDK 모듈화 (자바 플랫폼 모듈 시스템)[111]
- 자바DB가 JDK에서 제거되었다[252]
- JEP 193: 변수 핸들, 다양한 `java.util.concurrent.atomic` 및 `sun.misc.Unsafe` 작업에 해당하는 표준적인 호출 수단 정의
- JEP 213: 밀링 프로젝트 코인, @SafeVarargs를 private 인스턴스 메서드에 허용; 실질적으로 final 변수를 try-with-resources 문의 리소스로 사용 허용; 추론된 자료형의 인자 자료형이 denotable인 경우 익명 클래스에 다이아몬드 연산자 허용; 자바 SE 8에서 시작된 밑줄을 합법적인 식별자 이름 집합에서 완전히 제거; 인터페이스의 private 메서드 지원
- JEP 222: jshell: 자바 셸 (Read-Eval-Print Loop): JShell은 자바 언어용 REPL 명령줄 인터페이스이다.[253]
- JEP 254: 컴팩트 문자열
- JEP 263: HiDPI 그래픽: 자동 스케일링 및 크기 조정
- JEP 266: 더 많은 동시성 업데이트, 리액티브 스트림의 자바 구현을 포함한다,[254] 새로운 `Flow` 클래스를 포함한다[255] 이는 이전에 리액티브 스트림에서 제공했던 인터페이스를 포함한다.[256]
- JEP 268: XML 카탈로그
- JEP 282: jlink: 자바 링커, 모듈 세트와 해당 종속성을 사용자 정의 런타임 이미지로 조립하고 최적화할 수 있는 도구 생성. 이는 실행할 JVM을 포함하여 완전히 사용 가능한 실행 파일을 생성할 수 있게 한다.
- JEP 295: AOT 컴파일, GraalVM이 제공하는 선행 컴파일
첫 번째 자바 9 릴리스 후보는 2017년 8월 9일에 출시되었다.[257] 자바 9의 첫 번째 안정 버전은 2017년 9월 21일이었다.[258]
역사
[편집]자바원 2011에서 오라클은 2016년에 자바 9에 출시할 것으로 기대되는 기능들을 논의했다.[259] 자바 9에는 멀티 기가바이트 힙에 대한 더 나은 지원, 더 나은 네이티브 코드 통합, 다른 기본 쓰레기 수집기 (G1, "더 짧은 응답 시간"을 위해)[260] 및 자체 튜닝 JVM이 포함될 것으로 예상되었다.[261] 2016년 초, 자바 9의 릴리스는 2017년 3월로 재조정되었고,[262] 나중에 다시 4개월 연기되어 2017년 7월로 미뤄졌다.[263]
자바 9 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 9[264] | 2017-09-21 | 초기 릴리스 |
| Java SE 9.0.1[265] | 2017-10-17 | 새로운 기능
알려진 문제
변경 사항
기타 참고 사항
버그 수정
|
| Java SE 9.0.4[267] | 2018-01-16 | 새로운 기능
변경 사항
버그 수정
|
Java SE 10
[편집]| 출시됨 | 2018년 3월 20일 |
|---|---|
| JEP 수 | 12 |
| 지원 종료됨 | |
| 공개 | 2018년 9월 |
OpenJDK 10은 2018년 3월 20일에 출시되었으며, 12가지 새로운 기능이 확인되었다.[269] 이 기능에는 다음이 포함된다.
- JEP 286: 지역 변수 자료형 추론
- JEP 296: JDK 포레스트를 단일 저장소로 통합
- JEP 304: 쓰레기 수집기 인터페이스
- JEP 307: G1을 위한 병렬 전체 GC
- JEP 310: 애플리케이션 클래스-데이터 공유
- JEP 312: 스레드 로컬 핸드셰이크
- JEP 313: 네이티브 헤더 생성 도구 (javah) 제거
- JEP 314: 추가 유니코드 언어 태그 확장
- JEP 316: 대체 메모리 장치에 힙 할당
- JEP 317: 실험적 자바 기반 JIT 컴파일러
- JEP 319: 루트 인증서
- JEP 322: 시간 기반 릴리스 버전 관리
이 중 첫 번째 JEP 286 지역 변수 자료형 추론은 `var` 키워드를 지역 변수에 사용할 수 있게 하며, 실제 자료형은 컴파일러가 계산한다. 이 변경으로 개발자는 변수의 자료형을 수동으로 지정하는 대신 다음을 수행할 수 있다.
var list = new ArrayList<String>(); // ArrayList<String> 추론
var stream = list.stream(); // Stream<String> 추론
자바 10 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 10[270] | 2018-03-20 | 초기 릴리스 |
| Java SE 10.0.1[271] | 2018-04-17 | 새로운 기능
변경 사항
기타 참고 사항
버그 수정
|
| Java SE 10.0.2[273] | 2018-07-17 | 변경 사항
버그 수정
|
Java SE 11 (LTS)
[편집]| LTS 버전 | |
| 출시됨 | 2018년 9월 25일 |
|---|---|
| JEP 수 | 17 |
| 제거된 사항 | |
| 저명한 사항 | 자바 애플릿s, 자바 웹 스타트, 자바FX, 자카르타 EE, 및 CORBA 모듈 |
JDK 11은 2018년 9월 25일에 출시되었으며, 현재 버그 수정이 진행 중이다. 이 버전은 LTS, 즉 장기 지원을 제공한다. 다른 기능 외에도 자바 11에는 다음과 같은 여러 새로운 기능이 포함되어 있다.[275]
- JEP 181: 중첩 기반 접근 제어
- JEP 309: 동적 클래스 파일 상수
- JEP 315: Aarch64 내장 함수 개선
- JEP 318: 입실론: 노옵 쓰레기 수집기
- JEP 320: 자바 EE 및 CORBA 모듈 제거
- JEP 321: HTTP 클라이언트 (표준)
- JEP 323: 람다 매개변수를 위한 지역 변수 구문
- JEP 324: Curve25519 및 Curve448을 사용한 키 합의
- JEP 327: 유니코드 10
- JEP 328: 플라이트 레코더
- JEP 329: ChaCha20 및 Poly1305 암호화 알고리즘
- JEP 330: 단일 파일 소스 코드 프로그램 실행
- JEP 331: 저오버헤드 힙 프로파일링
- JEP 332: 전송 계층 보안 (TLS) 1.3
- JEP 333: ZGC: 확장 가능한 저지연 쓰레기 수집기 (실험적)
- JEP 335: 나쉬혼 자바스크립트 엔진 사용 중단
- JEP 336: Pack200 도구 및 API 사용 중단
이전 릴리스의 여러 기능이 삭제되었다. 특히, 자바 애플릿 및 자바 웹 스타트는 더 이상 사용할 수 없다. 자바FX, 자카르타 EE 및 CORBA 모듈은 JDK에서 제거되었다.[276]
자바 11 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 11[277] | 2018-09-25 | 초기 릴리스 |
| Java SE 11.0.1[278] | 2018-10-16 | 변경 사항
버그 수정
|
| Java SE 11.0.2[280] | 2019-01-15 | 알려진 문제
변경 사항
버그 수정
|
| Java SE 11.0.3[282] | 2019-04-16 | 새로운 기능
알려진 문제
변경 사항
버그 수정
|
| Java SE 11.0.4[284] | 2019-07-16 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.5[286] | 2019-10-15 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.6[288] | 2020-01-14 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.7[290] | 2020-04-14 | 새로운 기능
버그 수정
|
| Java SE 11.0.8[292] | 2020-07-14 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.9[294] | 2020-10-20 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.10[296] | 2021-01-19 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.11[298] | 2021-04-20 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.12[300] | 2021-07-20 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.13[302] | 2021-10-19 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.14[304] | 2022-01-18 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.15[306] | 2022-04-19 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.16[308] | 2022-07-19 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.16.1[310] | 2022-08-18 | 변경 사항
|
| Java SE 11.0.17[311] | 2022-10-18 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.18[313] | 2023-01-17 | 새로운 기능
알려진 문제
기타 참고 사항
버그 수정
|
| Java SE 11.0.19[315] | 2023-04-18 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 11.0.20[317] | 2023-07-18 | 새로운 기능
알려진 문제
기타 참고 사항
버그 수정
|
| Java SE 11.0.21[319] | 2023-10-17 | 새로운 기능
제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
| Java SE 11.0.22[321] | 2024-01-16 | 새로운 기능
알려진 문제
기타 참고 사항
버그 수정
|
| Java SE 11.0.23[323] | 2024-04-16 | |
| Java SE 11.0.24[324] | 2024-07-16 | |
| Java SE 11.0.25[325] | 2024-10-15 | |
| Java SE 11.0.26[326] | 2025-01-21 | |
| Java SE 11.0.27[327] | 2025-04-15 | |
| Java SE 11.0.28[328] | 2025-07-15 | |
| Java SE 11.0.29[329] | 2025-10-21 |
Java SE 12
[편집]| 출시됨 | 2019년 3월 19일 |
|---|---|
| JEP 수 | 8 |
| 추가된 사항 | |
| 프리뷰 | Enhanced switch statements |
| 지원 종료됨 | |
| 공개 | 2019년 9월 |
JDK 12는 2019년 3월 19일에 출시되었다. 다른 기능 외에도 자바 12에는 다음과 같은 여러 새로운 기능이 포함되어 있다.[330]
- JEP 189: Shenandoah: 낮은 일시 중지 시간 쓰레기 수집기 (실험적)
- JEP 230: 마이크로벤치마크 스위트
- JEP 325: Switch 표현식 (프리뷰)
- JEP 334: JVM 상수 API
- JEP 340: 두 개가 아닌 하나의 AArch64 포트
- JEP 341: 기본 CDS 아카이브
- JEP 344: G1을 위한 중단 가능한 혼합 컬렉션
- JEP 346: G1에서 사용하지 않는 커밋된 메모리를 즉시 반환
프리뷰 기능 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 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 12[331] | 2019-03-19 | 초기 릴리스 |
| Java SE 12.0.1[332] | 2019-04-16 | 알려진 문제
변경 사항
버그 수정
|
| Java SE 12.0.2[334] | 2019-07-16 | 제거된 기능 및 옵션
기타 참고 사항
|
Java SE 13
[편집]| 출시됨 | 2019년 9월 17일 |
|---|---|
| JEP 수 | 5 |
| 추가된 사항 | |
| 프리뷰 | Enhanced switch statements, text blocks |
| 지원 종료됨 | |
| 공개 | 2023년 3월[335] |
JDK 13은 2019년 9월 17일에 출시되었다. 자바 13에는 다음과 같은 새로운 기능과 "수백 가지의 작은 개선 사항 및 수천 가지의 버그 수정"이 포함되어 있다.[336]
- JEP 350: 동적 CDS 아카이브
- JEP 351: ZGC: 사용하지 않는 메모리 언커밋
- JEP 353: 레거시 소켓 API 재구현
- JEP 354: Switch 표현식 (프리뷰)
- JEP 355: 텍스트 블록 (프리뷰)
JEP 355 텍스트 블록은 여러 줄 문자열 리터럴을 허용한다.
String html = """
<html lang="en">
<body>
<p>Hello, world</p>
</body>
</html>
""";
자바 13 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 13[337] | 2019-09-17 | 초기 릴리스 |
| Java SE 13.0.1[338] | 2019-10-15 | 기타 참고 사항
|
| Java SE 13.0.2[339] | 2020-01-14 | 기타 참고 사항
버그 수정
|
Java SE 14
[편집]| 출시됨 | 2020년 3월 17일 |
|---|---|
| JEP 수 | 16 |
| 추가된 사항 | |
| 저명한 사항 | Helpful NullPointerExceptions, enhanced switch statements |
| 프리뷰 | 패턴 매칭 for instanceof, records, text blocks |
| 인큐베이팅 | jpackager, Foreign memory access |
| 제거된 사항 | |
| 저명한 사항 | Remove Concurrent Mark Sweep 쓰레기 수집기 |
| 지원 종료됨 | |
| 공개 | 2020년 9월 |
JDK 14는 2020년 3월 17일에 출시되었다. 자바 14에는 다음과 같은 새로운 기능과 "수백 가지의 작은 개선 사항 및 수천 가지의 버그 수정"이 포함되어 있다.[341]
- JEP 305: instanceof를 위한 패턴 매칭 (프리뷰)
- JEP 343: 패키징 도구 (인큐베이터)
- JEP 345: G1을 위한 NUMA 인식 메모리 할당
- JEP 349: JFR 이벤트 스트리밍
- JEP 352: 비휘발성 매핑된 바이트 버퍼
- JEP 358: 유용한 NullPointerException
- JEP 359: 레코드 (프리뷰)
- JEP 361: Switch 표현식 (표준)
- JEP 362: 솔라리스 및 SPARC 포트 사용 중단
- JEP 363: 동시 마크 스윕 (CMS) 쓰레기 수집기 제거
- JEP 364: macOS의 ZGC
- JEP 365: Windows의 ZGC
- JEP 366: ParallelScavenge + SerialOld GC 조합 사용 중단
- JEP 367: Pack200 도구 및 API 제거
- JEP 368: 텍스트 블록 (두 번째 프리뷰)
- JEP 370: 외국 메모리 접근 API (인큐베이터)
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 레코드는 간단한 불변 튜플과 유사한 클래스를 쉽게 생성할 수 있게 한다.[342]
record Point(int x, int y) { }
Point p = new Point(3, 4);
System.out.println(p.x());
자바 14 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 14[343] | 2020-03-17 | 초기 릴리스 |
| Java SE 14.0.1[344] | 2020-04-14 | 버그 수정
|
| Java SE 14.0.2[346] | 2020-07-14 | 제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
Java SE 15
[편집]| 출시됨 | 2020년 9월 15일 |
|---|---|
| JEP 수 | 14 |
| 추가된 사항 | |
| 저명한 사항 | Hidden classes, ZGC (쓰레기 수집기), Shenandoah (쓰레기 수집기), text blocks |
| 프리뷰 | Sealed classes, 패턴 매칭 of instanceof, records |
| 인큐베이팅 | Foreign-memory access |
| 제거된 사항 | |
| 저명한 사항 | JavaScript engine, 솔라리스 및 SPARC 포트 |
| 지원 종료됨 | |
| 공개 | 2023년 3월[335] |
JDK 15는 2020년 9월 15일에 출시되었다. 자바 15는 예를 들어 여러 줄 문자열 리터럴 (텍스트 블록)을 지원한다. Shenandoah 및 Z 쓰레기 수집기 (후자는 때때로 ZGC로 약칭됨)는 이제 프로덕션에서 사용할 준비가 되었다 (즉, 더 이상 실험적이라고 표시되지 않음). 오라클의 솔라리스 운영 체제 (및 SPARC CPU) 지원은 중단되었다 (Java 11 등에서는 여전히 사용 가능). Nashorn 자바스크립트 엔진이 제거되었다. 또한 일부 루트 CA 인증서도 제거되었다.
- JEP 339: Edwards-Curve 디지털 서명 알고리즘 (EdDSA)
- JEP 360: 봉인된 클래스 (프리뷰)
- JEP 371: 숨겨진 클래스
- JEP 372: Nashorn 자바스크립트 엔진 제거
- JEP 373: 레거시 DatagramSocket API 재구현
- JEP 374: 편향 잠금 비활성화 및 사용 중단
- JEP 375: instanceof를 위한 패턴 매칭 (두 번째 프리뷰)
- JEP 377: ZGC: 확장 가능한 저지연 쓰레기 수집기
- JEP 378: 텍스트 블록
- JEP 379: Shenandoah: 낮은 일시 중지 시간 쓰레기 수집기
- JEP 381: 솔라리스 및 SPARC 포트 제거
- JEP 383: 외국 메모리 접근 API (두 번째 인큐베이터)
- JEP 384: 레코드 (두 번째 프리뷰)
- JEP 385: RMI 활성화 사용 중단 및 제거
JEP 360 봉인된 클래스는 다른 클래스나 인터페이스가 자신을 확장하거나 구현하는 것을 제한하는 봉인된 클래스 및 인터페이스를 추가한다. `permits` 절에 지정된 클래스만 해당 클래스나 인터페이스를 확장할 수 있다.
package com.example.geometry;
public abstract sealed class Shape
permits Circle, Rectangle, Square {...}
레코드와 함께 봉인된 클래스는 합계 자료형이다. 이들은 레코드, 스위치 표현식, instanceof를 위한 패턴 매칭과 같은 다른 최신 기능들과 잘 작동한다. 이들은 모두 2018년 9월 개빈 비어만과 브라이언 고에츠가 처음 논의한 "자바의 패턴 매칭" 시스템의 일부를 형성한다.[348]
자바 15 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 15[349] | 2020-09-15 | 초기 릴리스 |
| Java SE 15.0.1[350] | 2020-10-20 | 새로운 기능
기타 참고 사항
버그 수정
|
| Java SE 15.0.2[352] | 2021-01-19 | 기타 참고 사항
버그 수정
|
Java SE 16
[편집]| 출시됨 | 2021년 3월 16일 |
|---|---|
| JEP 수 | 17 |
| 추가된 사항 | |
| 저명한 사항 | Windows/AArch64 Port, jpackager, 패턴 매칭 for instanceof, records |
| 프리뷰 | Sealed classes |
| 인큐베이팅 | Foreign linker, Foreign-memory access |
| 지원 종료됨 | |
| 공개 | 2021년 9월 |
JDK 16은 2021년 3월 16일에 출시되었다. 자바 16은 선행 컴파일 (및 Graal JIT) 옵션을 제거한다.[354] 자바 구현 자체는 C++로 작성되었고 여전히 그렇지만, 자바 16부터는 더 최신 C++14 (그러나 아직 C++17 또는 C++20 등은 아님)가 허용된다. 코드도 깃허브로 옮겨졌으며, 머큐리얼은 소스 제어 시스템에서 제외되었다.
- JEP 338: 벡터 API (인큐베이터)
- JEP 347: C++14 언어 기능 활성화
- JEP 357: 머큐리얼에서 Git으로 마이그레이션
- JEP 369: 깃허브로 마이그레이션
- JEP 376: ZGC: 동시 스레드 스택 처리
- JEP 380: Unix-Domain 소켓 채널
- JEP 386: Alpine Linux 포트 — 아직 안정적이지 않음
- JEP 387: 탄성 메타스페이스
- JEP 388: Windows/AArch64 포트
- JEP 389: 외국 링커 API (인큐베이터)
- JEP 390: 값 기반 클래스에 대한 경고
- JEP 392: 패키징 도구
- JEP 393: 외국 메모리 접근 API (세 번째 인큐베이터)
- JEP 394: instanceof를 위한 패턴 매칭
- JEP 395: 레코드
- JEP 396: 기본적으로 JDK 내부를 강력하게 캡슐화
- JEP 397: 봉인된 클래스 (두 번째 프리뷰)
자바 16 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 16[355] | 2021-03-16 | 초기 릴리스 |
| Java SE 16.0.1[356] | 2021-04-20 | 기타 참고 사항
버그 수정
|
| Java SE 16.0.2[358] | 2021-07-20 | 제거된 기능 및 옵션
기타 참고 사항
버그 수정
|
Java SE 17 (LTS)
[편집]| LTS 버전 | |
| 출시됨 | 2021년 9월 14일 |
|---|---|
| JEP 수 | 14 |
| 추가된 사항 | |
| 저명한 사항 | macOS/AArch64 Port, sealed classes |
| 프리뷰 | Switch 패턴 매칭 |
| 인큐베이팅 | Vector API, Foreign function & memory API |
| 제거된 사항 | |
| 저명한 사항 | AOT compiler, RMI activation, `strictfp` 키워드 사용 중단됨 (JEP 306) |
JDK 17은 2021년 9월에 출시되었다.[360] 자바 17은 새로운 6개월 릴리스 주기 (첫 번째는 자바 11)로 전환한 이후 두 번째 장기 지원 (LTS) 릴리스이다.
- JEP 306: 항상 엄격한 부동 소수점 시맨틱 복원
- JEP 356: 향상된 의사 난수 생성기
- JEP 382: 새로운 macOS 렌더링 파이프라인
- JEP 391: macOS/AArch64 포트
- JEP 398: 애플릿 API 사용 중단 및 제거
- JEP 403: JDK 내부 강력하게 캡슐화
- JEP 406: switch를 위한 패턴 매칭 (프리뷰)
- JEP 407: RMI 활성화 제거
- JEP 409: 봉인된 클래스
- JEP 410: 실험적 AOT 및 JIT 컴파일러 제거
- JEP 411: 보안 관리자 사용 중단 및 제거
- JEP 412: 외국 함수 및 메모리 API (인큐베이터)
- JEP 414: 벡터 API (두 번째 인큐베이터)
- JEP 415: 컨텍스트 특정 역직렬화 필터
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 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 17[361] | 2021-09-14 | 초기 릴리스 |
| Java SE 17.0.1[362] | 2021-10-19 | 제거된 기능 및 옵션
기타 사항
버그 수정
|
| Java SE 17.0.2[364] | 2022-01-18 | 제거된 기능 및 옵션
기타 사항
버그 수정
|
| Java SE 17.0.3[366] | 2022-04-19 | 새로운 기능
기타 사항
버그 수정
|
| Java SE 17.0.3.1[368] | 2022-05-02 | 변경 사항
버그 수정
|
| Java SE 17.0.4[370] | 2022-07-19 | 새로운 기능
기타 사항
버그 수정
|
| Java SE 17.0.4.1[372] | 2022-08-18 | 변경 사항
|
| Java SE 17.0.5[373] | 2022-10-18 | 새로운 기능
기타 사항
버그 수정
|
| Java SE 17.0.6[375] | 2023-01-17 | 새로운 기능
알려진 문제
기타 사항
버그 수정
|
| Java SE 17.0.7[377] | 2023-04-18 | 새로운 기능
기타 사항
버그 수정
|
| Java SE 17.0.8[379] | 2023-07-18 | 새로운 기능
알려진 문제
기타 사항
버그 수정
|
| Java SE 17.0.9[381] | 2023-10-17 | 새로운 기능
제거된 기능 및 옵션
기타 사항
버그 수정
|
| Java SE 17.0.10[383] | 2024-01-16 | 새로운 기능
알려진 문제
기타 사항
버그 수정
|
| Java SE 17.0.11[385] | 2024-04-16 | |
| Java SE 17.0.12[386] | 2024-07-16 | |
| Java SE 17.0.13[387] | 2024-10-15 | |
| Java SE 17.0.14[388] | 2025-01-21 | |
| Java SE 17.0.15[389] | 2025-04-15 | |
| Java SE 17.0.16[390] | 2025-07-15 | |
| Java SE 17.0.17[391] | 2025-10-21 |
Java SE 18
[편집]| 출시됨 | 2022년 3월 22일 |
|---|---|
| JEP 수 | 9 |
| 추가된 사항 | |
| 저명한 사항 |
|
| 프리뷰 | Switch 패턴 매칭 |
| 인큐베이팅 |
|
| 제거된 사항 | |
| 저명한 사항 | 제거를 위해 폐기된 최종화 |
| 지원 종료됨 | |
| 공개 | 2022년 9월 |
JDK 18은 2022년 3월 22일에 릴리스되었다.[392]
- JEP 400: 기본적으로 UTF-8
- JEP 408: 간단한 웹 서버
- JEP 413: 자바 API 문서의 코드 스니펫
- JEP 416: 메서드 핸들로 코어 리플렉션 재구현
- JEP 417: Vector API (세 번째 인큐베이터)
- JEP 418: 인터넷 주소 해석 SPI
- JEP 419: 외부 함수 & 메모리 API (두 번째 인큐베이터)
- JEP 420: Switch를 위한 패턴 매칭 (두 번째 미리보기)
- JEP 421: 제거를 위해 최종화 폐기
자바 18 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 18[393] | 2022-03-22 | 초기 릴리스 |
| Java SE 18.0.1[394] | 2022-04-19 | 새로운 기능
기타 사항
버그 수정
|
| Java SE 18.0.1.1[396] | 2022-05-02 | core-libs/java.io
버그 수정
|
| Java SE 18.0.2[398] | 2022-07-19 | 제거된 기능 및 옵션
기타 사항
버그 수정
|
| Java SE 18.0.2.1[400] | 2022-08-18 | 변경 사항
|
Java SE 19
[편집]| 출시됨 | 2022년 9월 20일 |
|---|---|
| JEP 수 | 7 |
| 추가된 사항 | |
| 프리뷰 |
|
| 인큐베이팅 |
|
| 지원 종료됨 | |
| 공개 | 2023년 3월 |
JDK 19는 2022년 9월 20일에 릴리스되었다.[401]
- JEP 405: 레코드 패턴 (미리보기)
- JEP 422: 리눅스/RISC-V 포트
- JEP 424: 외부 함수 & 메모리 API (미리보기)
- JEP 425: 가상 스레드 (미리보기)
- JEP 426: Vector API (네 번째 인큐베이터)
- JEP 427: Switch를 위한 패턴 매칭 (세 번째 미리보기)
- JEP 428: 구조화된 동시성 (인큐베이터)
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 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 19[402] | 2022-09-20 | 초기 릴리스 |
| Java SE 19.0.1[403] | 2022-10-18 | 기타 사항
버그 수정
|
| Java SE 19.0.2[405] | 2023-01-17 | 새로운 기능
기타 사항
버그 수정
|
Java SE 20
[편집]| 출시됨 | 2023년 3월 21일 |
|---|---|
| JEP 수 | 7 |
| 추가된 사항 | |
| 인큐베이팅 | 범위 지정 값 |
| 지원 종료됨 | |
| 공개 | 2023년 9월 |
자바 20은 2023년 3월 21일에 릴리스되었다.[407] 모든 JEP는 인큐베이터 또는 미리보기였다.
- JEP 429: 범위 지정 값 (인큐베이터)
- JEP 432: 레코드 패턴 (두 번째 미리보기)
- JEP 433: Switch를 위한 패턴 매칭 (네 번째 미리보기)
- JEP 434: 외부 함수 & 메모리 API (두 번째 미리보기)
- JEP 436: 가상 스레드 (두 번째 미리보기)
- JEP 437: 구조화된 동시성 (두 번째 인큐베이터)
- JEP 438: Vector API (다섯 번째 인큐베이터)
자바 20 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 20[408] | 2023-03-21 | 초기 릴리스 |
| Java SE 20.0.1[409] | 2023-04-18 | 기타 사항
버그 수정
|
| Java SE 20.0.2[411] | 2023-07-18 | 새로운 기능
알려진 문제
기타 사항
버그 수정
|
Java SE 21 (LTS)
[편집]| LTS 버전 | |
| 출시됨 | 2023년 9월 19일 |
|---|---|
| JEP 수 | 15 |
| 추가된 사항 | |
| 저명한 사항 | 레코드 패턴, Switch를 위한 패턴 매칭, 가상 스레드 |
| 프리뷰 | 문자열 템플릿, 이름 없는 클래스 및 main 메서드 |
| 인큐베이팅 | Vector API |
자바 21은 2023년 9월 19일에 릴리스되었다.[413] 이 릴리스에서 윈도우 x86용 자바의 32비트 버전은 제거를 위해 폐기되었다. 미리보기 및 인큐베이팅 JEP만 있었던 자바 20에 비해, 인큐베이팅 및 미리보기 단계를 졸업한 8개의 JEP를 포함하여 다음 JEP가 추가되었다. 자바 21은 자바 17에서 처음 미리보기되었던 기능(Switch 문을 위한 패턴 매칭)과 자바 19에서 미리보기되었던 기능(레코드 패턴)을 도입한다. 자바 21에 추가된 모든 JEP는 다음과 같다.
- JEP 430: 문자열 템플릿 (미리보기)
- JEP 431: 순차 컬렉션
- JEP 439: 세대별 ZGC
- JEP 440: 레코드 패턴
- JEP 441: Switch를 위한 패턴 매칭
- JEP 442: 외부 함수 & 메모리 API (세 번째 미리보기)
- JEP 443: 이름 없는 패턴 및 변수 (미리보기)
- JEP 444: 가상 스레드
- JEP 445: 이름 없는 클래스 및 인스턴스 Main 메서드 (미리보기)
- JEP 446: 범위 지정 값 (미리보기)
- JEP 448: Vector API (여섯 번째 인큐베이터)
- JEP 449: 제거를 위해 윈도우 32비트 x86 포트 폐기
- JEP 451: 에이전트의 동적 로딩을 금지할 준비
- JEP 452: 키 캡슐화 메커니즘 API
- JEP 453: 구조화된 동시성 (미리보기)
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 업데이트
[편집]| 릴리스 | 릴리스 날짜 | 주요 내용 |
|---|---|---|
| Java SE 21[414] | 2023-09-19 | 초기 릴리스 |
| Java SE 21.0.1[415] | 2023-10-17 | 기타 사항
버그 수정
|
| Java SE 21.0.2[417] | 2024-01-16 | 새로운 기능
알려진 문제
해결된 문제
기타 사항
버그 수정
|
| Java SE 21.0.3[419] | 2024-04-16 | 새로운 기능
알려진 문제
기타 사항
타사 라이브러리 업데이트
버그 수정
|
| Java SE 21.0.4[421] | 2024-07-16 | |
| Java SE 21.0.5[422] | 2024-10-15 | |
| Java SE 21.0.6[423] | 2025-01-21 | |
| Java SE 21.0.7[424] | 2025-04-15 | |
| Java SE 21.0.8[425] | 2025-07-25 | |
| Java SE 21.0.9[426] | 2025-07-25 |
Java SE 22
[편집]| 출시됨 | 2024년 3월 19일 |
|---|---|
| JEP 수 | 12 |
| 추가된 사항 | |
| 저명한 사항 | 외부 함수 및 메모리 API, 이름 없는 변수 및 패턴 |
| 프리뷰 | 구조화된 동시성, 문자열 템플릿 |
| 인큐베이팅 | Vector API |
| 지원 종료됨 | |
| 공개 | 2024년 9월 |
자바 22는 2024년 3월 19일에 릴리스되었다.[427][428] 이 릴리스에 다음 기능 또는 JEP가 추가되었다.
- JEP 423: G1을 위한 영역 고정
- JEP 447: super(...) 이전의 문 (미리보기)
- JEP 454: 외부 함수 & 메모리 API
- JEP 456: 이름 없는 변수 및 패턴
- JEP 457: 클래스 파일 API (미리보기)
- JEP 458: 다중 파일 소스 코드 프로그램 실행
- JEP 459: 문자열 템플릿 (두 번째 미리보기)
- JEP 460: Vector API (일곱 번째 인큐베이터)
- JEP 461: 스트림 수집기 (미리보기)
- JEP 462: 구조화된 동시성 (두 번째 미리보기)
- JEP 463: 암묵적으로 선언된 클래스 및 인스턴스 Main 메서드 (두 번째 미리보기)
- JEP 464: 범위 지정 값 (두 번째 미리보기)
자바의 스레딩 구현과 관련된 API인 java.lang.Thread.countStackFrames는 제거되었다.[3][429]
Java SE 23
[편집]| 출시됨 | 2024년 9월 17일 |
|---|---|
| JEP 수 | 12 |
| 추가된 사항 | |
| 저명한 사항 | 마크다운 문서 주석 |
| 프리뷰 | 패턴, instanceof 및 Switch의 원시 타입, 클래스 파일 API, 스트림 수집기, 모듈 임포트 선언, 암묵적으로 선언된 클래스 및 인스턴스 main 메서드, 구조화된 동시성, 범위 지정 값, 유연한 생성자 본문 |
| 인큐베이팅 | Vector API |
자바 23은 2024년 9월 17일에 릴리스되었으며,[430][431][432] 다음 JEP가 포함되었다.
- JEP 455: 패턴, instanceof 및 Switch의 원시 타입 (미리보기)
- JEP 466: 클래스 파일 API (두 번째 미리보기)
- JEP 467: 마크다운 문서 주석
- JEP 469: Vector API (여덟 번째 인큐베이터)
- JEP 473: 스트림 수집기 (두 번째 미리보기)
- JEP 471: 제거를 위해 sun.misc.Unsafe의 메모리 접근 메서드 폐기
- JEP 474: ZGC: 기본값으로 세대별 모드
- JEP 476: 모듈 임포트 선언 (미리보기)
- JEP 477: 암묵적으로 선언된 클래스 및 인스턴스 Main 메서드 (세 번째 미리보기)
- JEP 480: 구조화된 동시성 (세 번째 미리보기)
- JEP 481: 범위 지정 값 (세 번째 미리보기)
- JEP 482: 유연한 생성자 본문 (두 번째 미리보기)
문자열 템플릿 미리보기 기능은 디자인 문제로 인해 자바 23에서 제거되었다.[433]
Java SE 24
[편집]| 출시됨 | 2025년 3월 18일 |
|---|---|
| JEP 수 | 24 |
자바 24 사양은 2024년 12월에 확정되었으며, 24개의 JEP가 릴리스에 포함되었고 2025년 3월 18일에 릴리스되었다.[434]
다음 JEP는 이 자바 SE 버전을 대상으로 했다.[435]
- JEP 404: 세대별 셰난도어 (실험적)
- JEP 450: 컴팩트 객체 헤더 (실험적) (이전에는 프로젝트 릴리풋으로 알려짐)
- JEP 472: JNI 사용 제한 준비
- JEP 475: G1을 위한 지연 장벽 확장
- JEP 478: 키 유도 함수 API (미리보기)
- JEP 479: 윈도우 32비트 x86 포트 제거
- JEP 483: AOT 클래스 로딩 및 링크
- JEP 484: 클래스 파일 API
- JEP 485: 스트림 수집기
- JEP 486: 보안 관리자 영구 비활성화
- JEP 487: 범위 지정 값 (네 번째 미리보기)
- JEP 488: 패턴, instanceof 및 Switch의 원시 타입 (두 번째 미리보기)
- JEP 489: Vector API (아홉 번째 인큐베이터)
- JEP 490: ZGC: 비세대 모드 제거
- JEP 491: 고정 없이 가상 스레드 동기화
- JEP 492: 유연한 생성자 본문 (세 번째 미리보기)
- JEP 493: JMOD 없이 런타임 이미지 연결
- JEP 494: 모듈 임포트 선언 (두 번째 미리보기)
- JEP 495: 간단한 소스 파일 및 인스턴스 Main 메서드 (네 번째 미리보기)
- JEP 496: 양자 저항 모듈-격자 기반 키 캡슐화 메커니즘
- JEP 497: 양자 저항 모듈-격자 기반 디지털 서명 알고리즘
- JEP 498: sun.misc.Unsafe의 메모리 접근 메서드 사용 시 경고
- JEP 499: 구조화된 동시성 (네 번째 미리보기)
- JEP 501: 제거를 위해 32비트 x86 포트 폐기
자바 SE 24는 마이크로소프트 윈도우 10의 32비트 x86 에디션을 공식적으로 지원하는 마지막 자바 릴리스이다.
Java SE 25 (LTS)
[편집]| LTS 버전 | |
| 출시중 | 2025년 9월 16일 |
|---|---|
| JEP 수 | 18 |
| 추가된 사항 | |
| 저명한 사항 |
|
| 프리뷰 |
|
| 제거된 사항 | |
| 저명한 사항 |
|
자바 25 사양은 2025년 7월에 확정되었으며, 18개의 JEP가 릴리스에 포함되었다.[436] 자바 25는 2025년 9월 16일에 릴리스되었다.[437]
- JEP 470: 암호화 객체의 PEM 인코딩 (미리보기)
- JEP 502: 안정 값 (미리보기)
- JEP 503: 32비트 x86 포트 제거
- JEP 505: 구조화된 동시성 (다섯 번째 미리보기)
- JEP 506: 범위 지정 값
- JEP 507: 패턴, instanceof 및 Switch의 원시 타입 (세 번째 미리보기)
- JEP 508: Vector API (열 번째 인큐베이터)
- JEP 509: JFR CPU 시간 프로파일링 (실험적)
- JEP 510: 키 유도 함수 API
- JEP 511: 모듈 임포트 선언
- JEP 512: 컴팩트 소스 파일 및 인스턴스 Main 메서드
- JEP 513: 유연한 생성자 본문
- JEP 514: AOT 명령줄 인체공학
- JEP 515: AOT 메서드 프로파일링
- JEP 518: JFR 협력적 샘플링
- JEP 519: 컴팩트 객체 헤더
- JEP 520: JFR 메서드 타이밍 및 트레이싱
- JEP 521: 세대별 셰난도어
미래 기능
[편집]- 프로젝트 발할라: 객체 ID가 없지만 특정 경우에 향상된 메모리 레이아웃(간접 참조 감소)을 얻거나 할당이 완전히 최적화될 수 있는 값 클래스.
- 프로젝트 파나마:
- 네이티브 코드와의 상호 운용성 개선: 자바 소스 코드가 다른 언어의 함수를 호출하고 데이터 타입을 사용할 수 있도록 하며, 오늘날보다 더 쉽고 성능이 좋은 방식으로 (프로젝트 파나마의 이 부분은 자바 22에서 JEP 454: 외부 함수 & 메모리 API 아래 안정화되고 있다).
- Vector API, SIMD 프로그래밍을 위한 휴대용의 비교적 저수준 추상화 계층. 안정화는 프로젝트 발할라에 달려 있다.
- 프로젝트 릴리풋: 자바 객체 헤더 크기 줄이기. 먼저 64비트로, 그 다음 32비트로.
- JIT 모드에서 시작 시간 및 웜업 시간(최고 성능까지의 시간) 감소:
- 프로젝트 바빌론은 코드 리플렉션(즉, 코드 자체에 대한 리플렉션)이라는 반영적 프로그래밍 능력 향상을 통해 자바 언어의 적용 범위를 대체 프로그래밍 모델로 확장하는 것을 목표로 한다. 명시된 주요 목표는 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로 개발했지만,[438] 이후 프로젝트의 라이선스를 변경하고 이클립스 재단에 기증했다. JRockit은 오라클에 인수되어 이후 OpenJDK 버전에 통합된 사유 구현이다.
2025년 가장 일반적으로 사용되는 구현
[편집]아마존은 성능 향상 및 보안 수정 사항을 포함하는 장기 지원을 제공하는 비용 없는 다중 플랫폼 프로덕션 준비 OpenJDK 배포판인 Corretto를 개발했다.[439] Corretto는 자바 SE 표준과 호환되는 것으로 인증되었으며, 아마존 내부에서 많은 프로덕션 서비스에 사용된다.
AdoptOpenJDK로 이전에 알려졌던 Eclipse Temurin 프로젝트는[440] 완전히 오픈 소스 빌드 팜에서 사전 빌드된 OpenJDK 바이너리를 제공한다. 이 프로젝트는 2021년에 Adoptium 워킹 그룹의 일환으로 이클립스 재단으로 전환되었으며, 고품질의 벤더 중립적인 자바 런타임 배포를 보장한다.
BellSoft Liberica JDK[441]는 임베디드 시스템 및 구형 아키텍처 지원을 포함하여 다양한 플랫폼용 빌드를 제공하는 또 다른 OpenJDK 기반 구현이다. JavaFX와 같은 추가 구성 요소를 포함하는 표준 버전과 "Full" 버전을 모두 제공한다.
SAP Machine[442]은 SAP의 OpenJDK 다운스트림 배포판으로, SAP 애플리케이션 및 배포에 최적화되어 있다. OpenJDK의 릴리스 일정에 맞춰 단기 및 장기 지원 릴리스를 모두 제공한다.
알리바바 Dragonwell[443]은 일부 자체 최적화가 포함된 OpenJDK의 다운스트림 버전이다. 시작 성능, 메모리 점유율 및 처리량 개선 사항을 포함한다.
GraalVM[444]은 전통적인 자바 구현과는 상당히 다르다. 오라클 랩스에서 개발되었으며, 자바 외에도 자바스크립트, 파이썬, 루비, R과 같은 여러 언어를 지원하는 다중 언어 가상 머신을 제공한다. GraalVM은 자바로 작성된 고급 JIT 컴파일러를 포함하고 AOT 컴파일을 지원하여 네이티브 실행 파일을 생성하며, 시작 시간과 메모리 점유율을 크게 줄인다.
레드햇 빌드 OpenJDK[445]는 레드햇 엔터프라이즈 리눅스 및 윈도우용 레드햇이 지원하는 OpenJDK 배포판으로, 레드햇의 구독 제품의 일부로 장기 지원 및 정기 업데이트를 제공한다.
Eclipse OpenJ9 JVM 및 OpenJDK 클래스 라이브러리를 기반으로 하는 Semeru Runtime은[446] IBM의 비용 없는 자바 런타임으로, 클라우드 배포에 최적화되어 있다. HotSpot 기반 구현과 비교하여 시작 시간 단축, 메모리 점유율 감소 및 처리량 개선을 제공한다.
각주
[편집]- ↑ Reinhold, Mark (2017년 9월 6일). “Moving Java Forward Faster”. 2017년 9월 16일에 확인함.
- ↑ “Calling 'all aboard' on the six-month Java release train”. theserverside.com. 2017년 9월 12일. 2017년 9월 16일에 확인함.
- ↑ 가 나 “Remove Thread.countStackFrames”. 《bugs.openjdk.org》. 2024년 4월 16일에 확인함.
- ↑ 가 나 다 라 마 바 사 아 자 차 카 “Oracle Java SE Support Roadmap”. 《oracle.com》.
- ↑ Smith, Donald. “Introducing the Free Java License”.
- ↑ Reinhold, Mark (2018년 8월 17일). “What does LTS mean for OpenJDK?”. 2018년 8월 28일에 확인함.
- ↑ “OpenJDK JDK 25 General-Availability Release”.
- ↑ “Chapter 4. The class File Format”.
- ↑ “Java Virtual Machine 1.0.2 specification” (PDF).
- ↑ 가 나 다 라 마 바 사 아 자 차 카 타 인용 오류:
<ref>태그가 잘못되었습니다;azul라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ 가 나 다 라 마 바 사 인용 오류:
<ref>태그가 잘못되었습니다;redhat라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ “Oracle Java SE 6 Support”.
- ↑ 가 나 다 라 마 바 사 인용 오류:
<ref>태그가 잘못되었습니다;liberica라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ 가 나 인용 오류:
<ref>태그가 잘못되었습니다;ibmjdk라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ “Oracle Java SE 7 Support”.
- ↑ 가 나 다 라 마 인용 오류:
<ref>태그가 잘못되었습니다;semeru라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ 가 나 다 라 마 인용 오류:
<ref>태그가 잘못되었습니다;temurin라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ 가 나 다 라 마 인용 오류:
<ref>태그가 잘못되었습니다;corretto라는 이름을 가진 주석에 텍스트가 없습니다 - ↑ 가 나 다 “Support roadmap for the Microsoft Build of OpenJDK”.
- ↑ “JavaSoft ships Java 1.0” (보도 자료). 2007년 3월 10일에 원본 문서에서 보존된 문서. 2008년 2월 5일에 확인함.
- ↑ 가 나 Ortiz, C. Enrique; Giguère, Éric (2001). 《Mobile Information Device Profile for Java 2 Micro Edition: Developer's Guide》. John Wiley & Sons. ISBN 978-0-471-03465-0. 2012년 5월 30일에 확인함.
- ↑ Version 1.1 press release, Sun.
- ↑ Tennant, Don (1997년 3월 15일). “Taligent prepares internationalisation technology for the big time”. 《컴퓨터월드》 (IDG). 2021년 1월 16일에 확인함.
- ↑ Version 1.2 press release, Sun.
- ↑ Version 1.3 press release, Sun.
- ↑ “Version 1.3 full list of changes”. 2006년 11월 7일에 원본 문서에서 보존된 문서.
- ↑ “How do I run Java on a Windows 95 computer?”.
- ↑ Version 1.4 press release.
- ↑ “Version full 1.4 list of changes”. 2007년 1월 8일에 원본 문서에서 보존된 문서.
- ↑ 가 나 “Java 2 Platform 5.0 and Java for Business 5.0”. 오라클 (기업). 2010. 2012년 10월 22일에 확인함.
- ↑ “Version 1.5.0 or 5.0?”. Oracle.
- ↑ Version 1.5 press release.
- ↑ Version 1.5 full list of changes.
- ↑ “JSR 133, 2.4 Why isn't this need met by existing specifications?”. Oracle.
- ↑ Goetz, Brian (2006). 《Java Concurrency in Practice》. Addison-Wesley. xvii쪽. ISBN 0-321-34960-1.
- ↑ “Java 5.0 is no longer available on Java.com”. Java.com. 2009년 11월 3일. 2016년 9월 30일에 확인함.
- ↑ Lineback, Nathan. “Misc Windows 2 – Nathan's Toasty Technology page”. 2016년 9월 30일에 확인함.
- ↑ Yank, Kebin (2005년 5월 3일). “Java 5 available for Mac OS X”. 《Sitepoint》. 2016년 9월 30일에 확인함.
- ↑ “Version 1.5.0 or 5.0?”. Oracle.com. 2016년 4월 18일에 확인함.
- ↑ Java brand naming.
- ↑ Version 6, Java webnotes, Sun.
- ↑ Version 1.6 press release.
- ↑ Version 1.6 full list of changes.
- ↑ Java Lobby.
- ↑ “Mustang's HotSpot”. 2007년 1월 2일에 원본 문서에서 보존된 문서.
- ↑ Darcy, Joe (2008년 8월 3일). “An apt replacement”. 2009년 7월 29일에 확인함.
- ↑ “Install Java 6 on Mac OS X Leopard | Gephi, open source graph visualization software”. Gephi.org. 2016년 9월 30일에 확인함.
- ↑ “Oracle Java SE Support Roadmap”. 오라클 (기업). 2012년 9월 19일. 2012년 10월 22일에 확인함.
- ↑ “Auto-update and update through Java Control Panel of JRE 6 will replace JRE 6 with JRE 7”. 오라클 (기업). 2013년 2월 19일. 2013년 3월 2일에 확인함.
- ↑ “Java SE Development Kit 6, Update 43 Release notes”. 오라클 (기업). 2013년 3월 4일. 2013년 3월 4일에 확인함.
- ↑ “Java SE Development Kit 6, Update 45 Release notes”. 오라클 (기업). 2013년 3월 4일. 2013년 3월 4일에 확인함.
- ↑ “Java SE 6 Update Release Notes”. 《oracle.com》.
- ↑ 가 나 다 “Oracle Java Technologies | Oracle”. 《oracle.com》.
- ↑ “Nimbus — Java.net”. 2011년 8월 20일에 원본 문서에서 보존된 문서. 2020년 2월 1일에 확인함.
- ↑ “Sun Java 6 Update 11 Available Now, Waiting on JavaFX”. FindMySoft.com. 2009년 11월 13일에 확인함.
- ↑ Humble, Charles (2008년 5월 13일). “JavaOne: Garbage First”. infoq.com. 2008년 9월 7일에 확인함.
- ↑ Coward, Dany (2008년 11월 12일). “Java VM: Trying a new Garbage Collector for JDK 7”. 2011년 12월 8일에 원본 문서에서 보존된 문서. 2012년 1월 22일에 확인함.
- ↑ “Breakpoints fail to hit under JDK 1.6.0_14”. 2009년 7월 14일에 확인함.
- ↑ “Bug ID: 6862295 JDWP threadid changes during debugging session (leading to ignored breakpoints)”. 2009년 7월 22일에 확인함.
- ↑ “Oracle Java SE Critical Patch Update Advisory – June 2011”. 《oracle.com》.
- ↑ “Oracle Java SE Critical Patch Update Advisory – October 2011”. 《oracle.com》.
- ↑ “Java 6 Update 32 fails to install...”. MSFN. 2016년 8월 16일에 원본 문서에서 보존된 문서. 2016년 7월 31일에 확인함.
- ↑ 가 나 “Oracle Security Alert for CVE-2012-4681”. 오라클 (기업).
- ↑ “Oracle Java SE Critical Patch Update Advisory – April 2013”. 《oracle.com》.
- ↑ “Why should I upgrade Java ?”. 《java.com》.
- ↑ 가 나 “Oracle Java Critical Patch Update – June 2013”. 《oracle.com》.
- ↑ 가 나 “Oracle Critical Patch Update – October 2013”. 《oracle.com》.
- ↑ 가 나 “Oracle Critical Patch Update – April 2014”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update – July 2014”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update – October 2014”. 《oracle.com》.
- ↑ “Java SE 6 Reference Implementation”. 오라클 (기업). 2016년 10월 24일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – January 2015”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update – April 2015”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update Advisory – July 2015”. 2015년 7월 15일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – October 2015”. 2015년 10월 20일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – January 2016”. 2016년 1월 20일에 확인함.
- ↑ 가 나 “Oracle Security Alert for CVE-2016-0603”. 2016년 2월 8일에 확인함.
- ↑ “Oracle Critical Patch Update CVSS V2 Risk Matrices – April 2016”. 2016년 4월 21일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – July 2016”. 2016년 7월 19일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – October 2016”. 2016년 10월 18일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – January 2017”. 2017년 1월 17일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2017”. 2017년 4월 18일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – July 2017”. 2017년 7월 18일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – October 2017”. 2017년 10월 20일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – January 2018”. 2017년 10월 20일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – April 2018”. 2018년 4월 17일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – July 2018”. 2018년 7월 17일에 확인함.
- ↑ 가 나 “Oracle Critical Patch Update Advisory – October 2018”. 2018년 10월 18일에 확인함.
- ↑ JDK7 보관됨 2016-12-15 - 웨이백 머신, Sun.
- ↑ “Introducing Java 7 Webcast: Moving Java Forward”. 오라클 (기업). 2011년 7월 7일. 2012년 5월 30일에 확인함.
- ↑ 가 나 “JDK 7”. 《openjdk.java.net》.
- ↑ “JDK 7 Milestones”. 《OpenJDK》. 오라클 (기업). 2012년 5월 30일에 확인함.
- ↑ Miller, Alex. “Java 7”. 2024년 2월 5일에 확인함.
- ↑ “JSR 292: Supporting Dynamically Typed Languages on the Java Platform”. 2013년 8월 25일에 확인함.
- ↑ “Compressed oops in the Hotspot JVM”. OpenJDK. 2012년 8월 1일에 확인함.
- ↑ “Java HotSpot VM Options”. Oracle. 2013년 4월 11일에 확인함.
- ↑ “Java Programming Language Enhancements”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Strings in switch Statements”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “The try-with-resources Statement”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Type Inference for Generic Instance Creation”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Improved Compiler Warnings When Using Non-Reifiable Formal Parameters with Varargs Methods”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Binary Literals”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Underscores in Numeric Literals”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking”. Download.oracle.com. 2013년 1월 15일에 확인함.
- ↑ “Concurrency JSR-166”. 2010년 4월 16일에 확인함.
- ↑ “File I/O (Featuring NIO.2)”. Java.sun.com. 2008년 3월 14일. 2013년 1월 15일에 확인함.
- ↑ “Legacy File I/O Code”. Java.sun.com. 2012년 2월 28일. 2013년 1월 15일에 확인함.
- ↑ “JDK 7 Features”. OpenJDK. 2011년 7월 28일. 2013년 3월 15일에 확인함.
- ↑ “Introducing Deployment Rule Sets”. Oracle. 2013년 8월 21일. 2019년 1월 22일에 확인함.
- ↑ “JavaOne 2011 Keynote”. Oracle. 2011년 10월 26일에 원본 문서에서 보존된 문서.
- ↑ 가 나 “Project Jigsaw”. OpenJDK.
“Java Module-System Requirements — DRAFT 12”. Oracle.
Krill, Paul (July 18, 2012). “Project Jigsaw delayed until Java 9”. 《인포월드》. 2020년 7월 15일에 확인함. - ↑ “Java 7 Auto-Update and Java 6”. Oracle.
- ↑ Critical Patch Update table shows four dates per year
- ↑ “End of Java 7 Public Updates”.
After April 2015, Oracle will no longer post updates of Java SE 7 to its public download sites. Existing Java SE 7 downloads already posted as of April 2015 will remain accessible in the Java Archive on the Oracle Technology Network. Developers and end-users are encouraged to update to more recent Java SE versions that remain available for public download in order to continue receiving public updates and security enhancements. [..] July 2015: Updates for Java 7 are no longer available to the public. Oracle offers updates to Java 7 only for customers who have purchased Java support or have Oracle products that require Java 7.
- ↑ “Oracle Java SE Support Roadmap”. Oracle Corporation. 2014년 12월 19일. 2015년 1월 7일에 확인함.
- ↑ “JDK 7 Release Notes”. 《oracle.com》.
- ↑ “Oracle Java SE Critical Patch Update Advisory – February 2012”. 《oracle.com》.
- ↑ “Oracle Java SE Critical Patch Update Advisory – June 2012”. 《oracle.com》.
- ↑ “Java SE 7 Update 6 Released”. 2012년 10월 27일에 원본 문서에서 보존된 문서.
- ↑ “Oracle Java SE Critical Patch Update Advisory – October 2012”. 《oracle.com》.
- ↑ “Oracle Security Alert for CVE-2013-0422”. 오라클 (기업).
- ↑ “Oracle Java SE Critical Patch Update Advisory – February 2013”. 《oracle.com》.
- ↑ “Oracle releases fixes for 40 Java holes – The H Security: News and Features”. 《h-online.com》.
- ↑ “Java SE Development Kit 7 Update 40 Bug Fixes”. 《oracle.com》.
- ↑ “Oracle JDK 7u40 released – security features, hardfloat ARM, Java Mission Control and more”. 2013년 10월 2일에 원본 문서에서 보존된 문서.
- ↑ Oracle to patch Java, other products Tuesday, ZDNet,
- ↑ “Oracle Critical Patch Update – January 2014”. 《oracle.com》.
- ↑ “Java SE Development Kit 7 Update 55 Bug Fixes”. 《oracle.com》.
- ↑ “Java Mission Control 5.3 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 7 Update 60 Bug Fixes”. 《oracle.com》.
- ↑ 가 나 “Java CPU and PSU Releases Explained”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update Advisory – July 2015”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update Advisory – October 2015”. 《oracle.com》.
- ↑ “Oracle Critical Patch Update – January 2016”. 《www.oracle.com》. 2016년 1월 20일에 확인함.
- ↑ “Java SE Development Kit 7, Update 99”. 2016년 3월 23일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2016”. 2016년 4월 18일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2017”. 2017년 4월 18일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – January 2019”. 2019년 4월 18일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2019”. 2019년 4월 18일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – July 2019”. 2020년 1월 7일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – October 2019”. 2020년 1월 7일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – January 2020”. 2021년 4월 22일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2020”. 2021년 4월 22일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – July 2020”. 2021년 4월 22일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – October 2020”. 2021년 4월 22일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – January 2021”. 2021년 4월 22일에 확인함.
- ↑ “Oracle Critical Patch Update Advisory – April 2021”. 2021년 4월 22일에 확인함.
- ↑ “Release Notes for JDK 7 and JDK 7 Update Releases”. 2022년 1월 25일에 확인함.
- ↑ “Release Notes for JDK 7 and JDK 7 Update Releases”. 2022년 1월 25일에 확인함.
- ↑ “Release Notes for JDK 7 and JDK 7 Update Releases”. 2022년 1월 25일에 확인함.
- ↑ “Proposed new schedule for Java 8”. 2013년 4월 18일. 2013년 4월 19일에 확인함.
- ↑ “JDK 8”. OpenJDK. 2013년 4월 18일. 2014년 1월 28일에 확인함.
- ↑ “JDK 8 features”. OpenJDK. 2014년 1월 28일. 2014년 1월 28일에 확인함.
- ↑ “JSR 337”. 2014년 1월 30일에 확인함.
- ↑ “Java 7 Features”. Sun Microsystems. 2010년 2월 9일. 2010년 4월 16일에 확인함.
- ↑ 가 나 “Interface evolution via virtual extension methods” (PDF). Brian Goetz. 2011년 7월 20일. 2014년 3월 27일에 확인함.
- ↑ “Lambda Expressions for the Java Programming Language”. Brian Goetz. 2012년 10월 23일. 2014년 3월 27일에 확인함.
- ↑ “The Java Tutorials: Default Methods”. Oracle. 2017년 5월 23일에 원본 문서에서 보존된 문서. 2014년 3월 27일에 확인함.
- ↑ Gafter, Neal (2006년 8월 18일). “Closures for Java”. 2008년 3월 9일에 확인함.
- ↑ Gosling, James (2008년 1월 31일). “Closures”. 2011년 7월 22일에 원본 문서에서 보존된 문서. 2008년 3월 9일에 확인함.
- ↑ Reinhold, Mark (2009년 11월 28일). “Closures for Java”. 2009년 11월 24일에 확인함.
- ↑ Darcy, Joe. “Unsigned Integer Arithmetic API now in JDK 8”. 《blogs.oracle.com》.
- ↑ “Oracle JDK 8 and JRE 8 Certified System Configurations”. 오라클 (기업). 2014년 4월 15일에 확인함.
- ↑ Stahl, Henrik (2014년 7월 11일). “Updated: The future of Java on Windows XP”. 오라클 (기업). 2014년 11월 11일에 원본 문서에서 보존된 문서. 2014년 11월 11일에 확인함.
JDK 8 is not supported on Windows XP. Early versions of JDK 8 had known issues with the installer on Windows XP that prevented it from installing without manual intervention. This was resolved in JDK 8 Update 25. The important point here is that we can no longer provide complete guarantees for Java on Windows XP, since the OS is no longer being updated by Microsoft. We strongly recommend that users upgrade to a newer version of Windows that is still supported by Microsoft in order to maintain a stable and secure environment.
- ↑ Wieldt, Tori (2014년 10월 27일). “Java SE 8 on Java.com”. 《blog.oracle.com》. 2014년 11월 29일에 원본 문서에서 보존된 문서. 2014년 11월 24일에 확인함.
- ↑ “Oracle Java SE Support Roadmap”. 2021년 2월 17일에 확인함.
- ↑ “Java SE Development Kit 8, Update 5 (JDK 8u5)”. 《oracle.com》. 2014년 4월 28일에 확인함.
- ↑ “Java SE Development Kit 8, Update 11 (JDK 8u11)”. 《oracle.com》. 2014년 7월 16일에 확인함.
- ↑ “18 security bug fixes”. 《oracle.com》. 2014년 7월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 20 (JDK 8u20)”. 《oracle.com》. 2014년 8월 27일에 확인함.
- ↑ “Java SE Development Kit 8 Update 20 Bug Fixes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 25 (JDK 8u25)”. 《oracle.com》. 2014년 10월 14일에 확인함.
- ↑ “Java SE Development Kit 8, Update 31 (JDK 8u31)”. 《oracle.com》. 2015년 1월 21일에 확인함.
- ↑ “Java SE Development Kit 8, Update 40 (JDK 8u40)”. 《oracle.com》. 2015년 3월 4일에 확인함.
- ↑ “Java SE Development Kit 8 Update 40 Bug Fixes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 45 (JDK 8u45)”. 《oracle.com》. 2015년 4월 15일에 확인함.
- ↑ “Java SE Development Kit 8, Update 51 (JDK 8u51)”. 《oracle.com》. 2015년 7월 14일에 확인함.
- ↑ “Java SE Development Kit 8, Update 60 (JDK 8u60)”. 《oracle.com》. 2015년 8월 18일에 확인함.
- ↑ “Java SE Development Kit 8 Update 60 Bug Fixes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 65 (JDK 8u65)”. 《oracle.com》. 2015년 10월 20일에 확인함.
- ↑ “Java SE Development Kit 8, Update 66 Release Notes”. 《oracle.com》. 2015년 10월 22일에 확인함.
- ↑ “Java SE Development Kit 8, Update 71 Release Notes”. 《oracle.com》. 2015년 1월 20일에 확인함.
- ↑ “Java SE Development Kit 8 Update 71 Bug Fixes”. 《oracle.com》. 2015년 1월 20일에 확인함.
- ↑ “Java SE Development Kit 8, Update 72 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 73 Release Notes”. 《oracle.com》. 2016년 2월 6일에 확인함.
- ↑ “Java SE Development Kit 8, Update 74 Release Notes”. 《oracle.com》. 2016년 2월 6일에 확인함.
- ↑ “Java SE Development Kit 8, Update 77 Release Notes”. 《oracle.com》. 2016년 3월 23일에 확인함.
- ↑ “Java SE Development Kit 8, Update 91 Release Notes”. 《oracle.com》. 2016년 3월 23일에 확인함.
- ↑ “Java SE Development Kit 8, Update 92 Release Notes”. 2016년 3월 23일에 확인함.
- ↑ “Java SE Development Kit 8, Update 101 Release Notes”. 2016년 7월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 102 Release Notes”. 2016년 7월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 111 Release Notes”. 2016년 10월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 112 Release Notes”. 2016년 10월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 121 Release Notes”. 2016년 1월 17일에 확인함.
- ↑ “Java SE Development Kit 8, Update 131 Release Notes”. 《oracle.com》. 2017년 4월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 141 Release Notes”. 《oracle.com》. 2017년 7월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 144 Release Notes”. 《oracle.com》. 2017년 7월 26일에 확인함.
- ↑ “Java SE Development Kit 8, Update 151 Release Notes”. 《oracle.com》. 2017년 10월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 152 Release Notes”. 《oracle.com》. 2017년 10월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 161 Release Notes”. 《oracle.com》. 2018년 1월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 162 Release Notes”. 《oracle.com》. 2018년 1월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 171 Release Notes”. 《oracle.com》. 2018년 4월 17일에 확인함.
- ↑ “Java SE Development Kit 8, Update 172 Release Notes”. 《oracle.com》. 2018년 4월 17일에 확인함.
- ↑ “Java SE Development Kit 8, Update 181 Release Notes”. 《oracle.com》. 2018년 7월 20일에 확인함.
- ↑ “Java SE Development Kit 8, Update 191 Release Notes”. 《oracle.com》. 2018년 10월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 192 Release Notes”. 《oracle.com》. 2018년 10월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 201 Release Notes”. 《oracle.com》. 2019년 1월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 202 Release Notes”. 《oracle.com》. 2019년 1월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 211 Release Notes”. 《oracle.com》. 2019년 4월 16일에 확인함.
- ↑ 가 나 “Java SE Development Kit 8, Update 212 Release Notes”. 《oracle.com》. 2019년 4월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 221 Release Notes”. 《oracle.com》. 2019년 7월 30일에 확인함.
- ↑ “Java SE Development Kit 8, Update 231 Release Notes”. 《oracle.com》. 2019년 10월 16일에 확인함.
- ↑ “Java SE Development Kit 8, Update 241 Release Notes”. 《oracle.com》. 2020년 1월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 251 Release Notes”. 《oracle.com》. 2020년 4월 14일에 확인함.
- ↑ “Java SE Development Kit 8, Update 261 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u261 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 271 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u271 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 281 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u281 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 291 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u291 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 301 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u301 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 311 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “JDK 8u311 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 321 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 321 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 331 Release Notes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 331 Bug Fixes”. 《oracle.com》. 2022년 4월 19일에 확인함.
- ↑ “Java SE Development Kit 8, Update 333 Release Notes”. 《oracle.com》. 2022년 5월 2일에 확인함.
- ↑ “Java SE Development Kit 8, Update 333 Bug Fixes”. 《oracle.com》. 2022년 5월 2일에 확인함.
- ↑ “Java SE Development Kit 8, Update 341 Release Notes”. 《oracle.com》. 2022년 7월 30일에 확인함.
- ↑ “Java SE Development Kit 8, Update 341 Bug Fixes”. 《oracle.com》. 2022년 7월 30일에 확인함.
- ↑ “Java SE Development Kit 8, Update 351 Release Notes”. 《oracle.com》. 2022년 10월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 351 Bug Fixes”. 《oracle.com》. 2022년 10월 18일에 확인함.
- ↑ “Java SE Development Kit 8, Update 361 Release Notes”. 《oracle.com》. 2023년 3월 24일에 확인함.
- ↑ “Java SE Development Kit 8, Update 371 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 381 Release Notes”. 《oracle.com》. 2023년 9월 12일에 확인함.
- ↑ “Java SE Development Kit 8, Update 391 Release Notes”. 《oracle.com》. 2023년 11월 15일에 확인함.
- ↑ “Java SE Development Kit 8, Update 401 Release Notes”. 《oracle.com》.
- ↑ 가 나 “Java SE Development Kit 8, Update 411 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 421 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 431 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 441 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 451 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 461 Release Notes”. 《oracle.com》.
- ↑ “Java SE Development Kit 8, Update 471 Release Notes”. 《oracle.com》.
- ↑ “JDK 9”. 2017년 6월 16일에 확인함.
- ↑ “Java modularity specification opposed by Red Hat, IBM is voted down”. 인포월드. 2017년 5월 9일. 2017년 6월 16일에 확인함.
- ↑ Chirgwin, Richard (2017년 7월 2일). “Java 9 release back on track, community votes 'yes'”. 《더 레지스터》. 2017년 7월 29일에 확인함.
- ↑ “Java Platform, Standard Edition Oracle JDK 9 Migration Guide”. 《docs.oracle.com》. 2018년 5월 15일에 확인함.
- ↑ “OpenJDK: Project Kulla”.
- ↑ Lea, Doug (2015년 1월 15일). “[concurrency-interest] jdk9 Candidate classes Flow and Submission Publisher”. 2015년 1월 20일에 원본 문서에서 보존된 문서. 2015년 12월 24일에 확인함.
- ↑ “Flow (Java SE 9 & JDK 9 )”. 《docs.oracle.com》.
- ↑ Reactive Streams Releases First Stable Version for JVM
- ↑ “JDK 9: First Release Candidate”. 2017년 8월 9일. 2017년 8월 21일에 확인함.
- ↑ “Java 9: Release date and new features”. techworld.com. 2017년 7월 21일. 2017년 12월 7일에 원본 문서에서 보존된 문서. 2017년 9월 16일에 확인함.
“JDK 9”. 오라클 (기업). 2017년 9월 16일에 확인함. - ↑ “Mark your calendar: Java 9 finally has a release date”. 2015년 5월 7일.
- ↑ “Java 9's new garbage collector: What's changing? What's staying?”. 2015년 6월 26일.
- ↑ “JavaOne: JavaFX 2, Java on iOS”.
- ↑ “Java 9 Release Date Now March 2017”. 2016년 1월 5일.
- ↑ “JDK 9 release delayed another four months”. 더 레지스터. 2016년 10월 14일에 확인함.
- ↑ “JDK 9 Release Notes”. oracle.com. 2017년 9월 21일.
- ↑ “JDK 9.0.1 Release Notes”. oracle.com. 2017년 10월 17일.
- ↑ “JDK 9.0.1 Bug Fixes”. 《oracle.com》. 2017년 10월 17일.
- ↑ “JDK 9.0.4 Release Notes”. oracle.com. 2018년 1월 16일.
- ↑ “JDK 9.0.4 Bug Fixes”. 《oracle.com》. 2018년 1월 16일.
- ↑ “JDK 10”.
- ↑ “JDK 10 Release Notes”. oracle.com. 2018년 3월 20일.
- ↑ “JDK 10.0.1 Release Notes”. oracle.com. 2018년 4월 17일.
- ↑ “JDK 10.0.1 Bug Fixes”. oracle.com. 2018년 4월 17일.
- ↑ “JDK 10.0.2 Release Notes”. oracle.com. 2018년 7월 17일.
- ↑ “JDK 10.0.2 Bug Fixes”. oracle.com. 2018년 7월 17일.
- ↑ OpenJDK. “JDK 11”.
- ↑ “Oracle JDK Migration Guide”. 《Oracle Help Center》. 2018년 9월 27일에 확인함.
- ↑ “JDK 11”. oracle.com. 2018년 9월 25일.
- ↑ “JDK 11.0.1 Release Notes”. oracle.com. 2018년 10월 16일.
- ↑ “JDK 11.0.1 Bug Fixes”. 《oracle.com》. 2018년 10월 16일.
- ↑ “JDK 11.0.2 Release Notes”. oracle.com. 2019년 1월 15일.
- ↑ “JDK 11.0.2 Bug Fixes”. 《oracle.com》. 2019년 1월 15일.
- ↑ “JDK 11.0.3 Release Notes”. oracle.com. 2019년 4월 16일.
- ↑ “JDK 11.0.3 Bug Fixes”. 《oracle.com》. 2019년 4월 16일.
- ↑ “JDK 11.0.4 Release Notes”. oracle.com. 2019년 7월 16일.
- ↑ “JDK 11.0.4 Bug Fixes”. 《oracle.com》. 2019년 7월 16일.
- ↑ “JDK 11.0.5 Release Notes”. oracle.com. 2019년 10월 15일.
- ↑ “JDK 11.0.5 Bug Fixes”. 《oracle.com》. 2019년 10월 15일.
- ↑ “JDK 11.0.6 Release Notes”. oracle.com. 2020년 1월 14일.
- ↑ “JDK 11.0.6 Bug Fixes”. 《oracle.com》. 2020년 1월 14일.
- ↑ “JDK 11.0.7 Release Notes”. oracle.com. 2020년 4월 14일.
- ↑ “JDK 11.0.7 Bug Fixes”. 《oracle.com》. 2020년 4월 14일.
- ↑ “JDK 11.0.8 Release Notes”. 《oracle.com》. 2020년 7월 14일.
- ↑ “JDK 11.0.8 Bug Fixes”. 《oracle.com》. 2020년 7월 14일.
- ↑ “JDK 11.0.9 Release Notes”. 《oracle.com》. 2020년 10월 20일.
- ↑ “JDK 11.0.9 Bug Fixes”. 《oracle.com》. 2020년 10월 20일.
- ↑ “JDK 11.0.10 Release Notes”. 《oracle.com》. 2021년 1월 19일.
- ↑ “JDK 11.0.10 Bug Fixes”. 《oracle.com》. 2021년 1월 19일.
- ↑ “JDK 11.0.11 Release Notes”. 《oracle.com》. 2021년 4월 20일.
- ↑ “JDK 11.0.11 Bug Fixes”. 《oracle.com》. 2021년 4월 20일.
- ↑ “JDK 11.0.12 Release Notes”. 《oracle.com》. 2021년 7월 20일.
- ↑ “JDK 11.0.12 Bug Fixes”. 《oracle.com》. 2021년 7월 20일.
- ↑ “JDK 11.0.13 Release Notes”. 《oracle.com》. 2021년 10월 19일.
- ↑ “JDK 11.0.13 Bug Fixes”. 《oracle.com》. 2021년 10월 19일.
- ↑ “JDK 11.0.14 Release Notes”. 《oracle.com》. 2022년 1월 18일.
- ↑ “JDK 11.0.14 Bug Fixes”. 《oracle.com》. 2022년 1월 18일.
- ↑ “JDK 11.0.15 Release Notes”. 《oracle.com》. 2022년 4월 19일.
- ↑ “JDK 11.0.15 Bug Fixes”. 《oracle.com》. 2022년 4월 19일.
- ↑ “JDK 11.0.16 Release Notes”. 《oracle.com》. 2022년 7월 19일.
- ↑ “JDK 11.0.16 Bug Fixes”. 《oracle.com》. 2022년 7월 19일.
- ↑ “JDK 11.0.16.1 Release Notes”. 《oracle.com》. 2022년 8월 18일.
- ↑ “JDK 11.0.17 Release Notes”. 《oracle.com》. 2022년 10월 19일.
- ↑ “JDK 11.0.17 Bug Fixes”. 《oracle.com》. 2022년 10월 19일.
- ↑ “JDK 11.0.18 Release Notes”. 《oracle.com》. 2023년 1월 17일.
- ↑ “JDK 11.0.18 Bug Fixes”. 《oracle.com》. 2023년 1월 17일.
- ↑ “JDK 11.0.19 Release Notes”. 《oracle.com》. 2023년 4월 18일.
- ↑ “JDK 11.0.19 Bug Fixes”. 《oracle.com》. 2023년 4월 18일.
- ↑ “JDK 11.0.20 Release Notes”. 《oracle.com》. 2023년 7월 18일.
- ↑ “JDK 11.0.20 Bug Fixes”. 《oracle.com》. 2023년 7월 18일.
- ↑ “JDK 11.0.21 Release Notes”. 《oracle.com》. 2023년 10월 17일.
- ↑ “JDK 11.0.21 Bug Fixes”. 《oracle.com》. 2023년 10월 17일.
- ↑ “JDK 11.0.22 Release Notes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 11.0.22 Bug Fixes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 11.0.23 Release Notes”. 《oracle.com》. 2024년 4월 16일.
- ↑ “JDK 11.0.24 Release Notes”. 《oracle.com》. 2024년 7월 16일.
- ↑ “JDK 11.0.25 Release Notes”. 《oracle.com》. 2024년 10월 15일.
- ↑ “JDK 11.0.26 Release Notes”. 《oracle.com》. 2025년 1월 21일.
- ↑ “JDK 11.0.27 Release Notes”. 《oracle.com》. 2025년 4월 15일.
- ↑ “JDK 11.0.28 Release Notes”. 《oracle.com》. 2025년 7월 15일.
- ↑ “JDK 11.0.29 Release Notes”. 《oracle.com》. 2025년 10월 21일.
- ↑ OpenJDK. “12”.
- ↑ “JDK 12 Release Notes”. oracle.com. 2019년 3월 19일.
- ↑ “JDK 12.0.1 Release Notes”. oracle.com. 2019년 4월 16일.
- ↑ “JDK 12.0.1 Bug Fixes”. 《oracle.com》. 2019년 4월 16일.
- ↑ “JDK 12.0.2 Release Notes”. oracle.com. 2019년 7월 16일.
- ↑ 가 나 “Azul Support Roadmap” (미국 영어). 《Azul | Better Java Performance, Superior Java Support》. 2023년 6월 28일에 확인함.
- ↑ oracle.com, mark reinhold at (2019년 9월 17일). “Java 13 / JDK 13: General Availability”.
- ↑ “JDK 13 Release Notes”. oracle.com. 2019년 9월 17일.
- ↑ “JDK 13.0.1 Release Notes”. oracle.com. 2019년 10월 15일.
- ↑ “JDK 13.0.2 Release Notes”. oracle.com. 2020년 1월 14일.
- ↑ “JDK 13.0.2 Bug Fixes”. 《oracle.com》. 2020년 1월 14일.
- ↑ oracle.com, mark reinhold at (2020년 3월 17일). “Java 14 / JDK 14: General Availability”.
- ↑ Evans, Ben (2020년 1월 10일). “Records Come to Java”. 《Java Magazine》 (Oracle). 2021년 7월 10일에 확인함.
- ↑ “JDK 14 Release Notes”. oracle.com. 2020년 3월 17일.
- ↑ “JDK 14.0.1 Release Notes”. oracle.com. 2020년 4월 14일.
- ↑ “JDK 14.0.1 Bug Fixes”. 《oracle.com》. 2020년 4월 14일.
- ↑ “JDK 14.0.2 Release Notes”. oracle.com. 2020년 7월 14일.
- ↑ “JDK 14.0.2 Bug Fixes”. 《oracle.com》. 2020년 7월 14일.
- ↑ Gavin Bierman; Brian Goetz (September 2018). “Pattern Matching for Java”. 《openjdk.org》. 2024년 6월 18일에 확인함.
- ↑ “JDK 15 Release Notes”. oracle.com. 2020년 9월 15일.
- ↑ “JDK 15.0.1 Release Notes”. oracle.com. 2020년 10월 20일.
- ↑ “JDK 15.0.1 Bug Fixes”. 《oracle.com》. 2020년 10월 20일.
- ↑ “JDK 15.0.2 Release Notes”. oracle.com. 2021년 1월 19일.
- ↑ “JDK 15.0.2 Bug Fixes”. 《oracle.com》. 2021년 1월 19일.
- ↑ “[JDK-8255616] Removal of experimental features AOT and Graal JIT – Java Bug System”. 《bugs.openjdk.java.net》. 2021년 2월 19일에 확인함.
- ↑ “JDK 16 Release Notes”. oracle.com. 2021년 3월 16일.
- ↑ “JDK 16.0.1 Release Notes”. oracle.com. 2021년 4월 20일.
- ↑ “JDK 16.0.1 Bug Fixes”. 《oracle.com》. 2021년 4월 20일.
- ↑ “JDK 16.0.2 Release Notes”. oracle.com. 2021년 7월 20일.
- ↑ “JDK 16.0.2 Bug Fixes”. 《oracle.com》. 2021년 7월 20일.
- ↑ “JDK 17”. 《openjdk.java.net》. 2021년 9월 17일에 확인함.
- ↑ “JDK 17 Release Notes”. oracle.com. 2021년 9월 14일.
- ↑ “JDK 17.0.1 Release Notes”. oracle.com. 2021년 10월 19일.
- ↑ “JDK 17.0.1 Bug Fixes”. 《oracle.com》. 2021년 10월 19일.
- ↑ “JDK 17.0.2 Release Notes”. oracle.com. 2022년 1월 18일.
- ↑ “JDK 17.0.2 Bug Fixes”. 《oracle.com》. 2022년 1월 18일.
- ↑ “JDK 17.0.3 Release Notes”. oracle.com. 2022년 4월 19일.
- ↑ “JDK 17.0.3 Bug Fixes”. 《oracle.com》. 2022년 4월 19일.
- ↑ “JDK 17.0.3.1 Release Notes”. oracle.com. 2022년 5월 2일.
- ↑ “JDK 17.0.3.1 Bug Fixes”. 《oracle.com》. 2022년 5월 2일.
- ↑ “JDK 17.0.4 Release Notes”. oracle.com. 2022년 7월 19일.
- ↑ “JDK 17.0.4 Bug Fixes”. 《oracle.com》. 2022년 7월 19일.
- ↑ “JDK 17.0.4.1 Release Notes”. oracle.com. 2022년 8월 18일.
- ↑ “JDK 17.0.5 Release Notes”. oracle.com. 2022년 10월 18일.
- ↑ “JDK 17.0.5 Bug Fixes”. 《oracle.com》. 2022년 10월 18일.
- ↑ “JDK 17.0.6 Release Notes”. oracle.com. 2023년 1월 17일.
- ↑ “JDK 17.0.6 Bug Fixes”. 《oracle.com》. 2023년 1월 17일.
- ↑ “JDK 17.0.7 Release Notes”. oracle.com. 2023년 4월 18일.
- ↑ “JDK 17.0.7 Bug Fixes”. 《oracle.com》. 2023년 4월 18일.
- ↑ “JDK 17.0.8 Release Notes”. oracle.com. 2023년 7월 18일.
- ↑ “JDK 17.0.8 Bug Fixes”. 《oracle.com》. 2023년 7월 18일.
- ↑ “JDK 17.0.9 Release Notes”. oracle.com. 2023년 10월 17일.
- ↑ “JDK 17.0.9 Bug Fixes”. 《oracle.com》. 2023년 10월 17일.
- ↑ “JDK 17.0.10 Release Notes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 17.0.10 Bug Fixes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 17.0.11 Release Notes”. oracle.com. 2024년 4월 16일.
- ↑ “JDK 17.0.12 Release Notes”. oracle.com. 2024년 7월 16일.
- ↑ “JDK 17.0.13 Release Notes”. oracle.com. 2024년 10월 15일.
- ↑ “JDK 17.0.14 Release Notes”. oracle.com. 2025년 1월 21일.
- ↑ “JDK 17.0.15 Release Notes”. oracle.com. 2025년 4월 15일.
- ↑ “JDK 17.0.16 Release Notes”. oracle.com. 2025년 7월 15일.
- ↑ “JDK 17.0.17 Release Notes”. oracle.com. 2025년 10월 21일.
- ↑ “JDK 18”. 《openjdk.org》. 2023년 6월 28일에 확인함.
- ↑ “JDK 18 Release Notes”. oracle.com. 2022년 3월 22일.
- ↑ “JDK 18.0.1 Release Notes”. oracle.com. 2022년 4월 19일.
- ↑ “JDK 18.0.1 Bug Fixes”. 《oracle.com》. 2022년 4월 19일.
- ↑ “JDK 18.0.1.1 Release Notes”. oracle.com. 2022년 5월 2일.
- ↑ “JDK 18.0.1.1 Bug Fixes”. 《oracle.com》. 2022년 5월 2일.
- ↑ “JDK 18.0.2 Release Notes”. oracle.com. 2022년 7월 19일.
- ↑ “JDK 18.0.2 Bug Fixes”. 《oracle.com》. 2022년 7월 19일.
- ↑ “JDK 18.0.2.1 Release Notes”. oracle.com. 2022년 8월 18일.
- ↑ “JDK 19”. 《openjdk.org》. 2022년 9월 19일에 확인함.
- ↑ “JDK 19 Release Notes”. oracle.com. 2022년 9월 20일.
- ↑ “JDK 19.0.1 Release Notes”. oracle.com. 2022년 10월 18일.
- ↑ “JDK 19.0.1 Bug Fixes”. 《oracle.com》. 2022년 10월 18일.
- ↑ “JDK 19.0.2 Release Notes”. oracle.com. 2023년 1월 17일.
- ↑ “JDK 19.0.2 Bug Fixes”. 《oracle.com》. 2023년 1월 17일.
- ↑ “JDK 20”. 《openjdk.org》. 2023년 4월 21일에 확인함.
- ↑ “JDK 20 Release Notes”. oracle.com. 2023년 3월 21일.
- ↑ “JDK 20.0.1 Release Notes”. oracle.com. 2023년 4월 18일.
- ↑ “JDK 20.0.1 Bug Fixes”. 《oracle.com》. 2023년 4월 18일.
- ↑ “JDK 20.0.2 Release Notes”. oracle.com. 2023년 7월 18일.
- ↑ “JDK 20.0.2 Bug Fixes”. 《oracle.com》. 2023년 7월 18일.
- ↑ “JDK 21”. 《OpenJDK》. 2023년 6월 12일에 확인함.
- ↑ “JDK 21 Release Notes”. oracle.com. 2023년 9월 19일.
- ↑ “JDK 21.0.1 Release Notes”. oracle.com. 2023년 10월 17일.
- ↑ “JDK 21.0.1 Bug Fixes”. 《oracle.com》. 2023년 10월 17일.
- ↑ “JDK 21.0.2 Release Notes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 21.0.2 Bug Fixes”. 《oracle.com》. 2024년 1월 16일.
- ↑ “JDK 21.0.3 Release Notes”. 《oracle.com》. 2024년 4월 16일.
- ↑ “JDK 21.0.3 Bug Fixes”. 《oracle.com》. 2024년 4월 16일.
- ↑ “JDK 21.0.4 Release Notes”. 《oracle.com》. 2024년 7월 16일.
- ↑ “JDK 21.0.5 Release Notes”. 《oracle.com》. 2024년 10월 15일.
- ↑ “JDK 21.0.6 Release Notes”. 《oracle.com》. 2025년 1월 21일.
- ↑ “JDK 21.0.7 Release Notes”. 《oracle.com》. 2025년 4월 15일.
- ↑ “JDK 21.0.8 Release Notes”. 《oracle.com》. 2025년 7월 25일.
- ↑ “JDK 21.0.9 Release Notes”. 《oracle.com》. 2025년 10월 21일.
- ↑ “JDK 22”. 《OpenJDK》. 2024년 4월 10일에 확인함.
- ↑ “Oracle Releases Java 22”. 《oracle.com》. 2024년 3월 20일에 확인함.
- ↑ “Java SE 22 (JSR 397)”. 《cr.openjdk.org》. 2024년 4월 16일에 확인함.
- ↑ “Java SE 23 Platform JSR 398”. 《openjdk.org》. 2024년 1월 17일에 확인함.
- ↑ “JDK 23”. 《openjdk.org》. 2024년 8월 28일에 확인함.
- ↑ “Oracle Releases Java 23”. 《oracle.com》. 2024년 9월 17일에 확인함.
- ↑ Bierman, Gavin (2024년 4월 5일). “Update on String Templates (JEP 459)” (메일링 리스트). 《Amber Expert Group》. 2024년 9월 25일에 확인함.
- ↑ “Java SE 24 Platform JSR 399”. 《openjdk.org》. 2024년 9월 25일에 확인함.
- ↑ “JDK 24”. 《OpenJDK》. 오라클 (기업). 2024년 11월 9일에 확인함.
- ↑ “Java SE 25 Platform JSR 400”. 《openjdk.org》. 2024년 12월 15일에 확인함.
- ↑ “JDK 25”. 《openjdk.org》. 2025년 7월 21일에 확인함.
- ↑ “Downloads – Overview”. 2016년 7월 18일.
- ↑ “Amazon Corretto”. 《Amazon Web Services》. 2025년 11월 16일에 확인함.
- ↑ “Eclipse Temurin”. 《Adoptium》. 이클립스 재단. 2025년 11월 16일에 확인함.
- ↑ “Liberica JDK”. 《BellSoft》. 2025년 11월 16일에 확인함.
- ↑ “SapMachine”. 《SAP》. 2025년 11월 16일에 확인함.
- ↑ “Alibaba Dragonwell8”. 《깃허브》. Alibaba. 2025년 11월 16일에 확인함.
- ↑ “GraalVM”. 《GraalVM》. Oracle Labs. 2025년 11월 16일에 확인함.
- ↑ “Red Hat build of OpenJDK”. 《Red Hat Developer》. 레드햇. 2025년 11월 16일에 확인함.
- ↑ “IBM Semeru Runtimes”. 《IBM Developer》. IBM. 2025년 11월 16일에 확인함.