JDK 16 Now in Second Release Candidate Phase

Version 16 of the Java Development Kit (JDK) is now in the Second Release Candidate Phase (RC2) and on track for an early March release. Mark Reinhold, chief architect of Oracle's Java Platform Group, announced the Java SE Platform reference implementation's status on the JDK mailing list.

Java 16 is not a long-term support (LTS) release, so it will become obsolete in September, when the next LTS release is due.

The Release-Candidate Phase provides a final opportunity to fix bugs that are critical to the success of the release. The OpenJDK website lists the goals of this phase, which includes fixing all Priority 1 (P1) bugs that are new in JDK 10; decommitting from fixing any P1 bugs that are not new in JDK 10 and are not critical to this release, but were previously targeted to this release; and explicitly deferring any P1 bugs that are new in JDK 10 ,"but are either not critical to this release or cannot, for good reason, be fixed in this release."

A P1 bug is, of course, a critical bug that demands an immediate fix. Once the JDK enters the second release phase, all P2-P5 bugs "must be left to future releases, regardless of whether they are in product code, tests, or documentation." The lower priority bug levels range from a major problem that affects some aspects of an ability to operate (P2) to a background issue that can be fixed next time around (P5).

As the OpenJDK website explains it, "P2-P5 bugs are irrelevant to the overall status of the release from this point forward, regardless of whether or not they're targeted, so there's no need to take any specific action on any P2-P5 bugs. You don't need to defer them, either explicitly via the deferral process or even implicitly by adjusting the "Fix Version" field, though you can set the value of that field to tbd_feature or tbd_update if you think that will be useful information later on."

In the RC2 phase, the overall feature set is frozen, and no additional JDK Enhancement Proposals (JEPs) will be targeted to the release.

Java 16 isn't an LTS, but the list of new features is impressive. The Vector API (JEP 338), for example, provides an initial iteration of an incubator module to express vector computations that "reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures, and thus achieve superior performance to equivalent scalar computations." Incubator modules are non-final APIs and/or tools in the hands of developers as they progress towards either finalization or removal in a future release.

The list of new features in this release also includes concurrent thread-stack processing for garbage collection, support for C++ 14 language features, and an "elastic metaspace" capability to more quickly return unused class metadata memory to the OS.

About the Author

John K. Waters is the editor in chief of a number of sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].