2023年3月21日
7つのJEPsによるアップデートと改良
今回も発表されているリリーススケジュールに則り、前バージョンから6ヵ月後となるリリースとなる。
Java 20は、
言語アップデート・改善
- JEP 432:レコードパターン
(第2プレビュー) - JEP 433:Pattern Matching for Switch
(第4プレビュー)
JEP 432は、レコードパターンとタイプパターンをネストさせ、宣言的かつ構成可能なデータナビゲーションと処理を実現する。これにより、パターンマッチングを拡張し、構成可能なデータクエリを可能にすることで、開発者の生産性を向上させる。
JEP 433は、パターンマッチングをswitchに拡張することで、特定のアクションを伴う複数のパターンに対して式をテストできる。この結果、複雑なデータ指向のクエリを簡潔かつセキュアに表現でき、switch式やswitch文の表現力や適用範囲が広がることで開発者の生産性が向上する。
Project Loomのプレビュー/インキュベーターの機能
- JEP 429:スコープ値
(インキュベータ) - JEP 436:仮想スレッド
(第2プレビュー) - JEP 437:構造化された並行性
(第2インキュベーター)
JEP 429は、スレッド内およびスレッド間で不変データを共有できる。とくに大量の仮想スレッドを使用する場合において、スレッドローカル変数よりも、使いやすさ、理解しやすさ、堅牢性、パフォーマンスが向上する。
JEP 436は、軽量な仮想スレッドを導入できる。その結果、高スループットの並列処理アプリケーションの作成、保守、監視プロセスを効率化する。さらに、仮想スレッドを使用すれば、既存のJDKツールやノウハウを活用し、並行処理アプリケーションのトラブルシューティング、デバッグ、プロファイリングを容易に行え、アプリケーション開発がしやすくなる。
JEP 437は、異なるスレッドで実行される複数のタスクを1つの作業単位として扱うことで、マルチスレッドプログラミングを簡素化することができる。これにより、エラー処理や取消を効率化し、信頼性を向上させ、可観測性を強化できる。
Project Panamaのプレビュー機能
- JEP 434:Foreign Function & Memory API
(第2プレビュー) - JEP 438:ベクトルAPI
(第5インキュベーター)
JEP 434は、Javaプログラムの、Javaランタイム外のコードやデータとの相互運用を実現するためのもの。この機能により、Javaプログラムは、Java Native Interfaceを必要とせずに、外部関数
JEP 438は、ベクトル計算を表現し、実行時にサポートされているCPUアーキテクチャのベクトル命令へのコンパイルを可能とする。これにより、同等のスカラ計算と比較してパフォーマンスが向上する。
世界中のJavaコミュニティのビジョンと努力が反映されたリリース
オラクルのJava Platform開発担当シニア・
「Javaは25年以上にわたり、開発者が次世代の堅牢でスケーラブル、かつセキュアなアプリケーションを設計、構築できるようにするための支援を行ってきました。Java 20の革新的な新機能は、Javaの誕生以来、世界中のJavaコミュニティが積み重ねてきたビジョンと貴重な努力を反映しています。オラクルの継続的なJavaテクノロジー・
その他、Java 20の最新機能については、米レッドウッド・
最新のOracle JDK 20のはこちらからダウンロード可能。