on
Java Updates Guide
This page aims to tell and keep a log about updates in Java. Java is adopting a new cadence-based release cycle of the new releases and versions, and if you haven’t caught up yet – this is a good place to start. You can come back after each release to read and know more about it.
Last update: 2020.09.16 *
A word about the new Release Cycle
Now, a Java version arrives every six months, and this speeds up the development of Java. It is a good idea on its own but can confuse people that got used to waiting for a new Java version to be released after years and not six months. We’re also more expected to see new types of features labeled Preview, Incubating, and Experimental and an LTS versions will be released each three years.
Java 9, 21 September 2017
Java 9 features 81 JEPs.
- The Module System (aka Project Jigsaw)
-
Variable Handles – equivalents of
java.util.concurrent.atomic
andsun.misc.Unsafe
operations upon object fields and array elements - JShell – a dedicated REPL
- G1 – make G1 the default garbage collector on 32- and 64-bit server configurations
- Stalk-Walking API – provide an API to access lazily the information in stack traces
- Convenience Factory Methods for Collections – collections can be now initialized using
of()
methods
Java 10, 20 March 2018
Java 10 features 12 JEPs and various small API additions.
- First one to be released under the new release cycle
- Local-Variable Type Inference (var) – enhance the language to extend type inference to declarations of local variables with initializers
- Garbage Collector interface – improve the source code isolation of different GCs by introducing a clean GC interface
- Parallel Full GC for G1 – improve G1 worst-case latencies by making the full GC parallel
- Application Class-Data Sharing (“CDS”) – improve startup and footprint, extend the existing CDS feature to allow application classes to be placed in the shared archive.
- Collectors to be used with unmodifiable collections
Java 11, 25 September 2018
Java 11 is the first LTS release and includes 17 JEPs.
- HTTP Client – standardize the incubated HTTP Client API introduced in Java 9, and updated in Java 10
- Flight Recorder – provide a low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM
- A Scalable Low-Latency GC
- A No-Op Garbage Collector – handles memory allocation but does not implement any actual memory reclamation mechanism
- Java EE and CORBA modules got removed
- Nashorn deprecated
- Addition to
Optional
API,String
API
Java 12, 19 March 2019
Java 12 features 12 JEPs.
- Switch Expressions – can be used as either a statement or an expression
- G1 improvements – abortable mixed collections for G1, promptly return unused committed memory from G1
- Shenandoah – a Low-Pause-Time Garbage Collector
Java 13, 17 September 2019
Java 13 features 5 JEPs.
- Switch Expressions
- Socket API – replace the underlying implementation used by the
java.net.Socket
andjava.net.ServerSocket
APIs - ZGC - support for Linux/AArch64
Java 14, 17 March 2020
Java 12 features 16 JEPs.
- Pattern Matching for
instanceof
- JFR Event Streaming – expose JDK Flight Recorder data for continuous monitoring.
- Records – provide a compact syntax for declaring classes which are transparent holders for shallowly immutable data.
- Helpful NullPointerExceptions – describe precisely which variable was
null
- Switch Expressions
- Remove the Concurrent Mark Sweep (CMS) Garbage Collector
Java 15, 15 September 2020
Java 15 features 14 JEPs. The JEP list is frozen.
- Nashorn removed
- Biased Locking disabled and deprecated
- Text Blocks standardized
- ZGC became standard
- Shenandoah GC became standard
- Sealed classes/ interfaces – restrict which other classes or interfaces may extend or implement them, preview
- Hidden Classes – classes that cannot be used directly by the bytecode of other classes
- DatagramSocket API – replace the implementations of the
java.net.DatagramSocket
andjava.net.MulticastSocket
APIs - Records, preview
- Pattern Matching for
instanceof
, preview - Foreign-Memory Access API – allow Java programs to safely and efficiently access foreign memory outside of the Java heap
Java 16,
Java 16 features x JEPs.
Migrate the OpenJDK Community’s source code repositories to [Git.](https://github.com/openjdk/ and Elastic meta space.
More details on https://javaalmanac.io/, collection of information about the history and future of Java.