OpenJDKプロジェクトは9月15日(米国時間)、Java開発ツールキットの最新版であるOpenJDK 15をリリースした。JavaおよびJDK(Java Development Kit)の開発は、2017年9月にリリースされたJava 9以降、OpenJDKプロジェクトによって6カ月ごとに新バージョンをリリースする方式が採用されている。OpenJDK 15はJava 15のオープンソース実装であり、この成果物をベースにしてOracleをはじめとする各ディストリビューターよりJava 15対応の実行環境および開発ツールキットが提供される。

OpenJDK 15の詳細な仕様は、OpenJDKプロジェクトの次のページから参照することができる。

  • OpenJDK

    OpenJDK

新機能としては、まずこれまでプレビュー扱いだった2つの新しいガーベジコレクタ「ZGC」と「Shenandoah GC」が正式版に昇格された点に注目したい。ZGCは数TBオーダーの巨大なヒープサイズも対応したスケーラブルかつ低レイテンシであることが特徴のGCであり、Java 11より試験的に搭載されていたもの。Shenandoah GCはGCによるアプリケーションの停止時間が極めて小さいという特徴をもったGCで、Red Hatによって開発され、こちらはJava 12で試験的に導入された。これまでは、これらのGCを有効化するためにはコマンドラインオプションで「-XX:+UnlockExperimentalVMOptions」の指定が必要だったが、正式版となったJDK 15以降はこのオプションが不要になる。

言語機能の大きな変更点としては、改行を含んだ文字列リテラルを扱うことができる「テキストブロック」や、他のクラスのバイトコードから直接使用できないクラスを定義可能な「Hidden Classes」などが挙げられる。テキストブロックはJava 13/14でプレビュー版が搭載されていたが、Java 15で正式版となった。

最近のJavaのアップデートでは、前述のGCやテキストブロックのように、影響の大きい新機能はまずプレビュー版として採用し、フィードバックを受けて修正を行った上で正式版に昇格するという方針が取られている。OpenJDK 15では、データの入れ物となるクラスを簡単に実装するための「Records」や、instanceofにおけるパターンマッチング、Javaヒープ外の外部メモリに安全にアクセスするための「Foreign-Memory Access API」、継承/実装できる対象を制限したクラス/インタフェースを定義できる「Sealed Classes」などが、プレビュー版として搭載された(Sealed Classes以外はJDK 14に続く2度目のプレビュー)。

従来のプログラムとの非互換性が懸念される変更としては、SPARCおよびx86_64版Solarisのサポートが廃止された点や、非推奨に指定されていたJavaScriptエンジンのNashornが正式に削除された点、RMI(Remote Method Invocation)オブジェクトの起動をサポートするRMI Activationが"削除予定の非推奨"(Deprecate for Removal)に指定された点、HotSpot VMの最適化手法であるBiased Lockingが非推奨に指定された点などが挙げられる。また、DatagramSocket APIが最新の実装に置き換えられており、これもごく一部のプログラムには影響を与える可能性があるという。

そのほかの詳しい仕様は、前述のOpenJDKのページや、下記のリリースノートを参照していただきたい。