Java Versions

Java Versions

A Java version is a specific release of the Java platform, distributed as a Java Development Kit (JDK). Each version introduces language features, API additions, performance improvements, and security fixes. Oracle and the OpenJDK project ship a new release every six months, with Long-Term Support (LTS) releases every two years. 

Java Release Cadence

Since Java 10, the OpenJDK project follows a predictable six-month release cycle. LTS releases receive extended support and are the standard choice for production deployments. 

ReleaseDateLTSFeatures
Java 26March 2026NoHTTP/3 for the HTTP Client API (JEP 517), Remove the Applet API (JEP 504), Ahead-of-Time Object Caching with Any GC (JEP 516), G1 GC Improve Throughput by Reducing Synchronization (JEP 522), Prepare to Make Final Mean Final (JEP 500)
Java 25September 2025 YesScoped Values (JEP 506), Compact Source Files and Instance Main Methods (JEP 512), Module Import Declarations (JEP 511), Flexible Constructor Bodies (JEP 513), Ahead-of-Time Method Profiling (JEP 515), Compact Object Headers (JEP 519), Key Derivation Function API (JEP 510), Remove the 32-bit x86 Port (JEP 503)
Java 24March 2025NoStream Gatherers (JEP 485), Class-File API (JEP 484), Ahead-of-Time Class Loading and Linking (JEP 483), Synchronize Virtual Threads without Pinning (JEP 491), Quantum-Resistant Module-Lattice KEM (JEP 496) and DSA (JEP 497)
Java 23September 2024NoZGC Generational Mode by Default (JEP 474), Markdown Documentation Comments (JEP 467), Deprecate sun.misc.Unsafe Memory-Access Methods (JEP 471)
Java 22March 2024 NoForeign Function and Memory API (JEP 454), Unnamed Variables and Patterns (JEP 456), Launch Multi-File Source-Code Programs (JEP 458), Region Pinning for G1 (JEP 423)
Java 21September 2023YesVirtual Threads (JEP 444), Pattern Matching for switch (JEP 441), Record Patterns (JEP 440), Sequenced Collections (JEP 431), Generational ZGC (JEP 439)
Java 17September 2021YesSealed Classes (JEP 409), Strongly Encapsulate JDK Internals (JEP 403), Enhanced Pseudo-Random Number Generators (JEP 356), New macOS Rendering Pipeline (JEP 382), Remove RMI Activation (JEP 407)
Java 11September 2018YesHTTP Client (JEP 321), Local Variable Syntax for Lambda Parameters (JEP 323), Flight Recorder (JEP 328), TLS 1.3 (JEP 332), Single Source File Launch (JEP 330), Remove Java EE and CORBA Modules (JEP 320)
Java 8March 2014YesLambda Expressions (JSR 335), Streams (JEP 107), Date and Time API (JSR 310), Default Methods in Interfaces (JSR 335)

Non-LTS releases deliver features incrementally. LTS releases consolidate those features into a stable, supported baseline. 

downloads-swoosh

Download the Latest Java Version

How to Check Your Java Version 

java –version 

Output format: openjdk 25 build 12 or 1.8.0_421 (Java 8 notation). The –version flag works on Java 9+. For Java 8, use java -version (single hyphen). 

Java Version Numbering 

Java versions follow a simple numbering scheme since Java 9: 

  • Major version number: 9, 10, 11, … 25 (increments every six months) 
  • LTS designation: Applied to releases every two years (11, 17, 21, 25) 

Before Java 9, versions used a 1.x scheme: Java 8 was 1.8, Java 7 was 1.7, and so on. 

LTS vs. Non-LTS Releases 

Long-Term Support (LTS) releases are the foundation for production systems. They receive security patches, bug fixes, and backports for years after their initial release. Non-LTS releases introduce new features that stabilize by the next LTS. 

LTSNon-LTS
Support DurationMultiple years Six months (until next release) 
Security PatchesYes, for full lifecycle Only until next release 
Production Use Recommended Early access to new features 
Examples Java 8, Java 11, Java 17, Java 21, Java 25 Java 26, Java 24, Java 23, Java 22, Java 18, Java 19, Java 20 

Key Java LTS Releases in Detail 

Java 8 (March 2014) 

The most widely deployed Java version. Still in production at many enterprises. 

  • Lambda Expressions (JSR 335): Functional programming with concise syntax for single-method interfaces 
  • Streams API (JEP 107): Functional-style operations on collections (filter, map, reduce) 
  • Date and Time API (JSR 310): java.time package replacing java.util.Date and java.util.Calendar 
  • Default Methods (JSR 335): Method bodies in interfaces for backwards-compatible API evolution 

Java 11 (September 2018) 

