米現地時間3月21日、オラクルは「Java 20」の提供を発表した。
最新のJava Development Kit(JDK)では、7つのJDK Enhancement Proposal(JEPs)によるアップデートと改良が行われている。「JDK 20」では、OpenJDKプロジェクトAmberによる言語の改善(Record PatternsとPattern Matching for Switch)、OpenJDKプロジェクトPanamaによるJava Virtual Machine(JVM)とネイティブコードの相互接続の強化(Foreign Function & Memory APIとVector API)、Project Loomに関する機能(Scoped Values、Virtual Threads、およびStructured Concurrency)の提供により、高スループットの並行処理アプリケーションを作成、維持、観察するプロセスを効率化できるという。
言語のアップデートと改善
- JEP 432:レコード・パターン(第2プレビュー):レコード・パターンとタイプ・パターンをネストさせることで、Java言語を強化。パターン・マッチングを拡張して、より洗練された構成可能なデータ・クエリを可能にすることで開発者の生産性を向上させる
- JEP 433:Pattern Matching for Switch(第4プレビュー):パターン・マッチングをswitchに拡張することで、特定のアクションをともなう複数のパターンに対して式をテストでき、複雑なデータ指向のクエリを簡潔かつセキュアに表現できる
Project Loomのプレビュー/インキュベーターの機能
- JEP 429:スコープ値(インキュベータ):スレッド内およびスレッド間で不変データを共有できる
- JEP 436:仮想スレッド(第2プレビュー):Javaプラットフォームに軽量な仮想スレッドを導入することで、高スループットの並列処理アプリケーションの作成、保守、監視プロセスを効率化した
- JEP 437:構造化された並行性(第2インキュベーター):異なるスレッドで実行される複数のタスクを1つの作業単位として扱うことで、マルチスレッド・プログラミングを簡素化することができる
Project Panamaのプレビュー機能
- JEP 434:Foreign Function & Memory API(第2プレビュー):Javaプログラムが、Javaランタイム外のコードやデータと相互運用できるように。これにより、Java Native Interfaceを必要とせずに、外部関数(Java Virtual Machine [JVM]外のコード)を呼び出したり、外部メモリ(JVMによって管理されていないメモリ)にセキュアにアクセスしたりすることで、ネイティブ・ライブラリの呼び出しやネイティブ・データの処理を行うことができる
- JEP 438:ベクトルAPI(第5インキュベーター):ベクトル計算を表現し、実行時にサポートされているCPUアーキテクチャのベクトル命令にコンパイルすることができる