「Java 25」正式リリース、2年振りのLTS版。事前キャッシュによる高速起動、JITの即時ネイティブコード生成など新機能
オラクルはJavaの最新バージョンで2年振りのLTS版となる「Java 25」正式版をリリースしました。
Java 25 is now available! #Java25 #JDK25 #OpenJDK
— Java (@java) September 16, 2025
Download Now: https://t.co/rTCvIKI6W0
Release notes: https://t.co/8GZk2epvDI
API Javadoc: https://t.co/v8TedTS3Zy
Features: https://t.co/L0Zmw3mmj9
Inside Java on JDK 25: https://t.co/K3JZvZdUcm pic.twitter.com/UNSnCk4IZF
Java 25はLTS版として少なくとも2033年9月までサポート
Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるバージョンアップが行われ、その中の1つのバージョンが2年毎に長期サポート(LTS:Long Term Support)版に指定されます。
LTS版以外のJavaは、6カ月後に次のバージョンのJavaがリリースされるとサポートが終了しますが、LTS版では、文字通り長期にわたってセキュリティパッチやバグフィクスなどのサポートが提供されます。
今回のJava 25は、2023年9月にリリースされたJava 21から2年ぶりのLTS版となります。
オラクルはJava 25に対して3年後の2028年9月まで四半期ごとにセキュリティやパフォーマンスなどのアップデートを提供し、それ以後も同社が提供する「Java SE OTN License(OTN)」に基づき、少なくとも8年後の2033年9月までアップデートを継続して提供するとしています。
企業向けのシステム開発などで長期間にわたり安定したJavaのバージョンを使いたい場合には、1つ前のLTS版となるJava 21や最新のLTS版となったJava 25は有力な候補となるでしょう。
インポート宣言にモジュール名を指定可能に
Java 25での主な新機能を紹介しましょう。
正式機能となった「JEP 511: Module Import Declarations」では、インポート宣言にモジュール名を指定できるようになることで、さまざまなパッケージを簡潔なコードの記述でインポートできるようになります。
「public static void main」といった、これまでJavaに必要だった長いコードをシンプルに記述できるようにするJava言語の拡張は、Java 21のJEP 445でプレビューとして採用され、Java 22、Java 23、Java 24と改良が続けられてきました。
Java 25ではこれらのフィードバックなどによる改善が「JEP 512: Compact Source Files and Instance Main Methods」として実装されています。具体的な例の1つとして、java.langパッケージに基本的なコンソールI/Oの機能を備えた新しいIOクラスが組み込まれました。これにより、コンソールI/O関連の記述が簡潔になります。
Java 23から入った、instanceofとswitchを拡張し、これらのパターンマッチングにプリミティブ型を使えるようにする「JEP 507: Primitive Types in Patterns, instanceof, and switch」は第3プレビューとなりました。
異なるスレッドで実行される複数のタスクを1つの作業単位として扱うことでエラーハンドリングやキャンセル処理などを簡素化でき、プログラムの信頼性や可観測性を強化できる「JEP 505: Structured Concurrency」は第5プレビューとなりました。
事前プロファイルによるJITの即時ネイティブコード生成など
パフォーマンス関連では、HotSpot Java仮想マシンの起動時に過去のアプリケーション実行時に得られたプロファイルを利用することで、JITコンパイラのウォームアップを待つことなく、アプリケーション起動直後にネイティブコードを生成できるようになる「JEP 515: Ahead-of-Time Method Profiling」も実装されました。
さらに「JEP 514: Ahead-of-Time Command-Line Ergonomics」は起動を高速にするため、事前実行により事前キャッシュを簡単に作成できるようにします。
64ビットアーキテクチャにおいて、オブジェクトヘッダーのサイズを64ビットに縮小することでオブジェクトサイズやメモリ使用量を削減、デプロイ密度をあげることなどを可能にする「JEP 519: Compact Object Headers」も実装されました。
そのほかJava 25の詳細については「JDK 25」のページをご覧ください。