General release is closer than it seems

JDK 12 enters Rampdown Phase Two

JAX Editorial Team
© Shutterstock / Makstorm (modified)

JDK 12 entered Rampdown Phase Two which basically means that the lineup is set – JDK 12 is locked in with 8 features, however, there are some fixes introduced since Phase One. The general release is due in March.

More than a month ago, JDK 12 entered Rampdown Phase One which basically means that the overall feature set is frozen and no further JEPs will be targeted to this release.

Last week, we entered Rampdown Phase Two. The feature set is still frozen, however, the stabilization repository, jdk/jdk12, is open to select bug fixes and, with approval, late enhancements.

Here are the fixes introduced since Phase One:

The schedule for JDK 12 is as follows:

2018/12/13          Rampdown Phase One (fork from main line)
2019/01/17          Rampdown Phase Two
2019/02/07         Release-Candidate Phase
2019/03/19         General Availability


Update December 14, 2018

JDK 12 is certain to have 8 features and one that is proposed to get dropped from the JDK. Let’s have a quick look at the features list.

JDK 12 features

JEP proposed to drop from JDK 12

326: Raw String Literals (Preview)  — Review ends: 2018/12/18

Add raw string literals to the Java programming language. A raw string literal can span multiple lines of source code and does not interpret escape sequences, such as \n, or Unicode escapes, of the form \uXXXX. This will be a preview language feature.

JEPs targeted to JDK 12

189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

Add a new garbage collection (GC) algorithm named Shenandoah which reduces GC pause times by doing evacuation work concurrently with the running Java threads. Pause times with Shenandoah are independent of heap size, meaning you will have the same consistent pause times whether your heap is 200 MB or 200 GB.

230: Microbenchmark Suite

Add a basic suite of microbenchmarks to the JDK source code, and make it easy for developers to run existing microbenchmarks and create new ones.

325: Switch Expressions (Preview)

Extend the switch statement so that it can be used as either a statement or an expression, and that both forms can use either a “traditional” or “simplified” scoping and control flow behavior. These changes will simplify everyday coding, and also prepare the way for the use of pattern matching (JEP 305) in switch. This will be a preview language feature.

334: JVM Constants API

Introduce an API to model nominal descriptions of key class-file and run-time artifacts, in particular constants that are loadable from the constant pool.

340: One AArch64 Port, Not Two

Remove all of the sources related to the arm64 port while retaining the 32-bit ARM port and the 64-bit aarch64 port.

341: Default CDS Archives

Enhance the JDK build process to generate a class data-sharing (CDS) archive, using the default class list, on 64-bit platforms.

344: Abortable Mixed Collections for G1

Make G1 mixed collections abortable if they might exceed the pause target.

346: Promptly Return Unused Committed Memory from G1

Enhance the G1 garbage collector to automatically return Java heap memory to the operating system when idle.