
A curated list of the Java versions and features across all releases of Java, including the latest Java version.
New features in Java 20 (latest Java version)
Java 20 (JDK 20) version, the latest Java version, contemplates 7 features and was released on March 2023. Structured Concurrency (Second Incubator) and Virtual Threads (Second Preview) are two examples of what is new in Java 20. The complete list of features is:
- 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)
New features in Java 19
Java 19 (JDK 19) version, the latest Java version, contemplates 7 features and was released on September 2022. Structured Concurrency and Virtual Threads are two examples of what is new in Java 19. The complete list of features is:
- JEP 405: Record Patterns (Preview)
- JEP 422: Linux/RISC-V Port
- JEP 424: Foreign Function & Memory API (Preview)
- JEP 425: Virtual Threads (Preview)
- JEP 426: Vector API (Fourth Incubator)
- JEP 427: Pattern Matching for switch (Third Preview)
- JEP 428: Structured Concurrency (Incubator)
New features in Java 18
Java 18 (JDK 18) version contemplates 9 features and was released on March 2022. Simple Web Server and UTF-8 By Default are two examples of what is new in Java 18. The complete list of features is:
- JEP 400: UTF-8 by Default
- 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: Pattern Matching for switch (Second Preview)
- JEP 421: Deprecate Finalization for Removal
New features in Java 17
Java 17 (JDK 17) version contemplates 14 features and was released on September 2021. Sealed Classes and Pattern Matching for switch (Preview) are two examples of what is new in Java 17. The complete list of features is:
- 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: Deprecate the Applet API for Removal
- JEP 403: Strongly Encapsulate JDK Internals
- JEP 406: Pattern Matching for switch (Preview)
- JEP 407: Remove RMI Activation
- JEP 409:Sealed Classes
- JEP 410: Remove the Experimental AOT and JIT Compiler
- JEP 411: Deprecate the Security Manager for Removal
- JEP 412: Foreign Function & Memory API (Incubator)
- JEP 414: Vector API (Second Incubator)
- JEP 415: Context-Specific Deserialization Filters
New features in Java 16
Java 16 (JDK 16) version contemplates 17 features and was released on March 2021. Records and Pattern Matching for instanceof are two examples of what is new in Java 16. The complete list of features is:
- JEP 338: Vector API (Incubator)
- JEP 347: Enable C++14 Language Features
- JEP 357: Migrate from Mercurial to Git
- JEP 369: Migrate to GitHub
- JEP 376: ZGC: Concurrent Thread-Stack Processing
- JEP 380: Unix-Domain Socket Channels
- JEP 386: Alpine Linux Port
- JEP 387: Elastic Metaspace
- JEP 388: Windows/AArch64 Port
- JEP 389: Foreign Linker API (Incubator)
- JEP 390: Warnings for Value-Based Classes
- JEP 392: Packaging Tool
- JEP 393: Foreign-Memory Access API (Third Incubator)
- JEP 394: Pattern Matching for instanceof
- JEP 395: Records
- JEP 396: Strongly Encapsulate JDK Internals by Default
- JEP 397: Sealed Classes (Second Preview)
New features in Java 15
Java 15 (JDK 15) version contemplates 14 features and was released on September 2020. Hidden Classes and Text Blocks are two examples of what is new in Java 15. The complete list of features is:
- JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
- JEP 360: Sealed Classes (Preview)
- JEP 371: Hidden Classes
- JEP 372: Remove the 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
- JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
- JEP 381: Remove the Solaris and SPARC Ports
- JEP 383: Foreign-Memory Access API (Second Incubator)
- JEP 384: Records (Second Preview)
- JEP 385: Deprecate RMI Activation for Removal
New features in Java 14
Java 14 (JDK 14) version contemplates 16 features and was released on March 2020. The first preview of Records and the first preview of Pattern Matching for instanceof are two examples of what is new in Java 14. The complete list of features is:
- JEP 305: Pattern Matching for instanceof (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 Expressions (Standard)
- JEP 362: Deprecate the Solaris and SPARC Ports
- JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector
- JEP 364: ZGC on macOS
- JEP 365: ZGC on Windows
- JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination
- JEP 367: Remove the Pack200 Tools and API
- JEP 368: Text Blocks (Second Preview)
- JEP 370: Foreign-Memory Access API (Incubator)
New features in Java 13
Java 13 (JDK 13) version contemplates 5 features and was released on September 2019. The first preview of Text Blocks and the first preview of Switch Expressions are two examples of what is new in Java 13. The complete list of features is:
- JEP 350: Dynamic CDS Archives
- JEP 351: ZGC: Uncommit Unused Memory
- JEP 353: Reimplement the Legacy Socket API
- JEP 354: Switch Expressions (Second Preview)
- JEP 355: Text Blocks (Preview)
New features in Java 12
Java 12 (JDK 12) version contemplates 8 features and was released on March 2019. The first preview of Switch Expressions and Microbenchmark Suite are two examples of what is new in Java 12. The complete list of features is:
- JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
- JEP 230: Microbenchmark Suite
- JEP 325: Switch Expressions (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
New features in Java 11
Java 11 (JDK 11) version contemplates 17 features and was released on September 2018. The Flight Recorder and support for TLS 1.3 and Unicode 10 are three examples of what is new in Java 11. The complete list of features is:
- 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
New features in Java 10
Java 10 (JDK 10) contemplates 12 features and was released on March 2018. The Local-Variable Type Inference (var) and the Parallel Full GC for G1 are two examples of what is new in Java 10. The complete list of features is:
- JEP 286: Local-Variable Type Inference
- JEP 296: Consolidate the JDK Forest into a Single Repository
- JEP 304: Garbage-Collector Interface
- JEP 307: Parallel Full GC for G1
- JEP 310: Application Class-Data Sharing
- JEP 312: Thread-Local Handshakes
- JEP 313: Remove the Native-Header Generation Tool (javah)
- JEP 314: Additional Unicode Language-Tag Extensions
- JEP 316: Heap Allocation on Alternative Memory Devices
- JEP 317: Experimental Java-Based JIT Compiler
- JEP 319: Root Certificates
- JEP 322: Time-Based Release Versioning
New features in Java 9
Java 9 (JDK 9) contemplates 91 features and was released on September 2017. The Modular JDK and the jshell are two examples of what is new in Java 9. The complete list of features is:
- JEP 102: Process API Updates
- JEP 110: HTTP 2 Client
- JEP 143: Improve Contended Locking
- JEP 158: Unified JVM Logging
- JEP 165: Compiler Control
- JEP 193: Variable Handles
- JEP 197: Segmented Code Cache
- JEP 199: Smart Java Compilation, Phase Two
- JEP 200: The Modular JDK
- JEP 201: Modular Source Code
- JEP 211: Elide Deprecation Warnings on Import Statements
- JEP 212: Resolve Lint and Doclint Warnings
- JEP 213: Milling Project Coin
- JEP 214: Remove GC Combinations Deprecated in JDK 8
- JEP 215: Tiered Attribution for javac
- JEP 216: Process Import Statements Correctly
- JEP 217: Annotations Pipeline 2.0
- JEP 219: Datagram Transport Layer Security (DTLS)
- JEP 220: Modular Run-Time Images
- JEP 221: Simplified Doclet API
- JEP 222: jshell: The Java Shell (Read-Eval-Print Loop)
- JEP 223: New Version-String Scheme
- JEP 224: HTML5 Javadoc
- JEP 225: Javadoc Search
- JEP 226: UTF-8 Property Files
- JEP 227: Unicode 7.0
- JEP 228: Add More Diagnostic Commands
- JEP 229: Create PKCS12 Keystores by Default
- JEP 231: Remove Launch-Time JRE Version Selection
- JEP 232: Improve Secure Application Performance
- JEP 233: Generate Run-Time Compiler Tests Automatically
- JEP 235: Test Class-File Attributes Generated by javac
- JEP 236: Parser API for Nashorn
- JEP 237: Linux/AArch64 Port
- JEP 238: Multi-Release JAR Files
- JEP 240: Remove the JVM TI hprof Agent
- JEP 241: Remove the jhat Tool
- JEP 243: Java-Level JVM Compiler Interface
- JEP 244: TLS Application-Layer Protocol Negotiation Extension
- JEP 245: Validate JVM Command-Line Flag Arguments
- JEP 246: Leverage CPU Instructions for GHASH and RSA
- JEP 247: Compile for Older Platform Versions
- JEP 248: Make G1 the Default Garbage Collector
- JEP 249: OCSP Stapling for TLS
- JEP 250: Store Interned Strings in CDS Archives
- JEP 251: Multi-Resolution Images
- JEP 252: Use CLDR Locale Data by Default
- JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization
- JEP 254: Compact Strings
- JEP 255: Merge Selected Xerces 2.11.0 Updates into JAXP
- JEP 256: BeanInfo Annotations
- JEP 257: Update JavaFX/Media to Newer Version of GStreamer
- JEP 258: HarfBuzz Font-Layout Engine
- JEP 259: Stack-Walking API
- JEP 260: Encapsulate Most Internal APIs
- JEP 261: Module System
- JEP 262: TIFF Image I/O
- JEP 263: HiDPI Graphics on Windows and Linux
- JEP 264: Platform Logging API and Service
- JEP 265: Marlin Graphics Renderer
- JEP 266: More Concurrency Updates
- JEP 267: Unicode 8.0
- JEP 268: XML Catalogs
- JEP 269: Convenience Factory Methods for Collections
- JEP 270: Reserved Stack Areas for Critical Sections
- JEP 271: Unified GC Logging
- JEP 272: Platform-Specific Desktop Features
- JEP 273: DRBG-Based SecureRandom Implementations
- JEP 274: Enhanced Method Handles
- JEP 275: Modular Java Application Packaging
- JEP 276: Dynamic Linking of Language-Defined Object Models
- JEP 277: Enhanced Deprecation
- JEP 278: Additional Tests for Humongous Objects in G1
- JEP 279: Improve Test-Failure Troubleshooting
- JEP 280: Indify String Concatenation
- JEP 281: HotSpot C++ Unit-Test Framework
- JEP 282: jlink: The Java Linker
- JEP 283: Enable GTK 3 on Linux
- JEP 284: New HotSpot Build System
- JEP 285: Spin-Wait Hints
- JEP 287: SHA-3 Hash Algorithms
- JEP 288: Disable SHA-1 Certificates
- JEP 289: Deprecate the Applet API
- JEP 290: Filter Incoming Serialization Data
- JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector
- JEP 292: Implement Selected ECMAScript 6 Features in Nashorn
- JEP 294: Linux/s390x Port
- JEP 295: Ahead-of-Time Compilation
- JEP 297: Unified arm32/arm64 Port
- JEP 298: Remove Demos and Samples
- JEP 299: Reorganize Documentation
New features in Java 8
Java 8 (JDK 8) contemplates 55 features and was released on March 2014. The Date & Time API and the Lambda Expressions are two examples of what is new in Java 8. The complete list of features is:
- JEP 126: Lambda Expressions & Virtual Extension Methods
- JEP 138: Autoconf-Based Build System
- JEP 160: Lambda-Form Representation for Method Handles
- JEP 161: Compact Profiles
- JEP 162: Prepare for Modularization
- JEP 164: Leverage CPU Instructions for AES Cryptography
- JEP 174: Nashorn JavaScript Engine
- JEP 176: Mechanical Checking of Caller-Sensitive Methods
- JEP 179: Document JDK API Support and Stability
- JEP 142: Reduce Cache Contention on Specified Fields
- JEP 122: Remove the Permanent Generation
- JEP 173: Retire Some Rarely-Used GC Combinations
- JEP 136: Enhanced Verification Errors
- JEP 147: Reduce Class Metadata Footprint
- JEP 148: Small VM
- JEP 171: Fence Intrinsics
- JEP 153: Launch JavaFX Applications
- JEP 101: Generalized Target-Type Inference
- JEP 104: Annotations on Java Types
- JEP 105: DocTree API
- JEP 106: Add Javadoc to javax.tools
- JEP 117: Remove the Annotation-Processing Tool (apt)
- JEP 118: Access to Parameter Names at Runtime
- JEP 120: Repeating Annotations
- JEP 139: Enhance javac to Improve Build Speed
- JEP 172: DocLint
- JEP 103: Parallel Array Sorting
- JEP 107: Bulk Data Operations for Collections
- JEP 109: Enhance Core Libraries with Lambda
- JEP 112: Charset Implementation Improvements
- JEP 119: javax.lang.model Implementation Backed by Core Reflection
- JEP 135: Base64 Encoding & Decoding
- JEP 149: Reduce Core-Library Memory Usage
- JEP 150: Date & Time API
- JEP 155: Concurrency Updates
- JEP 170: JDBC 4.2
- JEP 177: Optimize java.text.DecimalFormat.format
- JEP 178: Statically-Linked JNI Libraries
- JEP 180: Handle Frequent HashMap Collisions with Balanced Trees
- JEP 127: Improve Locale Data Packaging and Adopt Unicode CLDR Data
- JEP 128: BCP 47 Locale Matching
- JEP 133: Unicode 6.2
- JEP 184: HTTP URL Permissions
- JEP 113: MS-SFU Kerberos 5 Extensions
- JEP 114: TLS Server Name Indication (SNI) Extension
- JEP 115: AEAD CipherSuites
- JEP 121: Stronger Algorithms for Password-Based Encryption
- JEP 123: Configurable Secure Random-Number Generation
- JEP 124: Enhance the Certificate Revocation-Checking API
- JEP 129: NSA Suite B Cryptographic Algorithms
- JEP 130: SHA-224 Message Digests
- JEP 131: PKCS#11 Crypto Provider for 64-bit Windows
- JEP 140: Limited doPrivileged
- JEP 166: Overhaul JKS-JCEKS-PKCS12 Keystores
- JEP 185: Restrict Fetching of External XML Resources
New features in Java 7
Java 7 (JDK 7) contemplates 24 features and was released on July 2011. The New I/O APIs (NIO.2) and the Small Language Enhancements (Project Coin), which includes Strings in switch statements and the automatic resource management try-with-resources, are examples of what is new in Java 7. The complete list of features is:
- virtual machine: JSR 292: Support for dynamically-typed languages (InvokeDynamic)
- virtual machine: Strict class-file checking
- lang: JSR 334: Small language enhancements (Project Coin)
- core: Upgrade class-loader architecture
- core: Method to close a URLClassLoader
- core: Concurrency and collections updates (jsr166y)
- i18n: Unicode 6.0
- i18n: Locale enhancement
- i18n: Separate user locale and user-interface locale
- ionet: JSR 203: More new I/O APIs for the Java platform (NIO.2)
- ionet: NIO.2 filesystem provider for zip/jar archives
- ionet: SCTP (Stream Control Transmission Protocol)
- ionet: SDP (Sockets Direct Protocol)
- ionet: Use the Windows Vista IPv6 stack
- ionet: TLS 1.2
- sec: Elliptic-curve cryptography (ECC)
- jdbc: JDBC 4.1
- client: XRender pipeline for Java 2D
- client: Create new platform APIs for 6u10 graphics features
- client: Nimbus look-and-feel for Swing
- client: Swing JLayer component
- client: Gervill sound synthesizer
- web: Update the XML stack
- mgmt: Enhanced MBeans
New features in Java 6
Java 6 (JDK 6) contemplates 11 features and was released on December 2006. The Java Compiler API and the JDBC 4.0 are examples of what is new in Java 6. The complete list of features is:
- JSR 105: XML Digital Signature
- JSR 199: Java Compiler API
- JSR 202: Java Class File Specification Update
- JSR 221: JDBC 4.0
- JSR 222: JAXB 2.0
- JSR 223: Scripting for the Java Platform
- JSR 224: JAX-RPC 2.0
- JSR 260: Javadoc Tag Update
- JSR 268: Java Smart Card I/O API
- JSR 269: Pluggable Annotation Processing API
- JSR TBD: JAXP.next
New features in Java 5
Java 5 (JDK 5) contemplates 15 features and was released on September 2004. The Generics Types, Enumerations, Autoboxing, Enhanced for loops and Static Import are examples of what is new in Java 5. The complete list of features is:
- JSR-003: JavaTM Management Extensions (JMXTM) Specification
- JSR-013: Decimal Arithmetic Enhancement
- JSR-014: Add Generic Types to the JavaTM Programming Language
- JSR-028: JavaTM SASL Specfication
- JSR-114: JDBC Rowset Implementations
- JSR-133: JavaTM Memory Model and Thread Specification Revision
- JSR-163: JavaTM Platform Profiling Architecture
- JSR-166: Concurrency Utilities
- JSR-174: Monitoring and Management Specification for the JavaTM Virtual Machine
- JSR-175: A Metadata Facility for the JavaTM Programming Language
- JSR-199: JavaTM Compiler API
- JSR-200: Network Transfer Format for JavaTM Archives
- JSR-201: Extending the JavaTM Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import
- JSR-204: Unicode Supplementary Character Support
- JSR-206: JavaTM API for XML Processing (JAXP) 1.3
New features in Java 4
Java 4 (JDK 4) contemplates 10 features and was released on May 2002. The New I/O API (NIO.1) and JDBC 3.0 are examples of what is new in Java 4. The complete list of features is:
- JSR-005: XML Parsing
- JSR-010: Preferences API
- JSR-031: XML Data Binding
- JSR-041: A Simple Assertion Facility
- JSR-047: Logging API
- JSR-051: New IO APIs
- JSR-054: JDBC 3.0
- JSR-055: Certificate Path API
- JSR-056: Network Launching API
- JSR-057: Long Term Persistence for JavaBeans
New features in Java 3
Java 3 (JDK 3) contemplates 10 features and was released on May 2000. The JDNI and Java Sound are examples of what is new in Java 3. The complete list of features is:
- Java Naming and Directory Interface (JNDI)
- Remote Method Invocation (RMI)
- RMI/IIOP
- CORBA ORB
- Java IDL compiler, idlj
- Drag and Drop Enhancements
- Java Sound
- Applet Deployment Enhancements
- Java 2D Enhancements
- Swing Enhancements
- AWT Enhancements
- Security Enhancements
- Networking Enhancements
- Reflection Enhancements
- Object Serialization Enhancements
- Accessibility Enhancements
- Input Method Framework
- Collections Framework Enhancements
- Enhancements to java.math
- Enhancements in java.lang and java.util.*
- Enhancements to the Extension Mechanism and Jar Files
- Support for Motif 2.1
- Performance
- Java Platform Debugger Architecture (JPDA)
- Tools and Utilities
New features in Java 2
Java 2 (JDK 2) contemplates 8 features and was released on December 1998. The Collections Framework and the Java Foundation Classes are examples of what is new in Java 2. The complete list of features is:
- Java Security Model
- Performance Enhancements
- Java Foundation Classes (JFC)
- Globalization
- Java Plug-in
- Java IDL (Interface Definition Language) API
- Java Database Connectivity 2.0 (JDBC 2.0) Enhancements
- Collections Framework
New features in Java 1.1
Java 1.1 (JDK 1.1) contemplates 6 features and was released on February 1997. The JDBC and the Java JavaBeans API are examples of what is new in Java 1.1. The complete list of features is:
- JavaBeans API
- Improved AWT
- JDBC
- RMI for remote object access
- Additional Java Security APIs
- Global language support based on Unicode 2.0 standards
New features in Java 1
Java 1.0 was released on January 1996
Subscribe to the Java Insights Newsletter and stay up to date on the best Java content.