JDK 26リリースにおける重要な変更
JDK 26の新機能と拡張機能、およびAPI仕様の詳細は、JDK 26リリース・ノートを参照してください。
Java SE 26およびJDK 26では、言語、セキュリティ・ライブラリおよびパフォーマンスの向上に関する様々な更新が導入されています。
言語プレビュー機能
- パターン・マッチングが拡張され、すべてのパターン・コンテキストでプリミティブ型を使用できるようになりました。
instanceof演算子とswitch式および文は、すべてのプリミティブ型で機能するように拡張されています。Java SE 23で最初にプレビューされ、Java SE 24およびJava SE 25で再度プレビューされたこの機能は、このリリースで再プレビューされています。
JEP 530: パターン、instanceofおよびswitchのプリミティブ型(第4プレビュー)および『Java Platform, Standard Edition Java言語更新』の次の項を参照してください:
ライブラリの改善、プレビュー、およびインキュベータ
- HTTPクライアントAPIでHTTP/3プロトコルがサポートされるようになり、ライブラリおよびアプリケーションが最小限のコード変更でHTTP/3サーバーと対話できるようになりました。
- 遅延定数APIはJVMによって定数として扱われ、フィールドを
finalと宣言した場合と同様のパフォーマンス最適化が可能になります。遅延定数は、初期化のタイミングについてはfinalフィールドに比べて柔軟性が高くなります。JEP 502としてJDK 25で最初にプレビューされたこの機能は、このリリースで改訂および再プレビューされています。
JEP 526: 遅延定数(第2プレビュー)およびJava API仕様の
LazyConstantに関する項、および『Java Platform, Standard Editionコア・ライブラリ』の遅延定数に関する項を参照してください。 - 構造化並行性は、並行プログラミングを簡素化するAPIです。異なるスレッドで実行されている関連タスクのグループを1つの作業単位として処理することにより、エラーの処理と取消しを効率化し、信頼性とオブザーバビリティを向上させます。
JEP 525: 構造化並行性(第6プレビュー)および『Java Platform, Standard Editionコア・ライブラリ』の構造化並行性に関する項を参照してください。
- ベクターAPIは、実行時に、サポートされているCPUアーキテクチャ上で最適なベクトル命令に確実にコンパイルするベクトル計算を表現します。これにより、同等のスカラー計算よりも優れたパフォーマンスを実現できます。
JEP 529: ベクターAPI(第11インキュベータ)およびJEP 11: インキュベータ・モジュールを参照してください。
セキュリティ・ライブラリ- 暗号化キー、証明書、および証明書失効リストを表すオブジェクトを広く使用されているプライバシ拡張メール(PEM)トランスポート・フォーマットにエンコードし、そのフォーマットから元のオブジェクトにデコードするためのAPIが導入されました。
JEP 524: 暗号化オブジェクトのPEMエンコーディング(第2プレビュー)および『Java Platform, Standard Editionセキュリティ開発者ガイド』のDEREncodableインタフェースに関する項を参照してください。
- 暗号化キー、証明書、および証明書失効リストを表すオブジェクトを広く使用されているプライバシ拡張メール(PEM)トランスポート・フォーマットにエンコードし、そのフォーマットから元のオブジェクトにデコードするためのAPIが導入されました。
パフォーマンスとランタイムの改善
- G1ガベージ・コレクタを使用する場合、アプリケーション・スループットは、アプリケーション・スレッドとGCスレッド間で必要な同期量を減らすことで向上します。
JEP 522: G1 GC: 同期の削減によるスループットの向上を参照してください。
- 事前(AOT)キャッシュは、キャッシュされたJavaオブジェクトをGC固有の形式でメモリー・マッピングするのではなく、中立のGCに依存しない形式から順次ロードすることで、任意のガベージ・コレクタ(低レイテンシZGCを含む)と連携するように更新されるため、JVMの起動およびウォームアップのパフォーマンスが向上します。
JEP 483: 事前クラス・ローディングおよびリンクで最初に導入されたこの拡張機能により、新しいAOT関連の最適化がHotSpot JVMにもたらされます。
JEP 516: 任意のGCでの事前オブジェクト・キャッシングを参照してください。
削除および将来の変更に関する警告
- JDK 26では、ディープ・リフレクションを使用した
finalフィールドの変更に関する警告が出力されます。これらの警告は、将来のリリースに向けて開発者を準備させることを目的としています。将来のリリースでは、デフォルトで整合性を確保するため、ディープ・リフレクションによるfinalフィールドの変更が制限されるようになります。これにより、Javaプログラムがより安全かつ高速になります。コマンドライン・オプション--enable-final-field-mutationおよび--illegal-final-field-mutationを使用すると、必要不可欠な場合にかぎり、ディープ・リフレクションによるfinalフィールドの変更機能を選択的に有効にすることができ、これにより警告および今後の制限を回避できます。JEP 500: finalを最終にする準備および「finalフィールドの変更制限への準備」を参照してください。 - JDK 17での削除のために非推奨となったアプレットAPIは削除されました。
JEP 504: アプレットAPIの削除を参照してください。