Loading...

Evolution of Java

Explore key features and release dates.

JDK Version 1.0

Released: JDK 1.0 is called as OAK, and it is released on 23 Januray, 1996. Codenamed OAK.

Key Features:
Core Language Features (Basic Java Features)
Support for Graphics (AWT Framework)
Support for Creating a Java Applet
Libraries for Input and Output
Libraries for Networking
JDK Version 1.1

Released: JDK 1.1 is released on 19 Januray, 1997.

Key Features:
JDBC (Java Database connectivity)
Inner Classes
Java Beans
RMI (Remote Method Invocation)
Reflection(introspection only)
J2SE Version 1.2

Released: J2SE 1.2 is called as playground and it is released on 8 December, 1998.

Key Features:
Collections Framework
Java String memory map for constants
Just In Time (JIT) compiler
Jar Signer for signing Java ARchive (JAR) files
Policy Tool for granting access to system resources
Java Foundation Classes (JFC) which consists of Swing 1.0, Drag and Drop, and Java 2D class libraries
Java Plug-in
Scrollable result sets, BLOB, CLOB, batch update, user-defined types in JDBC
Audio support in Applets
JDK Version 1.3

Released: J2SE 1.3 is called as Kestrel and it is released on 8 May, 2000.

Key Features:
Java Sound
Jar Indexing
A huge list of enhancements in almost all the java area
JDK Version 1.4

Released: J2SE 1.4 is called as Merlin and it is released on 6 February, 2002.

Key Features:
XML Processing
Java Print Service
Logging API
Java Web Start
JDBC 3.0 API
Assertions
Preferences API
Chained Exception
IPv6 Support
Regular Expressions
Image Input and Output API
JDK Version 5

Released: J2SE 5 is called as Tiger and it is released on 30 September, 2004.

Key Features:
Generics
Enhanced for Loop
Autoboxing/Unboxing
Typesafe Enums
Varargs
Static Import
Metadata (Annotations)
Instrumentation
Generics
Enhanced for Loop
Autoboxing/Unboxing
Typesafe Enums
Varargs
Static Import
Metadata (Annotations)
Instrumentation
JDK Version 6

Released: J2SE 6 is called as Mustang and it is released on 11 December, 2006.

Key Features:
Scripting Language Support
JDBC 4.0 API
Java Compiler API
Pluggable Annotations
Native PKI, Java GSS, Kerberos and LDAP support
Integrated Web Services
Lot more enhancements
JDK Version 7

Released: J2SE 7 is called as Dolphin and it is released on 28 July, 2011.

Key Features:
Strings in switch Statement
Type Inference for Generic Instance Creation
Multiple Exception Handling
Support for Dynamic Languages
Try with Resources
Java nio Package
Binary Literals, underscore in literals
Diamond Syntax
Automatic null Handling
JDK Version 8 LTS

Released: Java 8 was released on 18 March 2014. The code name culture is dropped with Java 8 and so no official code name going forward from Java 8.

Key Features:
Lambda Expressions
Pipelines and Streams
Date and Time API
Default Methods
Type Annotations
Nashhorn JavaScript Engine
Concurrent Accumulators
Parallel operations
PermGen Error Removed
TLS SNI
JDK Version 9

Released: Java 9 is released on September 21, 2017.

Key Features:
Java platform module system
Interface Private Methods
HTTP 2 Client
JShell � REPL Tool
Platform and JVM Logging
Process API Updates
Collection API Updates
Improvements in Stream API
Multi-Release JAR Files
@Deprecated Tag Changes
Stack Walking
Java Docs Updates
Miscellaneous Other Features
JDK Version 10

Released: Java 10 is released on 20 March 2018.

Key Features:
Local Variable Type Inference
Time-Based Release Versioning
Garbage-Collector Interface
Parallel Full GC for G1
Heap Allocation on Alternative Memory Devices
Consolidate the JDK Forest into a Single Repository
Application Class-Data Sharing
Additional Unicode Language-Tag Extensions
Root Certificates
Experimental Java-Based JIT Compiler
Thread-Local Handshakes
Remove the Native-Header Generation Tool
New Added APIs and Options
Removed APIs and Options
JDK Version 11 LTS

Released: Java 11 is released on September 2018.

Key Features:
HTTP Client API
Launch Single-File Programs Without Compilation
String API Changes
Collection.toArray(IntFunction)
Files.readString() and Files.writeString()
Optional.isEmpty()
JDK Version 12

Released: J2SE 12 is released on March 19, 2019.

Key Features:
Collectors.teeing() in Stream API
String API Changes
Files.mismatch(Path, Path)
Compact Number Formatting
Support for Unicode 11
Switch Expressions
JDK Version 13

Released: J2SE 13 is released on September 19, 2019.

Key Features:
Updated Switch Expressions
Include Text Blocks
Support Legacy socket API
JDK Version 14

Released: J2SE 14 is released on March 19, 2020.

Key Features:
Support Event Streaming
Improved NullPointerException
Removal of the Concurrent Mark Sweep (CMS) in the garbage collector
JDK Version 15

Released: J2SE 15 is released on September 15, 2020.

Key Features:
Sealed Classes
Pattern Matching for instanceof
Records
Text Blocks
Hidden Classes
Remove the Nashorn JavaScript Engine
Reimplement the Legacy DatagramSocket API
Disable and Deprecate Biased Locking
Shenandoah: A Low-Pause-Time Garbage Collector
Remove the Solaris and SPARC Ports
Foreign-Memory Access API
Deprecate RMI Activation for Removal
JDK Version 16

