Java Versions and Features [Updated upto Java 22]

On this page, we will frequently list the major feature changes in the latest Java release, sequentially. Though we have tried to cover as much information as possible, if you know something we have missed below, please let me know, and we will add that information.

Java 22 Features

Java 22 has been released on March 19, 2024. You can download Java 22 here.

The following features are gone into the second preview.

The Unnamed Classes and Instance Main Methods feature have been revised once again and renamed Implicitly Declared Classes and Instance Main Methods.

Java 22 includes the following JEPs.

  • Region Pinning for G1 [JEP 423]
  • Statements before super(…) (Preview) [JEP 447]
  • Foreign Function & Memory API [JEP 454]
  • Unnamed Variables & Patterns [JEP 456]
  • Class-File API (Preview) [JEP 457]
  • Launch Multi-File Source-Code Programs [JEP 458]
  • String Templates (Second Preview) [JEP 459]
  • Vector API (Seventh Incubator) [JEP 460]
  • Stream Gatherers (Preview) [JEP 461]
  • Structured Concurrency (Second Preview) [JEP 462]
  • Implicitly Declared Classes and Instance Main Methods (Second Preview) [JEP 463]
  • Scoped Values (Second Preview) [JEP 464]

Java 21 Features [LTS]

Java 21 was released on 19-Sep-2023, as the next long-term support (LTS) release of Oracle’s standard Java implementation. Java 21 will have the following 15 features.

Java 20 Features

Java 20 has been released on March 21, 2023. You can download Java 20 here. In this release, the main feature is  “Scoped Values” which is intended to replace thread-local variables, which have several drawbacks.

Java 19 Features

Java 19 has been released on September 20, 2022. You can download Java 19 here.

In this release, the virtual threads, which have been under development for several years within Project Loom and are now finally included as a preview in the JDK. Also, the Foreign Function & Memory API has reached the preview stage after five incubator rounds.

  • Record Patterns (Preview) [JEP-405]
  • Linux/RISC-V Port [JEP-422]
  • Foreign Function & Memory API (Preview) [JEP-424]
  • Virtual Threads (Preview) [JEP-425]
  • Vector API (Fourth Incubator) [JEP-426]
  • Pattern Matching for switch (Third Preview) [JEP-427]
  • Structured Concurrency (Incubator) [JEP-428]

Java 18 Features

Java 18 GA was released on 22 March 2022. It has nine new developer features, including a simple web server and another preview of pattern matching for switch.

The below-listed 14 JEPs are part of Java 18.

  • JEP-400: UTF-8 by Default
  • JEP-408: Simple Web Server
  • JEP-413: Code Snippets in Java API Documentation
  • JEP-416: Reimplement Core Reflection with Method Handles
  • JEP-417: Vector API (Third Incubator)
  • JEP-418: Internet-Address Resolution SPI
  • JEP-419: Foreign Function & Memory API (Second Incubator)
  • JEP-420: Pattern Matching for switch (Second Preview)
  • JEP-421: Deprecate Finalization for Removal

Java 17 Features (LTS)

Java 17 was released on September 14, 2021. Java 17 is an LTS (Long Term Support) release, like Java 11 and Java 8. Spring 6 and Spring boot 3 will have first-class support for Java 17. So it is a good idea to plan for upgrading to Java 17.

The below-listed 14 JEPs are part of Java 17.

  • (JEP-306) Restore Always-Strict Floating-Point Semantics
  • (JEP-356) Enhanced Pseudo-Random Number Generators
  • (JEP-382) New macOS Rendering Pipeline
  • (JEP-391) macOS/AArch64 Port
  • (JEP-398) Deprecate the Applet API for Removal
  • (JEP-403) Strongly Encapsulate JDK Internals
  • (JEP-406) Pattern Matching for switch (Preview)
  • (JEP-407) Remove RMI Activation
  • (JEP-409) Sealed Classes
  • (JEP-410) Remove the Experimental AOT and JIT Compiler
  • (JEP-411) Deprecate the Security Manager for Removal
  • (JEP-412) Foreign Function & Memory API (Incubator)
  • (JEP-414) Vector API (Second Incubator)
  • (JEP-415) Context-Specific Deserialization Filters

Java 16 Features

Java 16 was released on 16 March 20121. It was largely a maintenance release, except it made the Java Records and Pattern matching the standard features of the Java language.

  • JEP 338: Vector API (Incubator)
  • JEP 347: Enable C++14 Language Features
  • JEP 357: Migrate from Mercurial to Git
  • JEP 369: Migrate to GitHub
  • JEP 376: ZGC: Concurrent Thread-Stack Processing
  • JEP 380: Unix-Domain Socket Channels
  • JEP 386: Alpine Linux Port
  • JEP 387: Elastic Metaspace
  • JEP 388: Windows/AArch64 Port
  • JEP 389: Foreign Linker API (Incubator)
  • JEP 390: Warnings for Value-Based Classes
  • JEP 392: Packaging Tool
  • JEP 393: Foreign-Memory Access API (Third Incubator)
  • JEP 394: Pattern Matching for instanceof
  • JEP 395: Records
  • JEP 396: Strongly Encapsulate JDK Internals by Default
  • JEP 397: Sealed Classes (Second Preview)

Java 15 Features

Java 15 was released on 15th Sep’2020. It continues to support various preview features in previous JDK releases; and has also introduced some new features.

Java 14 Features

