JEP 488: プリミティブ型のパターン、instanceof、switch (第2プレビュー): 言語をより一貫性のある表現力豊かなものにすることで、Javaプログラミングの生産性を向上させます。この機能により、開発者がパターン・マッチング、instanceof、switch を使用する際に遭遇するプリミティブ型に関する制約が取り除かれ、パターン・マッチングの強化が図られます。また、すべてのパターン・コンテキストでプリミティブ型のパターンが使用可能になり、すべてのプリミティブ型でinstanceofとswitchが使用可能になります。AI推論をアプリケーションに統合する開発者にとって、プリミティブ型のサポートは大きなメリットとなります。
JEP 492: 柔軟なコンストラクタ本体 (第3プレビュー): コンストラクタ本体に導入された2つの明確なプロローグとエピローグのフェーズにより、開発者はコードの信頼性を向上させることができます。これにより、現在は補助静的メソッド、補助中間コンストラクタ、またはコンストラクタ引数に分解しなければならないロジックを、より自然な形で配置できるようになります。さらに、サブクラスのコンストラクタ内のコードがスーパークラスのインスタンス化に影響を与えないというセーフガードが維持されるため、メソッドがオーバーライドされた際のクラスの信頼性が向上します。
JEP 494: モジュール・インポート宣言(第2プレビュー): インポート・コードをモジュール自体に配置する必要がないため、モジュールがエクスポートしたすべてのパッケージを迅速かつ簡単にインポートできるようになり、開発者の生産性が向上します。これにより、すべての開発者にとってモジュール・ライブラリの再利用が簡素化され、初心者でもパッケージ階層内の位置を学習することなく、サードパーティ・ライブラリや基本的なJavaクラスをより簡単に使用できるようになります。この機能は、ネイティブAI推論、ライブラリ、またはサービス呼び出しをビジネス・ロジックと迅速に統合したい開発者にとってもメリットがあります。
JEP 495: シンプルなソースファイルとインスタンスのmainメソッド (第4プレビュー): 学生が、大規模なプログラム向けの言語機能を理解する必要なく、スムーズにJavaプログラミングを始め、最初のプログラムを作成できるよう支援します。その結果、講師やインストラクターは概念を徐々に導入できるようになります。また、学生は単一クラス・プログラム用の簡素化された宣言を記述し、スキルが向上するにつれてより高度な機能を使用してプログラムをシームレスに拡張できるようになります。一方、経験豊富なJava開発者は、大規模プロジェクト用のツールを使用することなく、簡潔かつ効率的に小規模なプログラムを記述することができます。
ライブラリ
JEP 485: Stream Gatherers (第2プレビュー): Stream API の機能を拡張してカスタムの中間操作に対応することで、開発者によるJavaコードの読み書きやメンテナンスの効率化を支援します。これにより、ストリーム・パイプラインは、既存の組み込み中間操作では困難だった方法でデータを変換できるようになります。
JEP 484: Class-File API: Javaクラス・ファイルの解析、生成、変換のための標準APIを提供し、Java仮想マシン仕様で定義されたクラス・ファイル形式の追跡を行うことで、開発者の生産性向上を支援します。
JEP 487: スコープ値(第4プレビュー): スレッド内およびスレッド間で不変データの共有を可能にすることで、開発者はプロジェクトの使いやすさ、理解しやすさ、パフォーマンス、堅牢性を向上させることができます。
JEP 489: Vector API(第9インキュベーター):ベクトル計算を表現し、実行時にサポートされているCPUアーキテクチャのベクトル命令に確実にコンパイルするためのAPIを導入することで、開発者の生産性向上を支援します。これにより、開発者はAI推論や計算シナリオでよく使用される同等のスカラー計算よりも優れたパフォーマンスを実現できます。
JEP 499: 構造化された並行性 (第4プレビュー):構造化された並行性のための新しいAPIにより並行プログラミングを簡素化することで、マルチスレッド・コードの保守性、信頼性、および可視性を向上させます。構造化された並行性は、異なるスレッドで実行されている関連タスクのグループを単一の作業単位として扱うことで、スレッド・リークや取消遅延など、取消や停止に起因する一般的なリスクを軽減します。
セキュリティ・ライブラリ
JEP 478: キー導出関数API (プレビュー): 開発者は、転送中のデータに暗号化セキュリティを適用することで、新たな量子コンピューティング環境に備えることができます。これにより、データの機密性と通信の安全性が向上します。
JEP 496: 量子耐性のあるモジュールlatticeベースのキー・カプセル化メカニズム: 量子耐性のあるモジュールlatticeベースのキー・カプセル化メカニズム(ML-KEM)の実装を通じてJavaアプリケーションのセキュリティを強化します。キー・カプセル化メカニズムは、公開キー暗号を使用して安全ではない通信チャネル上で対称キーを保護するために使用されます。この機能は、ポスト量子時代への対応に向けた重要なステップであり、最終的にはJavaプラットフォームにポスト量子暗号(PQC)サポートを提供することになります。
JEP 497: 量子耐性のあるモジュールlatticeベースのデジタル署名アルゴリズム: 量子耐性のあるモジュールlatticeベースのデジタル署名アルゴリズム(ML-DSA)の実装を通じてJavaアプリケーションのセキュリティを強化します。JEP 496と同様に、この機能は、ポスト量子時代への対応に向けた重要なステップであり、最終的にはJavaプラットフォームにポスト量子暗号(PQC)サポートを提供することになります。デジタル署名は、データの不正な変更の検出や署名者の身元認証に使用されます。ML-DSAは、将来的な量子コンピューター攻撃に対するセキュリティを確保するように設計されており、米国標準技術局(NIST)によって標準化(FIPS 204)されています。
ツール
JEP 493: JMODなしのランタイム・イメージのリンク: jlinkツールが、JDKのJMODファイルを使用せずにカスタム・ランタイム・イメージを作成できるようにすることで、開発者の作業効率を向上させます。これにより、JDKのサイズを約25%削減できます。その結果、開発者は、モジュールがスタンドアロンJMODファイル、モジュールJARファイル、または以前にリンクされたランタイム・イメージの一部であるかどうかに関係なく、そのモジュールからランタイム・イメージをリンクできます。この機能は、デフォルトでは有効ではないため、JDKのビルド時に有効にする必要があります(JDKベンダーによっては有効にしないことを選択する場合があります)。
パフォーマンスおよびランタイムに関する更新
JEP 450: コンパクトなオブジェクト・ヘッダー (試験段階): HotSpot JVMのオブジェクト・ヘッダーのサイズを、64ビットアーキテクチャ上で96ビット~128ビットから64ビットに縮小することで、開発者の生産性を向上させます。これにより、ヒープサイズを縮小し、デプロイ密度を向上させ、データ・ローカリティを高めることができます。
JEP 475: G1の遅延バリア機能の拡張: G1ガベージ・コレクターのバリア処理をC2 JITのコンパイル・パイプラインの初期段階ではなく、プラットフォーム非依存最適化やレジスタ割り当ての後に実行することで、オーバーヘッドを減らし、開発者の効率性を向上させます。この機能は、G1ガベージ・コレクターのバリアの実装を簡素化することで、C2によって生成されたコードの効率性、理解しやすさ、回復性、品質を向上させます。
JEP 483: 事前クラス・ローディングおよびリンク: HotSpot Java仮想マシンが起動した際に、アプリケーションのクラスをロードおよびリンク済みの状態で即座に利用できるようにすることで、開発者の生産性を向上させ、起動にかかる時間を短縮します。この機能は、jlinkまたはjpackageツールの使用を必要とせず、コマンドラインからアプリケーションを起動する方法や、アプリケーション、ライブラリ、フレームワークのコードに変更を加える必要もありません。その結果、起動時間やウォームアップ時間のさらなる改善のための基盤を築くのに役立ちます。
JEP 490: ZGC: 非世代別モードの削除: Z Garbage Collector (ZGC) の非世代別モードを削除することで、2つの異なるモードをサポートする必要がなくなり、メンテナンスコストを削減できます。
JEP 491: ピン留めなしで仮想スレッドを同期:同期メソッドやステートメントを使用するJavaコードやライブラリのスケーラビリティを拡張することで、開発者の生産性を向上させます。仮想スレッドがその元となるプラットフォーム・スレッドを解放できるようにすることで、開発者はより多くの仮想スレッドにアクセスし、アプリケーションのワークロードを効率的に管理できるようになります。
ソース・コード
JEP 404: 世代別Shenandoah (試験段階): Shenandoah ガベージ・コレクターを世代別コレクション機能(試験段階)で強化することで、持続的なスループット、負荷スパイク耐性、およびメモリ利用率を向上させ、開発者の生産性向上を支援します。
JEP 479: Windows 32ビットx86ポートの削除: Windows 32ビットx86 ポート用のソース・コードとビルドサポートを削除することで、JDK のビルドとテストのインフラストラクチャを簡素化し、開発者の効率向上を支援します。
JEP 501: 32ビットx86ポートの非推奨と削除: 32ビットx86ポートを非推奨とし、将来のリリースで削除することで、開発者の生産性を向上させます。これにより、開発者は32ビットx86のフォールバックを実装することなく、プラットフォーム固有のサポートを必要とする新機能にアクセスできるようになります。