Blog archive

Popular Previews and Incubating Features: Java 19 Now GA

Oracle today announced the general availability of version 19 of the Java Development Kit (JDK 19), and though it's not a long-term support (LTS) release, the latest version of the reference implementation of the Java SE platform comes with a bundle of previews and incubating features that make this short-term release well worth a look.

On schedule with the accelerated, six-month release cadence Oracle announced in 2017, JDK 19 includes seven JEPs (JDK Enhancement Proposals), only one of which is final. The list includes:

JEPs are similar to the JSRs (Java Specification Requests) of the Java Community Process (JCP), but they don't replace them. JCP approval is still required for changes in the Java API and/or language.

I talked with Georges Saab, senior vice president of development in Oracle's Java Platform group and chair of the OpenJDK Governing Board about this release. The faster release cadence is almost universally praised, and I understand that you can't release a ton of enhancements every six months, but I had to ask, do four previews and two incubating features justify even a short-term release?

"It's in keeping with the fact that you don't get these big-bang releases that you used to get," Georges Saab told me during a Zoom call. "Releases that you'd have to live with for years and years. You might look at a particular releases and find that maybe there's not that much there. But when you look at this body of work over multiple releases, you see a kind of story arc that makes sense. You see a throughput of features you get access to, faster, and which, because of the preview, you've been able to provide feedback on."

That story arc is evident in this release. You could even say that the JEPs are essentially chapters in longer "narratives," such as OpenJDK's Project Amber. The goal of that project is "to explore and incubate smaller, productivity-oriented Java language features that have been accepted as candidate JEPs." Two of the previews in this release—Record Patterns and Pattern Matching for switch—aim to deliver language improvements for Amber.

Project Panama gets two chapters with the preview of Foreign Function and Memory API and the fourth incubator version of Vector API. Panama is all about improving and enriching the connections between the Java virtual machine and well-defined non-Java APIs, including many interfaces commonly used by C programmers.

Project Loom also gets two chapters with the previews of Virtual Threads and Structured Concurrency. The main goal of Loom is to support a high-throughput, lightweight concurrency model in Java by exploring and incubating JVM features for the implementation of lightweight, user-mode threads or fibers—thus the project's name.

The seventh JEP in this release, Linux/RISC-V Port, "sets the stage" for easier Linux/RISC-V implementations by integrating this port into the JDK main-line repository.

Another OpenJDK project to which features will be added over multiple releases, Project Valhalla, was left out of this episode. (Call it a cliffhanger.) Valhalla is focused on augmenting the Java object model with value objects and user-defined primitives, combining the abstractions of object-oriented programming with the performance characteristics of simple primitives.

This small-yet-potentially-mighty release got the nod from IDC analyst Arnal Dayaratna. "Java developers are increasingly seeking tools to help them efficiently build highly functional applications for deployment in the cloud, on-premises, and in hybrid environments," he said in a statement. "The enhancements in Java 19 deliver on these requirements and illustrate how the Java ecosystem is well-positioned to meet the current and future needs of developers and enterprises."

Posted by John K. Waters on September 20, 2022