Java 14 (released on March 17, 2020) is the latest version available for JDK. Let’s see the new features and improvements, it brings for developers and architects.

Java 13 Features

Java 13 (released on September 17, 2019) had fewer developer-specific features. Let’s see the new features and improvements, it brought for developers and architects.

  • JEP 355 – Text Blocks (Preview)
  • JEP 354 – Switch Expressions Enhancements (Preview)
  • JEP 353 – Reimplement the Legacy Socket API
  • JEP 350 – Dynamic CDS Archive
  • JEP 351 – ZGC: Uncommit Unused Memory
  • FileSystems.newFileSystem() Method
  • DOM and SAX Factories with Namespace Support

Java 12 Features

Java 12 was released on March 19, 2019. Let’s see the new features and improvements, it brings for developers and architects.

  • Collectors.teeing() in Stream API
  • String API Changes
  • Files.mismatch(Path, Path)
  • Compact Number Formatting
  • Support for Unicode 11
  • Switch Expressions (Preview)

Java 11 Features (LTS)

Java 11 (released on September 2018) includes many important and useful updates. Let’s see the new features and improvements, it brings for developers and architects.

  • HTTP Client API
  • Launch Single-File Programs Without Compilation
  • String API Changes
  • Collection.toArray(IntFunction)
  • Files.readString() and Files.writeString()
  • Optional.isEmpty()

Java 10 Features

After Java 9 release, Java 10 came very quickly. Unlike its previous release, Java 10 does not have that many exciting features, still, it has a few important updates which will change the way you code, and other future Java versions.

  • JEP 286: Local Variable Type Inference
  • JEP 322: Time-Based Release Versioning
  • JEP 304: Garbage-Collector Interface
  • JEP 307: Parallel Full GC for G1
  • JEP 316: Heap Allocation on Alternative Memory Devices
  • JEP 296: Consolidate the JDK Forest into a Single Repository
  • JEP 310: Application Class-Data Sharing
  • JEP 314: Additional Unicode Language-Tag Extensions
  • JEP 319: Root Certificates
  • JEP 317: Experimental Java-Based JIT Compiler
  • JEP 312: Thread-Local Handshakes
  • JEP 313: Remove the Native-Header Generation Tool
  • New Added APIs and Options
  • Removed APIs and Options

Java 9 Features

Java 9 was made available on September, 2017. The biggest change is the modularization i.e. Java modules.

Some important features/changes in Java 9 are:

Please see the updated release info here.

Java 8 Features

Release Date : March 18, 2014

Code name culture is dropped. Included features were:

  • Lambda expression support in APIs
  • Stream API
  • Functional interface and default methods
  • Optionals
  • Nashorn – JavaScript runtime which allows developers to embed JavaScript code within applications
  • Annotation on Java Types
  • Unsigned Integer Arithmetic
  • Repeating annotations
  • New Date and Time API
  • Statically-linked JNI libraries
  • Launch JavaFX applications from jar files
  • Remove the permanent generation from GC

Java SE 7 Features

Release Date : July 28, 2011

This release was called “Dolphin”. Included features were:

Java SE 6 Features

Release Date : December 11, 2006

This release was called “Mustang”. Sun dropped the “.0” from the version number and the version became Java SE 6. Included features were:

  • Scripting Language Support
  • Performance improvements
  • JAX-WS
  • JDBC 4.0
  • Java Compiler API
  • JAXB 2.0 and StAX parser
  • Pluggable annotations
  • New GC algorithms

J2SE 5 Features

Release Date : September 30, 2004

This release was called “Tiger”. Most of the features, which are asked in java interviews, were added in this release.

The version was also called 5.0 rather than 1.5. Included features are listed down below:

J2SE 1.4 Features

Release Date : February 6, 2002

This release was called “Merlin”. Included features were:

  • assert keyword
  • Regular expressions
  • Exception chaining
  • Internet Protocol version 6 (IPv6) support
  • New I/O; NIO
  • Logging API
  • Image I/O API
  • Integrated XML parser and XSLT processor (JAXP)
  • Integrated security and cryptography extensions (JCE, JSSE, JAAS)
  • Java Web Start
  • Preferences API (java.util.prefs)

J2SE 1.3 Features

Release Date : May 8, 2000

This release was called “Kestrel”. Included features were:

  • HotSpot JVM
  • Java Naming and Directory Interface (JNDI)
  • Java Platform Debugger Architecture (JPDA)
  • JavaSound
  • Synthetic proxy classes

J2SE 1.2 Features

Release Date : December 8, 1998

This release was called “Playground”. This was a major release in terms of the number of classes added (almost tripled the size). “J2SE” term was introduced to distinguish the code platform from J2EE and J2ME. Included features were:

  • strictfp keyword
  • Swing graphical API
  • Sun’s JVM was equipped with a JIT compiler for the first time
  • Java plug-in
  • Collections framework

JDK 1 Features

Release Date : January 23, 1996

This was the initial release and was originally called Oak. This had very unstable APIs and one java web browser named WebRunner.

The first stable version, JDK 1.0.2, was called Java 1.

On February 19, 1997, JDK 1.1 was released having a list of big features such as:

  • AWT event model
  • Inner classes
  • JavaBeans
  • JDBC
  • RMI
  • Reflection supported Introspection only, no modification at runtime was possible.
  • JIT (Just In Time) compiler for Windows

Again, feel free to suggest any java feature in any java version which I missed in the above lists.

Happy Learning !!

Comments are closed for this article!

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.