While JDK 16 is the reference implementation of the standard Java that's set to follow JDK 15, which arrived on September 15. The release schedule proposed, means that JDK 16 will reach its second rampdown phase on January 14, 2021, followed by the release candidates on February 4 and February 18, 2021.
And the next Java upgrade targets support for primitive, sealed, and records classes, along with vector API and ports for Windows on ARM64 and Alpine Linux.
What New Features to expect in JDK 16?
As the final release of JDK 16 is slated for March 16, 2021, the new capabilities expected to arrive with Java 16 include:
- Foreign linker API: Brings pure-Java access to native code, along with the proposed foreign-memory access API, foreign linker API will simplify the error-prone process of binding a native library. It is also intended to replace JNI (Java Native Interface) with superior pure-Java development model, offering C support, which is expected to be flexible enough to accommodate support for other platforms, and foreign functions written in languages such as C++.
- Strong Encapsulation by default for JDK Internals: With the exception of critical internal APIs like misc.Unsafe, users will be able to choose the relaxed strong encapsulation, which has been the default since JDK 9. The goals include improving the security and maintainability of JDK, which as part of Project Jigsaw, will encourage developers to migrate from using internal elements to standard APIs so that developers and end users can be able to update easily to future Java releases.
- Z Garbage Collector thread-stack processing: This include removing thread-stack processing from ZGC safepoints, and making stack processing lazy, concurrent, and incremental; thereby removing all other per-thread root processing from ZGC safepoints and provide a mechanism for other HotSpot VM subsystems to lazily process stacks.
- Elastic Metaspace capability: An elastic metaspace which returns unused HotSpot VM class metadata (metaspace) memory more promptly to the OS, brings about reduction in metaspace footprint and simplifies metaspace code and reduce maintenance costs. While metaspace has had high off-heap memory use issues, the plan calls for replacing the memory allocator with a buddy-based allocation scheme, and provide an algorithm to divide memory into partitions.
Additionally, there is the enablement of C++ 14 language features, to allow using C++ 14 capabilities in JDK C++ source code and specific guidance about which of the features can be used in HotSpot VM code. And the language features used by C++ code in JDK have been limited to C++98/03 language standards through to JDK 15, and as the source code was updated with JDK 11, to support building with newer versions of the C++ standard.
How to Get Started with JDK 16
JDK 16 early-access builds for Linux, Windows, and MacOS is now available at jdk.java.net. You can also join the early adopter program by downloading the beta versions of JDK 16 to give it a spin.
And as JDK 16 is a short-term release, it will be supported for six months. Then, JDK 17, which is due in September 2021, will serve as a long-term support (LTS) release with several years of support. JDK 11 released in September 2018, remains the current LTS release.