Loading...

Evolution of Java

Explore key features and release dates.

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

  • 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
JDK 1.1 is released on 19 Januray, 1997.

  • JDBC (Java Database connectivity)
  • Inner Classes
  • Java Beans
  • RMI (Remote Method Invocation)
  • Reflection(introspection only)
J2SE Version 1.2
J2SE 1.2 is called as playground and it is released on 8 December, 1998.

  • 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
J2SE 1.3 is called as Kestrel and it is released on 8 May, 2000.

  • Java Sound
  • Jar Indexing
  • A huge list of enhancements in almost all the java area
JDK Version 1.4
J2SE 1.4 is called as Merlin and it is released on 6 February, 2002.

  • 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
J2SE 5 is called as Tiger and it is released on 30 September, 2004.

  • 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
J2SE 6 is called as Mustang and it is released on 11 December, 2006.

  • 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
J2SE 7 is called as Dolphin and it is released on 28 July, 2011.

  • 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
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.

  • 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
Java 9 is released on September 21, 2017.

  • 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
Java 10 is released on 20 March 2018.

  • 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
Java 11 is released on September 2018.

  • 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
J2SE 12 is released on March 19, 2019.

  • Collectors.teeing() in Stream API
  • String API Changes
  • Files.mismatch(Path, Path)
  • Compact Number Formatting
  • Support for Unicode 11
  • Switch Expressions
JDK Version 13
J2SE 13 is released on September 19, 2019.

  • Updated Switch Expressions
  • Include Text Blocks
  • Support Legacy socket API
JDK Version 14
J2SE 14 is released on March 19, 2020.

  • Support Event Streaming
  • Improved NullPointerException
  • Removal of the Concurrent Mark Sweep (CMS) in the garbage collector
JDK Version 15
J2SE 15 is released on September 15, 2020.

  • 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
J2SE 16 is released on March 16, 2021.

  • 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
J2SE 17 is released on September 14, 2021.

  • 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
J2SE 18 is released on March 22, 2022.

  • 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
J2SE 19 is released on September 20, 2022.

  • 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
J2SE 20 is released on March 21, 2023.

  • 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
J2SE 21 is released on September 19, 2023.

  • 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
J2SE 22 is released on March 19, 2024.

  • 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
J2SE 23 is released on September 17, 2024.

  • 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
J2SE 24 is released on March 18, 2025.

  • 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
J2SE 25 is released on September 16, 2025

  • 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