Java 24正式リリース。HotSpot JVMやガベージコレクタの改善による性能向上、32ビット版Windowsが削除など
オラクルはJavaの最新バージョン「Java 24」正式版をリリースしました。
Java 24 is now available! #Java24 #JDK24 #OpenJDK
— Java (@java) March 18, 2025
Download Now: https://t.co/YKbyuI8jqk
Release notes: https://t.co/oD8lz3WtKS
API Javadoc: https://t.co/TY657tt68K
Features: https://t.co/djeYFvWLCT
Inside Java on JDK 24: https://t.co/XaGfE2ytmx pic.twitter.com/ODsNjFNEce
Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるバージョンアップが行われ、その中の1つのバージョンが2年毎に長期サポート(LTS:Long Term Support)版に指定されます。
現時点で最新のLTS版は2023年9月にリリースされたJava 21です。
今回リリースされたJava 24はLTS版ではないため、システム開発など長期に安定したJavaのバージョンを選択したい場合には、Java 21やその前のLTS版であるJava 17など、これまでLTS版として指定されたバージョンを選択するべきでしょう。
次のLTS版は今年(2025年)9月にリリース予定のJava 25になる見通しです。
Java 24の新機能
Java 24には24の新機能などが組み込まれました。主なものを以下に紹介します。
実験的実装として加わった「JEP 404:Generational Shenandoah (Experimental)」は、実行中に多くのガベージコレクションを行うことで一時停止時間を短縮する低一時停止時間ガベージコレクターのShenandoahガベージコレクタに対して、世代別コレクション機能を強化することで、持続的なスループット、負荷スパイク耐性、およびメモリ利用率を向上させるというもの。
もう1つ実験的実装として加わった「JEP450:Compact Object Headers (Experimental)」は、HotSpot JVMのオブジェクトヘッダーのサイズを64ビットアーキテクチャ上で96ビット~128ビットから64ビットに縮小することでヒープサイズを縮小し、デプロイ密度を向上させ、データローカリティを高めるものです。
パフォーマンス関係では、「JEP 475:Late Barrier Expansion for G1」でG1ガベージコレクターのバリアの実装を簡素化し、バリア処理をC2 JITのコンパイルパイプラインの初期段階ではなくプラットフォーム非依存最適化やレジスタ割り当ての後に実行することで、C2 JITによって生成されたコードの効率性、理解しやすさ、回復性、品質を向上させています。
「JEP 483:Ahead-of-Time Class Loading & Linking」では、HotSpot JVMが起動した際に、アプリケーションのクラスをロードおよびリンク済みの状態で即座に利用できるようにすることで、起動にかかる時間を短縮します。
「JEP 490:ZGC: Remove the Non-Generational Mode」では、Z Garbage Collector (ZGC) の非世代別モードを削除し、今後のメンテナンスを容易にしています。
また「JEP 479:Remove the Windows 32-bit x86 Port」と「JEP 501Deprecate the 32-bit x86 Port for Removal」でWindowsを含む32ビット版x86への移植が削除および非推奨になっている点にも注意が必要でしょう。
そのほかの新機能についてはOpenJDK 24のページをご覧ください。