Skip to content

Java version history and features

Java has evolved through many versions. Since Java 9, Oracle adopted a time‑based release model with a new version every six months. Long‑Term Support (LTS) versions receive updates for several years.

VersionReleaseTypeKey Features
Java 1.01996First public release.
Java 1.11997Inner classes, JavaBeans, JDBC, RMI.
Java 1.2 (Java 2)1998Swing, Collections framework, JIT compiler.
Java 1.32000HotSpot JVM, RMI improvements.
Java 1.42002Assertions, NIO, logging API, XML support.
Java 52004Generics, enhanced for‑loop, enums, annotations, static import.
Java 62006Scripting (Rhino), improved performance, JDBC 4.0.
Java 72011Try‑with‑resources, NIO2 (WatchService, Path API), fork/join.
Java 82014LTSLambda expressions, Stream API, date/time API (java.time), default methods.
Java 92017Modules (Project Jigsaw), JShell (REPL), private interface methods.
Java 102018Local‑variable type inference (var).
Java 112018LTSHTTP Client (standard), launch single‑file programs, TLS 1.3.
Java 122019Switch expressions (preview), microbenchmark suite.
Java 132019Text blocks (preview), switch expressions enhanced.
Java 142020Records (preview), pattern matching for instanceof (preview).
Java 152020Text blocks (standard), sealed classes (preview).
Java 162021Records (standard), pattern matching for instanceof (standard).
Java 172021LTSSealed classes, pattern matching for switch (preview), enhanced pseudo‑random generators.
Java 182022Simple web server, UTF‑8 by default, code snippets in javadoc.
Java 192022Virtual threads (preview), pattern matching for switch (third preview).
Java 202023Virtual threads (second preview), scoped values.
Java 212023LTSVirtual threads (final), record patterns, pattern matching for switch, sequenced collections.
Java 222024Unnamed variables, statements before super(), string templates (preview).
Java 232024Latest features before JDK 24.
Java 24March 18, 2025Stream Gatherers, Class-File API, Primitive types in patterns (second preview), Quantum-resistant cryptography (ML-KEM, ML-DSA), Vector API (ninth incubator), Structured Concurrency (fourth preview), Scoped Values (fourth preview), Compact Object Headers (experimental), AOT class loading & linking, ZGC non-generational mode removed, Virtual threads no longer pinning, G1 GC barrier expansion [citation:1][citation:4][citation:7].
Java 25September 16, 2025LTSLTS release with continued improvements [citation:6].
Java 26March 17, 2026HTTP/3 client, G1 GC throughput improvements, Primitive types in patterns (fourth preview), Lazy constants (second preview), PEM encoding API (second preview), Structured Concurrency (sixth preview), Vector API (11th incubator), Ahead-of-time object caching with any GC, Final removal of Applet API, Warnings for final field mutation via reflection, Unicode 17.0 support, JDBC 4.5 MR support, Duration min/max constants [citation:2][citation:5][citation:8].
  • Non‑LTS versions: every six months (March and September) – only supported until the next release.
  • LTS versions: every few years (Java 8, 11, 17, 21, 25, …) – receive updates for at least 3 years (Oracle) or longer (OpenJDK distributions).

For new projects, Java 21 or 25 (LTS) are recommended because they are stable and supported long‑term. However, you may also use the latest version (Java 26) to experiment with new features like HTTP/3 support and enhanced AI capabilities.

Java is strongly committed to backward compatibility. Code written for Java 1.2 will generally run on Java 26, with rare exceptions for deprecated features removed after long deprecation cycles.