The countdown to Java 12 has begun: Here’s the list of all the planned new features
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
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.
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.
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.
Make G1 mixed collections abortable if they might exceed the pause target.
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
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.
- 349: JFR Event Streaming
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 non-streaming.case, 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!