A “what’s new” for every Java feature release since Java 8. Since Java 9, a feature release ships every six months (March and September). LTS (Long-Term Support) releases — the ones most teams standardize on — now arrive every two years; earlier they were three years apart.
LTS line: 8 · 11 · 17 · 21 · 25 (next: 27 in 2027). Expand any release below for its highlights and a link to the release notes. For the complete picture of any version, see the JEP index.
Releases
Java 25Sep 2025LTS
- Flexible constructor bodies — run statements before
this()/super()(JEP 513) - Module import declarations —
import module Mto pull in a module’s exported packages (JEP 511) - Compact source files & instance
mainmethods — much smaller “hello world”, great for learning (JEP 512) - Scoped values standardized — a safer, immutable alternative to thread-locals (JEP 506)
- Still in preview: primitive types in patterns, structured concurrency, stable values
Java 24Mar 2025
- Stream Gatherers standardized — custom intermediate stream operations (JEP 485)
- Class-File API standardized — parse/generate
.classfiles without ASM (JEP 484) - Quantum-resistant cryptography: ML-KEM (JEP 496) and ML-DSA (JEP 497)
- Ahead-of-time class loading & linking — faster startup, part of Project Leyden (JEP 483)
- Compact object headers (experimental); the Security Manager is now permanently disabled
Java 23Sep 2024
Java 22Mar 2024
Java 21Sep 2023LTS
- Virtual threads standardized — cheap, massively scalable concurrency (JEP 444)
- Record patterns standardized — destructure records in
switch/instanceof(JEP 440) - Pattern matching for
switchstandardized (JEP 441) - Sequenced collections — uniform first/last access (JEP 431)
- Generational ZGC; string templates & unnamed patterns (preview)
Java 20Mar 2023
- Second previews of virtual threads, record patterns, and pattern matching for
switch - Scoped values (incubator)
Java 19Sep 2022
- Virtual threads (preview) and structured concurrency (incubator) debut
- Record patterns (preview); pattern matching for
switch(preview); FFM API (preview)
Java 18Mar 2022
- UTF-8 as the default charset everywhere (JEP 400)
- Simple web server (
jwebserver) for quick static hosting; code snippets in Javadoc
Java 17Sep 2021LTS
- Sealed classes standardized — restrict which types can extend/implement (JEP 409)
- New macOS rendering pipeline (Metal); strong encapsulation of JDK internals
- The long-time baseline for Spring Boot 3.x and much of the modern ecosystem
Java 16Mar 2021
Java 15Sep 2020
- Text blocks standardized — multi-line string literals (JEP 378)
- Sealed classes (preview); ZGC and Shenandoah become production-ready
Java 14Mar 2020
- Records and pattern matching for
instanceofdebut (preview) - Switch expressions standardized (JEP 361); helpful
NullPointerExceptionmessages
Java 13Sep 2019
- Text blocks (preview); switch expressions (second preview)
- Dynamic CDS archives
Java 12Mar 2019
- Switch expressions (preview); Shenandoah GC (experimental)
- Compact number formatting
Java 11Sep 2018LTS
- Standardized HTTP Client (
java.net.http) with HTTP/2 and WebSocket (JEP 321) varallowed in lambda parameters; run a single source file directly (java Foo.java)- Flight Recorder open-sourced; new
Stringmethods (isBlank,strip,lines,repeat)
Java 10Mar 2018
var— local-variable type inference (JEP 286)- Application class-data sharing; parallel full GC for G1
Java 9Sep 2017
- Module system (JPMS / Project Jigsaw) (JEP 261)
- JShell (the REPL); collection factory methods (
List.of,Map.of); private interface methods
Java 8Mar 2014LTS
- Lambda expressions and the Stream API — the biggest language shift in Java’s history
- The
java.time(JSR-310) date/time API; default methods on interfaces;Optional - Still widely deployed; the last LTS before the modular era
Java 26 is the next feature release, targeted for March 2026 (non-LTS; the next LTS is Java 27 in September 2027). Check the OpenJDK JDK project page for its finalized JEPs.
How Java Support Works
- Feature releases ship every 6 months; each is supported only until the next one unless it’s an LTS.
- LTS releases (8, 11, 17, 21, 25, …) receive years of updates from OpenJDK distributors — Adoptium / Eclipse Temurin, Amazon Corretto, Azul Zulu, Microsoft, Red Hat, and others. Most production systems run the latest LTS.
- Previews & incubators are off by default and require
--enable-preview. They can change or be removed before standardization — don’t ship them to production.
Sources
- OpenJDK JDK projects — per-release JEP lists
- JEP index — every JDK Enhancement Proposal
- endoflife.date/java — support and EOL timelines