ニュース

Oracle、「Java 24」を発表 ~32bit Windows版は終了、AI・量子計算時代に備えた改善も

24のJDK拡張提案(JEP)を含む非LTSリリース

Oracle、「Java 24」を発表

 米Oracleは3月18日(現地時間)、プログラミング言語「Java」の最新版「Java 24」を発表した。Java開発キット「Oracle JDK 24」の提供も開始されている。

 「Java 24」は非LTSリリースで、サポートは「Java 25」が公開されるまでの6カ月間。最新のJDKには以下の24のJDK拡張提案(JEP)が含まれる。その内7つはプレビュー機能、1つはインキュベーター機能だ。

言語機能

  • JEP 488:Primitive Types in Patterns, instanceof, and switch(Second Preview)
  • JEP 492:Flexible Constructor Bodies (Third Preview)
  • JEP 494:Module Import Declarations (Second Preview)
  • JEP 495:Simple Source Files and Instance Main Methods(Fourth Preview)

ライブラリ

  • JEP 485:Stream Gatherers
  • JEP 484:Class-File API
  • JEP 487:Scoped Values(Fourth Preview)
  • JEP 489:Vector API(Ninth Incubator)
  • JEP 499:Structured Concurrency (Fourth Preview)

 「Stream Gatherer」は、ストリームの中間操作をより柔軟に行えるようにするためのAPI。ストリームは要素のソース、中間操作、終端処理の3つからなるが、遅延計算のために状態を保持できるのは終端処理だけだ。組み込みの中間操作だけで用が足りるならばあまり問題にならないが、そうではない場合はそのための組み込み関数を用意するか、中間操作を拡張するための仕組みを用意する必要があった。「Stream Gatherer」はそのニーズに応える。

 「Class-File API」は、クラスファイルを処理するためのAPI。6カ月という短いリリースサイクルの採用でクラスファイル仕様の変化が頻繁になっていることから、さまざまなフレームワークが独自に行っているクラスファイル処理に代わる、統一した基盤が必要ということで導入されるようだ。

パフォーマンスとランタイム

  • JEP 450:Compact Object Headers (Experimental)
  • JEP 475:Late Barrier Expansion for G1
  • JEP 483:Ahead-of-Time Class Loading & Linking
  • JEP 490:Remove the Non-Generational Mode
  • JEP 491:Synchronize Virtual Threads without Pinning

 パフォーマンスとランタイム関連では、ガベージコレクターや仮想スレッドの同期化が改善される。

セキュリティ ライブラリ

  • JEP 478:Key Derivation Function API (Preview)
  • JEP 496:Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
  • JEP 497:Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

 セキュリティ関連では、量子コンピューティング環境に備えた新機能が導入・テストされる。

JDKバイナリに影響しないソースコード

  • JEP 404:Generational Shenandoah (Experimental)
  • JEP 493:Linking Run-Time Images without JMODs

 JMODファイルを使用せずにカスタムランタイムイメージを作成する「jlink」ツールの採用により「JDK」のサイズを約25%削減できる。

メンテナンスとクリーンアップ

  • JEP 472:Prepare to Restrict the Use of JNI
  • JEP 479:Remove the Windows 32-bit x86 Port
  • JEP 486:Permanently Disable the Security Manager
  • JEP 498:Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
  • JEP 501:Deprecate the 32-bit x86 Port for Removal

 なお、「Java 24」では古い機能の削除、非推奨要素の廃止なども実施される。なかでも、32bit Windows版のソースコードとビルド対応が削除される点には注意したい。32bit x86ポートも非推奨となり、将来的に削除される。