What is new in Java 16 ?
2 minute read

Introduction

This is an alive post of what will become Java 16, and, as expected, this post will expand and change over time, until the development of Java 16 is frozen in 2020/2021. I am planning to update this post when a new feature (JEP) is targeted for JDK 16, or when there is an important update on an already targeted JEP.

If something is implemented in an incubator module, it is not a permanent feature and it is released to get feedback from developers. API in such a module may change or completely removed (not released in any future JDK release). You need to use --add-modules to use incubator modules.

If something is a preview feature, it is fully specified and implemented, but provided in a release to gather feedback, so it is not a permanent change yet. You need to use --enable-preview to use such features.

Changes

2020/09/20: JEP 387 added. 2020/09/07: First post.

Java 16 Features

The list is taken from the OpenJDK JDK 16 project page.

JEP 338: Vector API (Incubator)

This is the first view of incubator module, jdk.incubator.vector, that provides vector computation (i.e. SIMD) supported by hardware instructions when available (e.g. SSE, AVX) and providing a “graceful degradation” to software implementation when SIMD hardware support is not available.

This feature will not going to provide an auto-vectorization support (i.e. you need to explicitly use the API) and it is going to be supported only on x64 and AArch64 architectures.

JEP 347: Enable C++ 14 Language Features

C++ 14 features will be enabled in JDK source code builds. It basically means the code will be compiled with std=c++14 like options in all platforms (Windows, Linux, macOS, AIX).

JEP 357: Migrate from Mercurial to Git

OpenJDK project source code was kept in Mercurial, it will be moved to Git, and specifically to GitHub (see below).

JEP 369: Migrate to GitHub

Together with JEP 357, all single-repository OpenJDK projects will move from Mercurial to Git hosted at GitHub at https://github.com/openjdk .

JEP 387: Elastic Metaspace

This will improve the use of the memory holding the class-metadata (metaspace). It will reduce the footprint and improve the efficiency of returning unused metaspace to the operating system.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.