JDK 17リリースにおける重要な変更
JDK 17の新機能と拡張機能、およびAPI仕様の詳細は、JDK 17リリース・ノートを参照してください。
Java SE 17およびJDK 17の更新内容の一部を次に示します:
言語の新機能
- Java SE 15で最初にプレビューされたシール・クラスは、このリリースで永続的な機能になりました。シール・クラスおよびインタフェースは、それらを拡張または実装できる他のクラスまたはインタフェースを制限します。JEP 409: シール・クラスに関する項および『Java Platform, Standard Edition Java言語更新』ガイドのシール・クラスに関する項を参照してください。
ライブラリの変更点
- アプリケーションは、JVM全体のフィルタ・ファクトリを使用して、コンテキスト固有の動的に選択されたデシリアライズ・フィルタを構成できるようになりました。これは、個々のデシリアライズ操作ごとにフィルタを選択するために起動されます。JEP 415: コンテキスト固有のデシリアライズ・フィルタに関する項および『Java Platform, Standard Editionコア・ライブラリ』ガイドのシリアライズ・フィルタリングに関する項を参照してください。
- ジャンプ可能なPRNGや分割可能なPRNGアルゴリズム(LXM)の追加クラスなど、擬似乱数ジェネレータ(PRNG)の新しいインタフェース・タイプおよび実装が使用できるようになりました。JEP 356: 擬似乱数ジェネレータの強化に関する項および『Java Platform, Standard Editionコア・ライブラリ』ガイドの擬似乱数ジェネレータに関する項を参照してください。
- macOS用の新しいJava 2D内部レンダリング・パイプラインは、Apple Metal APIを使用して実装されます。これは、非推奨のApple OpenGL APIを使用する既存のパイプラインの代替手段です。JEP 382: 新しいmacOSレンダリング・パイプラインに関する項を参照してください。
その他の変更点
- デフォルトでは、
sun.misc.Unsafe
などの重要な内部APIを除き、JDKのすべての内部要素が強くカプセル化されます。ただし、JDK 9からJDK 16まで可能であった、単一のコマンドライン・オプションを使用した内部要素の強力なカプセル化の緩和はできなくなります。JEP 403: デフォルトでのJDK内部の強力なカプセル化に関する項を参照してください。 - 浮動小数点演算は、厳密な浮動小数点セマンティクス(
strictfp
)と微妙に異なるデフォルトの浮動小数点セマンティクスの両方を持つのではなく、一貫して厳密になりました。JEP 306: 常に厳密な浮動小数点セマンティクスのリストアに関する項を参照してください。
非推奨
- セキュリティ・マネージャおよびそれに関連するAPIは、将来のリリースでの削除のために非推奨になりました。JEP 411: 削除のためのセキュリティ・マネージャの非推奨化に関する項を参照してください。
機能およびインキュベータ・モジュールのプレビュー
プレビュー機能の詳細はJEP 12: プレビュー機能に関する項を、インキュベータ・モジュールの詳細はJEP 11: インキュベータ・モジュールに関する項を参照してください。
- このリリースでは、
switch
式および文のパターン・マッチングが導入されています。 この機能を使用すると、それぞれが特定のアクションを持つ複数のパターンに対して式をテストできるため、複雑なデータ指向の問合せを簡潔かつ安全に表現できます。JEP 406: switchのパターン・マッチング(プレビュー)に関する項および『Java Platform, Standard Edition Java言語更新』ガイドのSwitch式および文のパターン・マッチングに関する項を参照してください。 - 外部関数およびメモリーAPIを使用すると、JavaプログラムはJavaランタイムの外部のコードおよびデータと相互運用できます。JEP 412: 外部関数およびメモリーAPI (インキュベータ)に関する項を参照してください。
- ベクターAPIは、インキュベーションAPIとしてJava SE 16で導入されました。このリリースでは、機能拡張がパフォーマンス向上とともに組み込まれています。JEP 414: ベクターAPI (セカンド・インキュベータ)に関する項を参照してください。