Released: J2SE 16 is released on March 16, 2021.

Key Features:
Vector API (Incubator)
Enable C++14 Language Features
Migrate from Mercurial to Git
Migrate to GitHub
ZGC: Concurrent Thread-Stack Processing
Unix-Domain Socket Channels
Alpine Linux Port � not yet stable
Elastic Metaspace
Windows/AArch64 Port
Foreign Linker API (Incubator)
Warnings for Value-Based Classes
Packaging Tool
Foreign-Memory Access API (Third Incubator)
Pattern Matching for instanceof
Records
Strongly Encapsulate JDK Internals by Default
Sealed Classes (Second Preview)
JDK Version 17 LTS

Released: J2SE 17 is released on September 14, 2021.

Key Features:
Restore Always-Strict Floating-Point Semantics
Enhanced Pseudo-Random Number Generators
New macOS Rendering Pipeline
macOS/AArch64 Port
Deprecate the Applet API for Removal
Strongly Encapsulate JDK Internals
Pattern Matching for switch (Preview)
Remove RMI Activation
Sealed Classes
Remove the Experimental AOT and JIT Compiler
Deprecate the Security Manager for Removal
Foreign Function & Memory API (Incubator)
Vector API (Second Incubator)
Context-Specific Deserialization Filters
JDK Version 18

Released: J2SE 18 is released on March 22, 2022.

Key Features:
UTF-8 by Default
Simple Web Server
Code Snippets in Java API Documentation
Reimplement Core Reflection with Method Handles
Vector API (Third Incubator)
Internet-Address Resolution SPI
Foreign Function & Memory API (Second Incubator)
Pattern Matching for switch
Deprecate Finalization for Removal
JDK Version 19

Released: J2SE 19 is released on September 20, 2022.

Key Features:
Record Patterns
Linux/RISC-V Port
Foreign Function & Memory API
Virtual Threads
Vector API (Fourth Incubator)
Pattern Matching for switch
Structured Concurrency (Incubator)
JDK Version 20

Released: J2SE 20 is released on March 21, 2023.

Key Features:
Scoped Values (Incubator)
Record Patterns
Pattern Matching for switch
Foreign Function & Memory API
Virtual Threads
Structured Concurrency (Second Incubator)
Vector API (Fifth Incubator)
JDK Version 21 LTS

Released: J2SE 21 is released on September 19, 2023.

Key Features:
String Templates
Sequenced Collections
Generational ZGC
Record Patterns
Pattern Matching for switch
Foreign Function & Memory API
Unnamed Patterns and Variables
Virtual Threads
Unnamed Classes and Instance Main Methods
Scoped Values
Vector API (Sixth Incubator)
Deprecate the Windows 32-bit x86 Port for Removal
Prepare to Disallow the Dynamic Loading of Agents
Key Encapsulation Mechanism API
Structured Concurrency
JDK Version 22

Released: J2SE 22 is released on March 19, 2024.

Key Features:
Region Pinning for G1
Statements before super(...)
Foreign Function & Memory API
Unnamed Variables & Patterns
Class-File API
Launch Multi-File Source-Code Programs
String Templates
Vector API (Seventh Incubator)
Stream Gatherers
Structured Concurrency
Implicitly Declared Classes and Instance Main Methods
Scoped Values
JDK Version 23

Released: J2SE 23 is released on September 17, 2024.

Key Features:
Primitive Types in Patterns, instanceof, and switch
Class-File API
Markdown Documentation Comments
Vector API (Eighth Incubator)
Stream Gatherers
Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
ZGC: Generational Mode by Default
Module Import Declarations
Implicitly Declared Classes and Instance Main Methods
Structured Concurrency
Scoped Values
Flexible Constructor Bodies
JDK Version 24

Released: J2SE 24 is released on March 18, 2025.

Key Features:
Generational Shenandoah (Experimental)
Compact Object Headers (Experimental) (formerly known as Project Lilliput)
Prepare to Restrict the Use of JNI
Late Barrier Expansion for G1
Key Derivation Function API
Remove the Windows 32-bit x86 Port
Ahead-of-Time Class Loading & Linking
Class-File API
Stream Gatherers
Permanently Disable the Security Manager
Scoped Values
Primitive Types in Patterns, instanceof, and switch
Vector API (Ninth Incubator)
ZGC: Remove the Non-Generational Mode
Synchronize Virtual Threads without Pinning
Flexible Constructor Bodies
Linking Run-Time Images without JMODs
Module Import Declarations
Simple Source Files and Instance Main Methods
Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
Structured Concurrency
Deprecate the 32-bit x86 Port for Removal
JDK Version 25

Released: J2SE 25 is released on September 16, 2025

Key Features:
PEM Encodings of Cryptographic Objects
Remove the 32-bit x86 Port
Structured Concurrency
Scoped Values
Primitive Types in Patterns, instanceof, and switch
Vector API (Tenth Incubator)
JFR CPU-Time Profiling (Experimental)
Key Derivation Function API
Module Import Declarations
Compact Source Files and Instance Main Methods
Flexible Constructor Bodies
Ahead-of-Time Command-Line Ergonomics
Ahead-of-Time Method Profiling
JFR Cooperative Sampling
Compact Object Headers
JFR Method Timing & Tracing
Generational Shenandoah