概要

Java 27の2回目のリリース候補(RC2)ビルドが8月20日に公開され、9月15日の正式リリースに向けた機能セットが確定した。今回のリリースはLTS(長期サポート)版ではない通常のリリースで、8月6日公開のRC1に続くもの。合計9件のJEP(JDK Enhancement Proposal)が含まれ、うち5件はプレビューまたはインキュベーション機能の再提出となっている。

G1ガベージコレクタの全面デフォルト化

最大の変更点はJEP 523「Make G1 the Default Garbage Collector in All Environments」で、これまでサーバークラスのマシンに限定されていたG1のデフォルト適用を、すべての実行環境に拡大する。JDK 26でG1と他のGC実装とのパフォーマンス差が縮まったことでこの変更が可能になった。すでに-XX:+UseG1GCを指定してG1を利用しているアプリケーションへの影響はなく、-XX:+UseParallelGC-XX:+UseSerialGCで従来のGCを選択することも引き続き可能。

TLSのポスト量子ハイブリッド鍵交換

もう一つの主要な変更がJEP 527で、アプリケーション側のコード変更なしにTLS 1.3向けのポスト量子ハイブリッド鍵交換を追加する。JVMは古典的な楕円曲線鍵交換とNIST FIPS 203で標準化されたML-KEM-768を組み合わせたX25519MLKEM768をアドバタイズするようになる。これは、攻撃者が現在暗号化された通信を収集しておき、将来量子コンピュータで復号する「Harvest Now, Decrypt Later」攻撃への対策となる。

その他の変更点

このほか、64ビットJVMでコンパクトオブジェクトヘッダーをデフォルト化するJEP 534、Flight Recorderのデータから機密情報を自動的に除去するJEP 536も標準機能として含まれており、オブジェクトヘッダーサイズが96ビットから64ビットに縮小され、実運用ワークロードでヒープフットプリントを22%削減するとされている。プレビュー・インキュベーション機能としては、構造化並行性(Structured Concurrency)が7回目のプレビューを迎えるJEP 533、プリミティブ型のパターンマッチングに対応するJEP 532などが含まれる。Vector APIのインキュベーションも継続される。

今後の見通し

Java 27は9月15日に正式リリースされる予定で、LTS版ではないため主に最新機能を試したい開発者向けのリリースとなる。次のLTS版であるJava 29に向けて、今回のプレビュー機能の多くが正式機能化されると見込まれる。