Foojay Today

Highlights of New JEPs in Java 16

March 16, 2021

The JDK Enhancement Proposal (or JEP) is a community process for collecting proposals for enhancements to the OpenJDK.

Java 16, released today, incorporates the JEPs below:

JEPNameSummary
338Vector API (Incubator)Provide an initial iteration of an incubator modulejdk.incubator.vector, to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations.
347Enable C++14 Language FeaturesAllow the use of C++14 language features in JDK C++ source code, and give specific guidance about which of those features may be used in HotSpot code.
357Migrate from Mercurial to GitMigrate the OpenJDK Community's source code repositories from Mercurial (hg) to Git.
369Migrate to GitHubHost the OpenJDK Community's Git repositories on GitHub. In concert with JEP 357 (Migrate from Mercurial to Git), this would migrate all single-repository OpenJDK Projects to GitHub, including both JDK feature releases and JDK update releases for versions 11 and later.
376Concurrent Thread-Stack ProcessingMove ZGC thread-stack processing from safepoints to a concurrent phase.
380Unix-Domain Socket ChannelsAdd Unix-domain (AF_UNIX) socket support to the socket channel and server-socket channel APIs in the java.nio.channels package. Extend the inherited channel mechanism to support Unix-domain socket channels and server socket channels.
386Alpine Linux PortPort the JDK to Alpine Linux, and to other Linux distributions that use musl as their primary C library, on both the x64 and AArch64 architectures,
387Elastic MetaspaceReturn unused HotSpot class-metadata (i.e., metaspace) memory to the operating system more promptly, reduce metaspace footprint, and simplify the metaspace code in order to reduce maintenance costs.
388Windows/AArch64 PortPort the JDK to Windows/AArch64.
389Foreign Linker API (Incubator)Introduce an API that offers statically-typed, pure-Java access to native code. This API, together with the Foreign-Memory API (JEP 393), will considerably simplify the otherwise error-prone process of binding to a native library.
390Warnings for Value-Based ClassesDesignate the primitive wrapper classes as value-based and deprecate their constructors for removal, prompting new deprecation warnings. Provide warnings about improper attempts to synchronize on instances of any value-based classes in the Java Platform.
392Packaging ToolProvide the jpackage tool, for packaging self-contained Java applications.
393Foreign-Memory Access API (Third Incubator)Introduce an API to allow Java programs to safely and efficiently access foreign memory outside of the Java heap.
394Pattern Matching for instanceofEnhance the Java programming language with pattern matching for theinstanceof operator. Pattern matching allows common logic in a program, namely the conditional extraction of components from objects, to be expressed more concisely and safely.
395RecordsEnhance the Java programming language with records, which are classes that act as transparent carriers for immutable data. Records can be thought of as nominal tuples.
396Strongly Encapsulate JDK Internals by DefaultStrongly encapsulate all internal elements of the JDK by default, except for critical internal APIs such as sun.misc.Unsafe. Allow end users to choose the relaxed strong encapsulation that has been the default since JDK 9.
397Sealed Classes (Second Preview)Enhance the Java programming language with sealed classes and interfaces. Sealed classes and interfaces restrict which other classes or interfaces may extend or implement them.

Tip: For a full list of fixes in Java 16, go here on Foojay.io.

Author(s)

  • Geertjan Wielenga

    Geertjan is Senior Director of Open Source Projects at Azul and Apache NetBeans PMC Chair.

Comments (0)

Your email address will not be published. Required fields are marked *

Highlight your code snippets using [code lang="language name"] shortcode. Just insert your code between opening and closing tag: [code lang="java"] code [/code]. Or specify another language.

Save my name, email, and website in this browser for the next time I comment.

Subscribe to foojay updates:

https://foojay.io/feed/
Copied to the clipboard