Java 12 is scheduled for a March release

The countdown to Java 12 has begun: Here’s the list of all the planned new features

Gabriela Motroc
Java 12
© Shutterstock / Vector_drawer

Java 12 is now in the Release Candidate phase, which means that the countdown has begun! Java 12 will be released on 19 March so it’s time to have a look at *all* the planned new features.

Java 12 entered the Release Candidate phase earlier this month,  so it should be smooth sailing from there. We’re one month away from the great unveiling so it’s time to have a look at all the planned new features. 

Java 11 was released in September 2018 but even though we’re still very much excited about the first LTS release in Oracle’s new six-month cycle, that doesn’t mean we shouldn’t be excited about the upcoming release, which brings a lot of interesting features.

Java 12 features

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.

No Raw String Literals  for Java 12

It should be noted that the Raw String Literals feature was pulled back from Java 12.

Nonetheless, the conversation on the feature and its function continues. Just last month, Brian Goetz reignited the discussion on raw string literals with a new message to the mailing list, touching upon a number of topics including process errors made, how other languages deal with raw strings what should be the next steps.

Make sure to check out the message to get all the details.

The Preview Feature mechanism is intended for features for which there is a high confidence that the feature is “done”, and the likelihood that significant changes would be made before making the feature permanent is low. At this time, and after extensive consideration, Jim and I no longer believe this to be the case, and we think letting it preview in its current state would be to the detriment of the language. We’re of course disappointed that this means it will take slightly longer for this feature to make it into the language, but we think that’s the best choice.

 Brian Goetz, Java Language Architect at Oracle 

Are you tired of the six-month release cycle yet?

With only six months between releases, can anybody be surprised that a new Java version will consist entirely of just a few features? And when it does, can anybody be surprised when nobody seems particularly excited by it?

It’s time to revisit an article Dr. Wayne Citrin, CTO and co-founder of JNBridge, LLC wrote one year ago about release fatigue:

Look, I get it: It took three years after Java 8 for Java 9 to be released, people started getting frustrated, and Oracle got some probably-well-deserved heat. But I think that the pendulum has swung too far in the other direction. With a release every six months, we’ll get new releases loaded with minor new features that few are ready for, and that few care about. If the old two-year cycle is too slow, why not relieve release fatigue by splitting the difference and having a one-year cycle?

Read the entire article here

First look at Java 13

We are only a month away from the general availability of Java 12 but it is already time to move forward! The development repositories for Java 13 are now open. On top of that, there are already two JEP candidates:

Summary: Enable Java compilers to use alternate translation strategies, such as invokedynamic, in order to improve the performance of certain JDK methods designated as compiler intrinsic candidates. Specifically, intrinsify the invocation of String::format and Objects::hash.

Goals: Enable JDK developers to (i) tag methods as candidates for compile-time intrinsification, and (ii) describe appropriate alternate translations of intrinsification candidates that conform to the specification of the candidate method.

Summary: Expose JDK Flight Recorder data for continuous monitoring.


  • Provide an API for the continuous consumption of JFR data on disk, both for in-process and out-of-process applications.
  • Record the same set of events as in the, with overhead less than 1% if possible.
  • Event streaming must be able to co-exist with non-streaming recordings, both disk and memory based.

Make sure to follow this thread to keep up with everything related to Java 13!

Gabriela Motroc
Gabriela Motroc was editor of and JAX Magazine. Before working at Software & Support Media Group, she studied International Communication Management at the Hague University of Applied Sciences.

Inline Feedbacks
View all comments