「Java 22」正式リリース。無名変数と無名パターン、複数のソースコードからなるJavaを一発実行する新機能など。「void main()」な記述もセカンドプレビューへ
オラクルはJavaの最新バージョン「Java 22」正式版をリリースしました。
Java 22 is now available! #Java22 #JDK22 #OpenJDK
— Java (@java) March 19, 2024
Download Now: https://t.co/aCramdGK3b
Release notes: https://t.co/UIHZ8nwZNu
API Javadoc: https://t.co/RBVjNl6Qpm
Features: https://t.co/DNvcj2yYbo
Inside Java on JDK22: https://t.co/Wh9qOLeL2N pic.twitter.com/nrKfgbqx7X
Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるバージョンアップが行われます。6カ月前にリリースされた前バージョンのJava 21は、3年ごと2年ごとに指定される長期サポート(LTS:Long Term Support)版でした。
そのため、システム開発など長期に安定したJavaのバージョンを選択したい場合には、Java 21やJava 17など、これまでLTS版として指定されたバージョンを選択するべきでしょう。
また、Java 22の登場に合わせてAWSが早くも独自のOpenJDKディストリビューションである「Amazon Corretto 22」正式版をリリースしています。
Java 22の新機能
Java 22では、Java 21でプレビューとして追加された、「public static void main(String[] args)」といった複雑な記述を「void main()」のように簡潔に記述できる新機能「JEP 463: Implicitly Declared Classes and Instance Main Methods」がセカンドプレビューとなりました。この機能はデフォルトではオフになっています。
同じくJava 21でプレビューとされていた無名変数と無名パターンの記述を可能にする「JEP 456: Unnamed Variables & Patterns」は、プレビューから変更なく正式版となりました。
JavaプログラムがJavaランタイム外のコードやデータに対してJNI(Java Native Interface)を必要とせずに効率的な呼び出しやメモリへのセキュアなアクセスを実現する「JEP 454: Foreign Function & Memory API」も正式版となりました。
同じくJava 22で正式版となった「JEP 458: Launch Multi-File Source-Code Programs」は、複数のソースコードから構成されるJavaプログラムのすべてのファイルを事前にコンパイルしなくとも、javaコマンドで直接実行すると実行時に必要に応じてコンパイルし、実行してくれる機能です。
異なるスレッドで実行される複数のタスクを1つの作業単位として扱うことでエラーハンドリングやキャンセル処理などを簡素化でき、プログラムの信頼性や可観測性を強化できる「JEP 462: Structured Concurrency」はセカンドプレビュー。
イミュータブルデータをスレッド内およびスレッド間で共有できるようになる「JEP 464: Scoped Values」もセカンドプレビュー。
ベクトル計算をCPUアーキテクチャのベクトル命令にコンパイルでき、同等のスカラー計算と比較して性能向上を実現する「JEP 460: Vector API」は7thインキュベータなどとなっています。
Java 22の詳しい新機能などは、JDK 22のページをご参照ください。
あわせて読みたい
Slackで使える「ソフトウェアテスト関係者くらいしか使わない絵文字」第二弾をMagicPodが公開。「9割できてます」「運用でカバー」など50種類
≪前の記事
続、Publickeyが受けたDoS攻撃、これまでの経緯と対策まとめ