First LTS after the move to six-month releases. Removed Java EE modules (now Jakarta EE) and CORBA. 

  • HTTP Client (JEP 321): Modern HTTP/2 and WebSocket client replacing HttpURLConnection 
  • Local Variable Syntax for Lambdas (JEP 323): var in lambda parameters 
  • Flight Recorder (JEP 328): Low-overhead event-based profiling framework (previously commercial) 
  • Single Source File Launch (JEP 330): Run .java files directly without explicit compilation 
  • TLS 1.3 (JEP 332): Support for the TLS 1.3 protocol 

Java 17 (September 2021) 

The second modern LTS. Strong encapsulation of JDK internals broke applications relying on reflection into JDK classes. 

  • Sealed Classes (JEP 409): Restrict which classes can extend or implement a given type 
  • Strong Encapsulation of JDK Internals (JEP 403): –illegal-access=permit removed; reflective access to JDK internals blocked by default 
  • Enhanced Pseudo-Random Number Generators (JEP 356): New interfaces and implementations for PRNG algorithms 
  • Remove RMI Activation (JEP 407): RMI Activation mechanism removed (RMI registry remains) 
  • New macOS Rendering Pipeline (JEP 382): Apple Metal-based rendering for macOS 

Java 21 (September 2023) 

The current widely-adopted LTS. Virtual Threads are the headline feature, enabling millions of concurrent threads without platform thread overhead. 

  • Virtual Threads (JEP 444): Lightweight threads managed by the JVM, not the OS. Designed for high-throughput I/O-bound workloads 
  • Pattern Matching for switch (JEP 441): Type patterns and guarded patterns in switch expressions and statements 
  • Record Patterns (JEP 440): Decompose record values in pattern matching 
  • Sequenced Collections (JEP 431): New interfaces SequencedCollection, SequencedSet, and SequencedMap for collections with a defined encounter order 
  • Generational ZGC (JEP 439): Generational mode for Z Garbage Collector, improving throughput for short-lived objects 

Java 25 (September 2025) 

The latest LTS release. 

  • Scoped Values (JEP 506): Immutable, inheritable per-thread data, replacing ThreadLocal for structured concurrency 
  • Compact Source Files and Instance Main Methods (JEP 512): Simplified entry-point declarations; static and String[] args no longer required for main 
  • Module Import Declarations (JEP 511): import module java.base imports all packages in a module 
  • Flexible Constructor Bodies (JEP 513): Statements before super() calls in constructors 
  • Compact Object Headers (JEP 519): Reduced object header size for improved memory density 
  • Key Derivation Function API (JEP 510): Standard API for KDF algorithms 
  • Remove the 32-bit x86 Port (JEP 503): 32-bit x86 support removed from the JDK 

Why Upgrade Java Versions 

Older Java versions stop receiving security patches. Running an unsupported JDK in production exposes your organization to known vulnerabilities with no vendor fixes. 

ConcernReason
SecurityEOL versions receive no CVE patches. Known exploits accumulate.
PerformanceEach release brings GC improvements (ZGC, Shenandoah, G1 enhancements), JIT optimizations, and memory efficiency gains. 
Language FeaturesModern Java (Records, Pattern Matching, Virtual Threads) reduces boilerplate and improves readability. 
Ecosystem SupportFrameworks (Spring Boot, Jakarta EE, Quarkus) drop support for older JDKs. Libraries follow. 
ComplianceRegulations and enterprise policies often mandate supported software with active security patches. 

How Azul Supports Java Versions 

Azul Systems provides certified OpenJDK builds under the Azul Zulu product line, with commercial support for production deployments. 

Azul Zulu JDK is a TCK-certified build of OpenJDK available for Linux, Windows, macOS, Docker, Kubernetes, and cloud marketplaces (AWS, Azure, GCP). 

Supported Java Versions 

Azul supports all current and recent LTS releases, plus select non-LTS versions: 

Java VersionAzul Zulu Support
Java 26Available at GA. Support until next release.
Java 25 (LTS)Full, Extended, and Lifetime Support phases.
Java 24Support until next release.
Java 23Support until next release.
Java 21 (LTS)Full, Extended, and Lifetime Support phases.
Java 17 (LTS)Full, Extended, and Lifetime Support phases.
Java 11 (LTS)Full, Extended, and Lifetime Support phases.
Java 8 (LTS)Full, Extended, and Lifetime Support phases.

What Azul Provides 

  • Certified OpenJDK builds: TCK-tested binaries for Intel x64, ARM64, POWER, s390x, and RISC-V 
  • Security patches: Backported to all supported versions, not just the latest LTS 
  • Quarterly critical patch updates: Aligned with Oracle Critical Patch Updates 
  • Azul Zulu Enterprise: Commercial support with SLAs, indemnification, and FIPS 140-2 compliant builds 
  • Migration tooling: Assessment tools and professional services for upgrading from older JDK versions