Java 13 Enters Rampdown Phase
- By John K. Waters
Java 13, the upcoming update of the reference implementation of the Java SE Platform, has entered the Rampdown Phase, which means the overall feature set is frozen and no further JDK Enhancement Proposals (JEPs) will be targeted for this release.
The final list of those features includes:
- Dynamic CDS Archives (JEP 350):
Introduced in JDK 5, class-data sharing (CDS) allows a set of classes to be pre-processed into a shared archive file that can be memory-mapped at runtime to reduce startup time. It can also reduce dynamic memory footprint when multiple JVMs share the same archive file. This feature extends application class-data sharing to allow the dynamic archiving of classes at the end of Java application execution. The archived classes will include all loaded application classes and library classes that are not present in the default, base-layer CDS archive.
- ZGC: Uncommit Unused Memory (JEP 351):
This JEP will enable the Z Garbage Collector (ZGC) to return unused heap memory to the operating system. Other GCs in HotSpot, such as G1 and Shenandoah, already provide this capability. But it's increasingly needed in things like container environments, where resources are paid by use; environments where an application might be idle for long periods of time and is sharing or competing for resources with many other applications; and among apps that have very different heap space requirements during its execution.
- Reimplement the Legacy Socket API (JEP 353):
This JEP replaces the underlying implementation used by the java.net.Socket and java.net.ServerSocket APIs with a simpler and more modern implementation that is easy to maintain and debug. The new implementation is designed to be easy to adapt to work with user-mode threads, a.k.a. fibers, currently being explored in Project Loom.
- Switch Expressions (Preview) (JEP 354):
This preview language feature, which extends the switch statement so that it can be used as a statement or an expression, and both forms can use a "traditional" or "simplified" scoping and control flow behavior, was originally proposed in 2017 and offered as a preview feature in Java 12 (JEP 325). This JEP makes one change: to yield a value from a switch expression, the break with value statement is dropped in favor of a yield statement.
- Text Blocks (Preview) (JEP 355):
Another preview language feature, this JEP is "a follow-on effort to explorations begun in JEP 326 (Raw String Literals), which was pulled back from the Java 12 release. Raw string literals can span multiple lines of source code and do not interpret escape sequences. JEP 355 proposes adding text blocks to the Java language. A text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired.
This Rampdown Phase is actually the first of two (RDP1 and RDP2). Each successive phase narrows the set of bugs examined, and "subjects actions taken on those bugs to an increasingly-higher level of review," the JEP 3 Web page explains. "This ensures that, in each phase, we fix the bugs that need to be fixed at that time. It also ensures that we understand why we're not fixing some bugs that perhaps ought to be fixed but, for good reason, are better left to a future release." The two RDPs are followed by the Release Candidate Phase (RC).
Java 12, which went GA in March, was the third release under the new six-month release cadence. The accelerated cadence, announced in 2017, calls for a feature release every six months, update releases every quarter and a Long-Term Support (LTS) update release every three years (or once every six versions). The next LTS release will be Java 17, which is scheduled for release in September 2021.
"The faster release schedule is about getting new functionality into the hands of developers quickly," Georges Saab, VP of Java Platform Group at Oracle, told ADTmag in an earlier interview. "It's about providing incremental changes that are less disruptive for developers, that continue to evolve and improve the platform and that keep Java relevant."
Because Java 13 is not an LTS release, its eligibility for free support from Oracle ends six months after its release; so far, no other vendors have stepped up to provide support after that.
JDK 13 is expected to enter RDP 2 in July, and the final version is scheduled for release on Sept. 17.
John K. Waters is the editor in chief of a number of Converge360.com 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].