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 |
Summary
- 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. |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- 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 |
Summary
- JVM support for dynamic languages, with the new invokedynamic bytecode under JSR-292, following the prototyping work currently done on the Multi Language Virtual Machine
- 압축된 64-bit 포인터 (available in Java 6 with -XX:+UseCompressedOops)
- These small language changes (grouped under a project named Coin):
switch에서 String 사용 가능try구분에서 자동 자원 관리(try-with-resources 구문)- 다이아몬드 연산자
<>- 제너릭 인스턴스 생성을 위한 향상된 타입 추론 - 가변인수 메서드 정의의 단순화(
varargs) - Binary integer literals
- Allowing underscores in numeric literals
- Catching multiple exception types and rethrowing exceptions with improved type checking
- 동시성 유틸리티 JSR 166
- New file I/O library (defined by JSR 203) adding support for multiple file systems, file metadata and symbolic links. The new packages are java.nio.file, java.nio.file.attribute and java.nio.file.spi
- Timsort is used to sort collections and arrays of objects instead of merge sort
- Library-level support for elliptic curve cryptography algorithms
- An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
- New platform APIs for the graphics features originally implemented in version 6u10 as unsupported APIs
- Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
- Upstream updates to XML and Unicode
- Java deployment rule sets
Java SE 6 (Mustang) 2006.12.11
| 제공 | 지원종료 (확장) |
|---|---|
| | 2013. 04 |
| | 2018. 11 (2027. 11) |
| | 2016. 11 |
Summary
- Support for older Win9x versions dropped; unofficially, Java 6 Update 7 was the last release of Java shown to work on these versions of Windows. This is believed to be due to the major changes in Update 10.
- Scripting Language Support (JSR 223): Generic API for tight integration with scripting languages, and built-in Mozilla JavaScript Rhino integration.
- Dramatic performance improvements for the core platform, and Swing.
- Improved Web Service support through JAX-WS (JSR 224).
- JDBC 4.0 지원 (JSR 221).
- Java Compiler API (JSR 199): an API allowing a Java program to select and invoke a Java Compiler programmatically.
- Upgrade of JAXB to version 2.0: Including integration of a StAX parser.
- Support for pluggable annotations (JSR 269).
- Many GUI improvements, such as integration of SwingWorker in the API, table sorting and filtering, and true Swing double-buffering (eliminating the gray-area effect).
- JVM improvements include: synchronization and compiler performance optimizations, new algorithms and upgrades to existing garbage collection algorithms, and application start-up performance.
J2SE 5(1.5) (Tiger) 2004
Summary
- 제너릭 Generics: provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion) (specified by JSR 14)
- 메타데이터 Metadata 어노테이션 Annotation
@: allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities (specified by JSR 175) - 오토박싱/언박싱 Autoboxing/unboxing (Wrapping): automatic conversions between primitive types (such as int) and primitive wrapper classes (such as Integer) (specified by JSR 201)
- 열거형 Enumerations
enum: the enum keyword creates a typesafe, ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.); previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern) (specified by JSR 201) - 가변인수 Varargs: the last parameter of a method can now be declared using a type name followed by three dots (e.g. void drawtext(String… lines)); in the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type
- 향상된
foreach 루프: the for loop syntax is extended with special syntax for iterating over each member of either an array or any Iterable, such as the standard Collection classes (specified by JSR 201) - Improved semantics of execution for multi-threaded Java programs; the new Java memory model addresses issues of complexity, effectiveness, and performance of previous specifications
- 정적 임포트 Static imports
standard libraries 변경점:
- Automatic stub generation for RMI objects
- Swing: New skinnable look and feel, called synth
- 동시성 유틸(
java.util.concurrent) - Scanner class for parsing data from various input streams and buffers
J2SE 1.4 (Marlin) 2002
Summary
assert키워드 (specified in JSR 41)- Regular expressions modeled after Perl regular expressions
- Exception chaining allows an exception to encapsulate original lower-level exception
- Internet Protocol version 6 (IPv6) support
- Non-blocking I/O (named NIO) (specified in JSR 51)
- Logging API (specified in JSR 47)
- Image I/O API for reading and writing images in formats like JPEG and PNG
- Integrated XML parser and XSLT processor (JAXP) (specified in JSR 5 and JSR 63)
- Integrated security and cryptography extensions (JCE, JSSE, JAAS)
- Java Web Start included (Java Web Start was first released in March 2001 for J2SE 1.3) (specified in JSR 56)
- Preferences API (
java.util.prefs)
J2SE 1.3 (Kestrel) 2000
Summary
- HotSpot JVM included (the HotSpot JVM was first released in April 1999 for the J2SE 1.2 JVM)
- RMI was modified to support optional compatibility with CORBA
- Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension)
- Java Platform Debugger Architecture (JPDA)
- JavaSound
- Synthetic proxy classes
J2SE 1.2 (Playgroud) 1998
Summary
strictfpkeyword (by JVM 17 an obsolete keyword, should not be used in new code)- the Swing graphical API was integrated into the core classes
- Sun's JVM was equipped with a JIT compiler for the first time
- Java plug-in
- Java IDL, an IDL implementation for CORBA interoperability
- Collections framework
JDK 1.1 1997
Summary
- an extensive retooling of the AWT event model
- 언어에 내부 클래스 추가
JavaBeansJDBC- RMI and 직렬화
- reflection which supported Introspection only, no modification at runtime was possible. (The ability to modify objects reflectively was added in J2SE 1.2, by introducing the AccessibleObject class and its subclasses such as the Field class.)
- JIT (Just In Time) compiler on Microsoft Windows platforms, produced for JavaSoft by Symantec
- Internationalization and Unicode support originating from Taligent