Keeping track of JDK 11: Two new JEPs targeted for release
What’s going on with JDK 11? We’re going to take a look at how this version is moving along, including a look at the new JEPs.
Thanks to Java’s new release schedule, it seems like we’re always counting down to a new JDK update. Today, we’re taking a look at what’s in JDK 11.
What’s new to target for JDK 11
JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
Right now, the only other widely adopted stream cipher. RC4, has long been deemed insecure. Currently, the industry consensus holds that ChaCha20-Poly1305 is more secure and it’s seen a fairly wide adoption across TLS implementations as well as other cryptographic protocols. By adopting JEP 329, the JDK will be on par with other cryptographic toolkits and other TLS implementations.
The goal of this JEP is to provide ChaCha20 and ChaCha20-Poly1305 Cipher implementations. These algorithms will be implemented in the SunJCE provider. It will also provide a KeyGenerator implementation that creates keys suitable for ChaCha20 and ChaCha20-Poly1305 algorithms. Additionally, it will provide an AlgorithmParameters implementation for use with the ChaCha20-Poly1305 algorithm.
For more information, head over to the tracking document for JEP 329.
JEP 330: Launch Single-File Source-Code Programs
Single-file programs — where the whole program fits in a single source file — are common in the early stages of learning Java, and when writing small utility programs. In this context, it is pure ceremony to have to compile the program before running it. In addition, a single source file may compile to multiple class files, which adds packaging overhead to the simple goal of “run this program”. It is desirable to be able to run the program directly from source with the java launcher.
For more information, head over to the tracking document for JEP 330.
What’s in JDK 11 so far
- 309: Dynamic Class-File Constants
- 318: Epsilon: An Arbitrarily Low-Overhead Garbage Collector
- 321: HTTP Client (Standard)
- 323: Local-Variable Syntax for Lambda Parameters
- 324: Key Agreement with Curve25519 and Curve448
- 327: Unicode 10
- 328: Flight Recorder
JEP 309: Dynamic Class-File Constants
Summary: Extend the Java class-file format to support a new constant-pool form,CONSTANT_Dynamic. Loading a CONSTANT_Dynamic will delegate creation to a bootstrap method, just as linking an invokedynamic call site delegates linkage to a bootstrap method.
JEP 318: Epsilon: A No-Op Garbage Collector
Summary: Develop a GC that handles memory allocation but does not implement any actual memory reclamation mechanism. Once the available Java heap is exhausted, the JVM will shut down.
JEP 321: HTTP Client (Standard)
JEP 323: Local-Variable Syntax for Lambda Parameters
Summary: Allow var to be used when declaring the formal parameters of implicitly typed lambda expressions.
JEP 324: Key Agreement with Curve25519 and Curve448
Summary: Implement key agreement using Curve25519 and Curve448 as described in RFC 7748.
JEP 327: Unicode 10
JEP 328: Flight Recorder
Summary: Provide a low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM.