문서의 이전 판입니다!
Java - version
- Oracle Roadmap - 2024-01-25 updated.
- Adaptium - Roadmap - 2024-01-25 updated.
- Azul Roadmap - 2024-01-25 updated.
- Amazon Corretto Faqs - 2024-01-25 updated.
- Redhat - OpenJDK Support - 2024-01-25 updated.
Java SE 25 2025.09 (LTS)
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2030. 09 (2033. 09) |
Javs SE 24 2025.03
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2025. 09 |
| Azul | 2025. 09 |
Javs SE 23 2024.09
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2025. 03 |
| Azul | 2025. 03 |
Java SE 22 2024.03
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2024. 09 |
| Eclipse Temurin | 2024. 09 |
| Azul | 2024. 09 |
Java SE 21 2023.09 (LTS)
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2028. 09 (2031. 09) |
| Eclipse Temurin | 2029. 10 |
| Azul | 2031. 09 |
| Amazon Corretto | 2023. 10 |
| Redhat | 2029. 11 |
- JEP 430: String Templates (Preview)
- JEP 431: Sequenced Collections
- JEP 439: Generational ZGC
- JEP 440:
record패턴(cf. Tuple) - JEP 441:
switch패턴 매칭 - JEP 442: Foreign Function & Memory API (Third Preview)
- JEP 443: 무명 패턴과 변수 (Preview)
- JEP 444: 가상 스레드(Virtual Threads)
- JEP 445: 메인 메소드의 무명 클래스와 인스턴스 (Preview)
- JEP 446: Scoped Values (Preview)
- JEP 448: Vector API (Sixth Incubator)
- JEP 449:
Windows 32-bit x86 Portdeprecated for Removal - JEP 451: Prepare to Disallow the Dynamic Loading of Agents
- JEP 452: Key Encapsulation Mechanism API
- JEP 453: 구조화된 동시성(Structured Concurrency) (Preview)
Java SE 20 2023.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2023. 09 |
| | 2023. 09 |
| | 2023. 09 |
| | 2023. 09 |
| | 2023. 10. |
- JEP 429: Scoped Values (Incubator)
- JEP 432: Record Patterns (Second Preview)
- JEP 433: Pattern Matching for switch (Fourth Preview)
- JEP 434: Foreign Function & Memory API (Second Preview)
- JEP 436: Virtual Threads (Second Preview)
- JEP 437: Structured Concurrency (Second Incubator)
- JEP 438: Vector API (Fifth Incubator)
Java SE 19 2022.09
| 제공 | 지원종료 (확장) |
|---|---|
| | 2023. 09 |
| | 2022. 09 |
| | 2023. 03 |
| | 2023. 09 |
| | 2023. 04 |
Java SE 18 2022.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2022. 09 |
| | 2022. 09 |
| | 2022. 09 |
| | 2022. 09 |
| | 2022. 10 |
- JEP 400: UTF-8이 기본
- JEP 408: Simple Web Server
- JEP 413: Code Snippets in Java API Documentation
- JEP 416: Reimplement Core Reflection with Method Handles
- JEP 417: Vector API (Third Incubator)
- JEP 418: Internet-Address Resolution SPI
- JEP 419: Foreign Function & Memory API (Second Incubator)
- JEP 420:
switch패턴 매칭 (Second Preview) - JEP 421:
Finalizationdeprecated
Java SE 17 2021.09 (LTS)
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2026. 09 (2029. 09) |
| OpenJDK | SAP 유지보수중 |
| Eclipse Temurin | 2027. 10 |
| Azul | 2029. 09 |
| Amazon Corretto | 2029. 10 |
| Red Hat | 2027. 10 |
| IBM Semeru | 2027. 10 |
| Microsoft | 2027. 09 |
- JEP 306: Restore Always-Strict Floating-Point Semantics
- JEP 356: Enhanced Pseudo-Random Number Generators
- JEP 382: New macOS Rendering Pipeline
- JEP 391: macOS/AArch64 Port
- JEP 398:
Applet APIdeprecated - JEP 403: Strongly Encapsulate JDK Internals
- JEP 406:
switch패턴 매칭 (Preview) - JEP 407:
RMI Activation제거 - JEP 409: 봉인된 클래스(
sealed) - JEP 411: Deprecate the
Security Managerfor Removal - JEP 412: Foreign Function & Memory API (Incubator)
- JEP 414: Vector API (Second Incubator)
- JEP 415: Context-Specific Deserialization Filters
Java SE 16 2021.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2021. 09 |
| | 2021. 09 |
| | 2021. 10 |
- JEP 338: 벡터 API (Incubator)
- JEP 347: C++14 언어 기능 활성화
- JEP 357: Mercurial에서 Git로 마이그레이션
- JEP 369: GitHub로 마이그레이션
- JEP 376: ZGC: Concurrent Thread-Stack Processing
- JEP 380: Unix-Domain Socket Channels
- JEP 386: Alpine Linux Port – not yet stable
- JEP 387: Elastic Metaspace
- JEP 388: Windows/AArch64 Port
- JEP 389: Foreign Linker API (Incubator)
- JEP 390: Warnings for Value-Based Classes
- JEP 392: 패키징 툴
- JEP 393: Foreign-Memory Access API (Third Incubator)
- JEP 394:
instanceof패턴 매칭 - JEP 395: Records (
record- cf. Tuple) - JEP 396: Strongly Encapsulate JDK Internals by Default
- JEP 397: Sealed Classes (Second Preview)
Java SE 15 2020.09
| 제공 | 지원종료 (확장) |
|---|---|
| | 2021. 03 |
| | 2023. 03 |
| | 2021. 04 |
- JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
- JEP 360: 봉인된 클래스 (Preview)
- JEP 371: 히든 클래스
- JEP 372:
Nashorn JavaScript Engine - JEP 373: Reimplement the Legacy DatagramSocket API
- JEP 374: Disable and Deprecate
Biased Locking - JEP 375: Pattern Matching for instanceof (Second Preview)
- JEP 377: ZGC: A Scalable Low-Latency Garbage Collector
- JEP 378: Text Blocks('' """statements""" '')
- JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
- JEP 383: Foreign-Memory Access API (Second Incubator)
- JEP 384: Records (Second Preview)
- JEP 385:
RMI Activationdeprecated
Java SE 14 2020.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2020. 09 |
| | 2020. 09 |
- JEP 305:
instnaceof를 위한 패턴 매칭 (Preview) - JEP 343: Packaging Tool (Incubator)
- JEP 345: NUMA-Aware Memory Allocation for G1
- JEP 349: JFR Event Streaming
- JEP 352: Non-Volatile Mapped Byte Buffers
- JEP 358: Helpful NullPointerExceptions
- JEP 359: Records (Preview)
- JEP 361:
switch표현 (Standard) - JEP 362:
Solaris and SPARC Portsdeprecated - JEP 363:
Concurrent Mark Sweep (CMS) Garbage Collector - JEP 364: ZGC on macOS
- JEP 365: ZGC on Windows
- JEP 366:
ParallelScavenge + SerialOld GC Combinationdeprecated - JEP 367:
Pack200 Tools and API - JEP 368: Text Blocks (Second Preview)
- JEP 370: Foreign-Memory Access API (Incubator)
Java SE 13 2019.09
| 제공 | 지원종료 (확장) |
|---|---|
| | 2020. 03 |
| | 2023. 03 |
Java SE 12 2019.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2019. 09 |
| | 2019. 09 |
- JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
- JEP 230: Microbenchmark Suite
- JEP 325:
switch표현 (Preview) - JEP 334: JVM Constants API
- JEP 340: One AArch64 Port, Not Two
- JEP 341: Default CDS Archives
- JEP 344: Abortable Mixed Collections for G1
- JEP 346: Promptly Return Unused Committed Memory from G1
Java SE 11 2018.09 (LTS)
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2023. 09 (2032. 01) |
| OpenJDK | Red Hat 유지보수중 |
| Eclipse Temurin | 2027. 10 |
| Azul | 2032. 01 |
| Amazon Corretto | 2027. 10 |
| Red Hat | 2024. 10 |
| IBM Semeru | 2024. 10 |
| Microsoft | 2024. 10 |
- JEP 181: Nest-Based Access Control
- JEP 309: Dynamic Class-File Constants
- JEP 315: Improve Aarch64 Intrinsics
- JEP 318: Epsilon: A No-Op Garbage Collector
- JEP 320: Remove the Java EE and CORBA Modules
- JEP 321: HTTP Client (Standard)
- JEP 323: Local-Variable Syntax for Lambda Parameters
- JEP 324: Key Agreement with Curve25519 and Curve448
- JEP 327: Unicode 10
- JEP 328: Flight Recorder
- JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
- JEP 330: Launch Single-File Source-Code Programs
- JEP 331: Low-Overhead Heap Profiling
- JEP 332: Transport Layer Security (TLS) 1.3
- JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
- JEP 335: Deprecate the Nashorn JavaScript Engine
- JEP 336: Deprecate the Pack200 Tools and API
A number of features from previous releases were dropped; in particular, Java applets and Java Web Start are no longer available. JavaFX, Java EE and CORBA modules have been removed from JDK.
Java SE 10 2018.03
| 제공 | 지원종료 (확장) |
|---|---|
| | 2018. 09 |
| | 2018. 09 |
| | 2018. 09 |
- JEP 286: 지역 변수 타입 추론 (
var) - JEP 296: JDK Forest를 단일 저장소로 통합
- JEP 304: Garbage-Collector 인터페이스
- JEP 307: Parallel Full GC for G1
- JEP 310: Application Class-Data Sharing
- JEP 312: Thread-Local Handshakes
- JEP 313:
Native-Header Generation Tool(javah)제거 - JEP 314: Additional Unicode Language-Tag Extensions
- JEP 316: 다른 메모리 장치에서의 힙 할당
- JEP 317: 실험적인 Java-Based JIT 컴파일러
- JEP 319: 루트 인증서
- JEP 322: Time-Based Release Versioning
Java SE 9 2017.09
| 제공 | 지원종료 (확장) |
|---|---|
| | 2018. 03 |
| | 2018. 03 |
| | 2018. 03 |
- JSR 376: Project Jigsaw의 JDK 모듈화(Java Platform Module System)
JavaDB- JEP 193: Variable handles, define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations
- JEP 213: Milling Project Coin,
private인스턴스 메소드에서@SafeVarargs어노테이션 허용; the try-with-resources 구문에서 효과적인 final 변수 사용 허용; 유추된 유형의 인수가 추론가능한 경우 익명 클래스에서 다이아몬드(<>) 허용; Complete the removal, begun in Java SE 8, of underscore from the set of legal identifier names; 인터페이스에서private메소드 지원 - JEP 222: jshell: The Java Shell (Read-Eval-Print Loop): JShell은 자바 언어를 위한 REPL 명령줄 인터페이스입니다.
- JEP 254: Compact Strings
- JEP 263: HiDPI graphics: automatic scaling and sizing
- JEP 266: Reactive Streams의 자바 구현을 포함하고, Reactive Streams에서 이전에 제공된 인터페이슬 포함하는 새로운 Flow 클래스를 포함하는 더 많은 동시성 업데이트.
- JEP 268: XML catalogs
- JEP 282: jlink: The Java Linker, create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image. It effectively allows to produce a fully usable executable including the JVM to run it
- JEP 295: Ahead-of-Time Compilation, ahead-of-time compilation provided by GraalVM
Java SE 8(1.8) 2014.03 (LTS)
| 제공 | 지원종료 (확장) |
|---|---|
| Oracle | 2022. 03 (2030. 12) |
| OpenJDK | Red Hat 유지보수중 |
| Oracle (비상업용) | 2030. 12 |
| Eclipse Temurin | 2026. 11 |
| | 2022. 3 |
| Azul | 2030. 12 |
| Amazon Corretto | 2026. 7 |
| Red Hat | 2026. 11 |
| IBM Semeru | 2026. 5 |
- JEP 174: Project Nashorn, a JavaScript runtime which can run JavaScript code embedded within applications
- JEP 104: 자바 타입에 대한 어노테이션
- 부호 없는 정수 연산
- JEP 120: 반복적인 어노테이션
- JEP 150: Date and time API
- JEP 178: 정적으로 연결된 JNI 라이브러리
- JEP 153: Launch JavaFX applications (direct launching of JavaFX application JARs)
- JEP 122: Remove the permanent generation
Java SE 7 (Dolphin) 2011.07.28
| 제공 | 지원종료 (확장) |
|---|---|
| | 2022. 09 |
| | 2022. 9 (2027. 11) |
| | 2020. 8 |
| | 2015. 5 |
| | 2020. 6 |
- JVM : Dynamic Language support (`invokedynamic` * new byte operation)
- 64bit pointer
- switch(string) 문자열 허용
- try: try(resource) close (AutoClosable, Closeable interface)
public static void main(String args[]) { // 이전 FileInputStream fin = null; BufferedReader br = null; try { fin = new FileInputStream("info.xml"); br = new BufferedReader(new InputStreamReader(fin)); if (br.ready()) { String line1 = br.readLine(); System.out.println(line1); } } catch (Exception ex) { System.out.println("error!!"); } finally { try { if (fin != null) fin.close(); if (br != null) br.close(); } catch (IOException ie) { System.out.println("Failed to close files"); } } } public static void main(String args[]) { try (FileInputStream fin = new FileInputStream("info.xml"); BufferedReader br = new BufferedReader(new InputStreamReader(fin));) { if (br.ready()) { String line1 = br.readLine(); System.out.println(line1); } } catch (Exception ex) { System.out.println("error"); } }
- generics 내 타입 추론:
< >연산자
// 이전 버전 Map<String, Object> user = new HashMap<String, Object>(); // 추론 Map<String, Object> user = new HashMap<> ();
- varargs 단순화 정의
- Binary integer Literals
- underscore 000_000_000
- Catching multiple exception types
- API
- Concurrency 강화
- NIO: java.nio.file, java.nio.file.attribute, java.nio.file.spi
- sort강화 (merge sort)
- crypto강화
- GPU강화
- JavaFX가 기본으로 포함
- 정식 G1 GC
- 안정적인 ARM지원
- 한정적 와일드 카드 사용시 정확한 추론 못함. → 명시적 타입 인수(explicit type arguement)사용 또는 1.8 사용
Java SE 6 (Mustang) 2006.12.11
| 제공 | 지원종료 (확장) |
|---|---|
| | 2013. 04 |
| | 2018. 11 (2027. 11) |
| | 2016. 11 |
- G1(Garbage First) GC : 시험용
J2SE 5(1.5) (Tiger) 2004
J2SE 1.4 (Marlin) 2002
assertkeyword- Regular Expressions 정규표현식
- Java Web Start
- Java Comunity Process (JCP) → 오픈소스
- Java 2 Secruity
- Non-blocking I/O (NIO)
- API
- Preferences API (java.util.prefs)
J2SE 1.3 (Kestrel) 2000
- HotSpot JVM(Sun JIT)
- Java Naming and Directory Interface (JNDI)
- JPDA
- JavaSound
J2SE 1.2 (Playgroud) 1998
- strctfp
- Swing GUI
- Java plug-in
- CORBA IDL(이종기기간 함수 호출 스팩)
- Collections Framework
- JIT
JDK 1.1 1997
- AWT event
- inner class
- JavaBeans
- JDBC
- RMI (Remote Method Invocation)
- reflection
- JIT (Just In Time) complier
- Internationalization & Unicode