「Java 16」が登場

 米Oracleは3月16日(米国時間)、「Java 16」(「Oracle JDK 16」)の一般公開(GA)を発表した。Oracleは半年に1度、JavaをリリースしておりJava 16は2020年9月に公開されたJava 15に続くメジャーリリース。

 JDK 16はJava 16のリファレンス実装となり、17の新機能が加わった。JDK 14で導入されたnstanceofを使うパターンマッチング(JEP 394)、レコード(JEP 395)が本バージョンでは正式となった。開発者の生産性を改善するツールとして、JDK 14でインキュベーションツールとして導入したPackaging Toolが加わった(JEP 392)。レガシーのJavaFX javapackagerツールをベースとするjpackageツールで、Javaアプリケーションをパッケージできる。言語ではこのほか、他のクラスやインターフェイスが拡張したり実装できないようにするSealedクラスとインターフェイスが、セカンドプレビューとなった(JEP 397)。

 Javaで複雑なベクターアルゴリズムを作成できるVector APIであるdk.incubator.vectorモジュールをインキュベーションとして導入した(JEP 338)。ランタイムでコンパイルすることでベクター命令を最適化するベクター演算を作成できる。インキュベーション段階の機能としてはこのほか、静的型付けのピュアJavaがネイティブコードにアクセスするForeign Linker API(JEP 389)も導入したほか、Foreign Memory Access APIは3回目のインキュベーションとなった。メモリ管理も強化し、使われていないmetaspaceなどHotSpotのクラスメタデータメモリをOSに戻すことでフットプリントを削減するElastic Metaspace(JEP 387)が加わった。ZGC(Z Garbage Collector)スレッドスタック処理をsafepointからconcurrentフェイズに移行(JEP 376)、concurrentスタック処理におけるボトルネックを解消するとしている。

 OpenJDKでは、C++14言語機能をJDK++ソースコードで使えるようになった(JEP 347)。OpenJDK CommunityのソースコードをMercurialからGitにマイグレーションし(JEP 357)、OpenJDK CommunityのGitリポジトリをGitHubに移行させた(JEP 369)。

 このほかにも多数の機能が強化されている。対応プラットフォームも拡大し、Alpine Linuxポート、Windows/Aarch64ポートが加わった。

 JDK 16はクロスパス例外付きのGPL v2で公開されている。Oracleの商用ビルドはOracle Technology Networkより入手できる。

Java
https://www.oracle.com/java/
OpenJDK
https://openjdk.java.net