On Friday, Oracle released the JDK 11 first Release Candidate. It includes features such as nest-based access control, dynamic class-file constants, improved Aarch64 intrinsics, and more. The general availability of the final release of JDK 11 is scheduled for next month on the 25th.
Every six months, in June and December, the community initiates the release cycle for the next JDK feature release. The work proceeds over the next three months in three phases: Rampdown Phase One (RDP 1), Rampdown Phase Two (RDP 2), and Release-Candidate Phase (RC).The durations of the phases for JDK 11 are four weeks for RDP 1, three weeks for RDP 2, and five weeks for RC.
What is new in JDK 11 RC 1.0 ?
Nest-based access control
Nest is introduced to allow classes that are a logically part of the same code entity, but are compiled to distinct class files, access each other’s private members.
Dynamic class-file constants
To support a new constant-pool form named, CONSTANT_Dynamic, Java class-file format is extended. Loading this pool will delegate creation to a bootstrap method, just as linking an invokedynamic call site delegates linkage to a bootstrap method.
Improvements in Aarch64 intrinsics
Intrinsics are used to improve performance by leveraging CPU architecture-specific assembly code for a given method, instead of a generic Java code. The existing string and array intrinsics are improved and new intrinsics are implemented for the java.lang.Math package on AArch64 processors:
- sin (sine trigonometric function)
- cos (cosine trigonometric function)
- log (logarithm of a number)
A new garbage collector named, Epsilon is introduced that handles memory allocation but does not implement any actual memory reclamation mechanism. The JVM will shut down once the available Java heap is exhausted.
Java EE and CORBA modules removed
These modules are removed from the Java SE Platform and the JDK. Earlier, they were deprecated in the Java SE 9, indicating their removal in a future release.
HTTP Client (Standard)
The HTTP Client API, introduced as an incubating API in JDK 9 and JDK 10 is standardized. This API received a number of rounds of feedback that resulted in significant improvements. The module name and the package name of the standard API will be java.net.http.
Local-variable syntax for lambda parameters
When declaring the formal parameters of implicitly typed lambda expressions, the use of ‘var’ is allowed. Now the following expression:
(var x, var y) -> x.process(y)
is equivalent to:
(x, y) -> x.process(y)
The existing platform APIs will support version 10.0 of the Unicode Standard. It is supported in the following classes:
- In java.lang: Character and String
- In java.awt.font: NumericShaper
- In java.text: Bidi, BreakIterator, and Normalizer
New Flight Recorder
Flight Recorder, a low-overhead data collection framework is provided for troubleshooting Java applications and the HotSpot JVM.
Addition of ChaCha20 and Poly1305 cryptographic algorithms
An implementation of the ChaCha20 and ChaCha20-Poly1305 ciphers as specified in RFC 7539 are added. ChaCha20 is a relatively new stream cipher that can replace the older, insecure RC4 stream cipher.
The Z Garbage Collector, also known as ZGC, is a scalable low-latency garbage collector. ZGC is a concurrent, single-generation, region-based, NUMA-aware, compacting collector.
To know more about these updates and improvements in detail, head over to its official website, OpenJDK.