「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能

今回は「「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能」についてご紹介します。

関連ワード (対応予定、日本時間、長期等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


オラクルはJavaの最新バージョン「Java 21」正式版を今日リリースします。

Java 21は長期でセキュリティパッチやバグフィクスなどが提供されるLTS(Long Term Support:長期サポート)版です。企業向けのシステム開発などで安定したJavaのバージョンをある程度長期間使いたい場合には、このJava 21は有力な候補となるでしょう。

日本時間22時からJava 21のローンチイベントも開催予定です。「with a few surprise reveals」(いくつかサプライズ発表があるよ)というのが少し気になります。今年は昨年復活したJavaOneがないので、その代わりに何かあるのでしょうか。

We're just 1 day away from our #Java21 launch live stream! Join us tomorrow as we'll have experts share details around the latest release, with a few surprise reveals and guests along the way.

Details on how to join: https://t.co/fUyizPAT2T pic.twitter.com/XBUDSCbeL4

— Java (@java) September 18, 2023

Java 21からLTSが2年間隔に

Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるバージョンアップが行われ、そのなかの1つのバージョンが3年ごとに長期サポート(LTS:Long Term Support)版に指定されてきました。

この3年のLTSの間隔は、今回リリースされたJava 21から2年に改められます。今後は2年ごとにJavaのLTS版が登場することになります。

このLTSの方針は、オラクルが提供する商用のJavaディストリビューションであるOracle JDKにおける方針であり、他のJavaディストリビューションについてのLTS版提供の方針は、それぞれのディストリビューションベンダが決定します。

しかし、おそらく他のJavaディストリビューションベンダも同様の方針になるでしょう。

仮想スレッドが正式版になど、Java 21の主な新機能

Java 21はLTS版として、これまでプレビュー版だった多くの機能が正式版となりました。

仮想スレッドが正式版に
Java 21では、これまでプレビュー版であったVirtual Threads(JEP 444: Virtual Threads)が正式版になります。

Virtual ThreadはOSによるスレッド生成に依存せず、JavaVMの中でJavaのスレッドを作成し管理できるようにしたものです。OSのスレッド生成で発生する多数のコンテキストスイッチングやメモリ消費がなくなるため、Javaでのスレッドを用いた多数の並行処理が高速でスケーラブルなものになります。

すでに代表的なJavaのフレームワークであるSpring FrameworkがJava 21の仮想スレッドへの対応を発表しているなど、広く使われる機能になりそうです。

参考:Spring Framework 6.1が仮想スレッドに対応へ、9月登場予定のJava 21にも対応予定

より高速な世代的ZGCが正式版に
Java 15で採用されたスケーラブルかつ低レイテンシなガベージコレクタのZGCをさらに改良した世代的ZGC(JEP 439: Generational ZGC)が正式版となりました。

ジェネレーショナルZGCでは、若いオブジェクトと古いオブジェクトの世代を分けて管理することで、アプリケーションのパフォーマンスを向上させる仕組みを備えています。

これによりヒープメモリの低減、ガベージコレクション時のCPUオーバーヘッドの低減などが実現され、一時停止時間は1ミリ秒未満、数百メガバイトから数テラバイトまでのヒープサイズのサポート、最小限の手動設定などの利点が得られるとされています。

入門者向けの簡潔なコード記述が可能に
プレビューとして追加される新機能「JEP 445: Unnamed Classes and Instance Main Methods」では、これまで「public static void main(String[] args)」といった複雑な記述が必要だった部分が「void main()」のように簡潔に記述できるようになります。

これはJavaを学ぼうとする人たちに対して、プログラムを簡潔に書けるようにすることでスムーズな学習を可能にするとともに、スキルの成長に合わせて正確なコードが記述できるようにすることを目的としています。

具体的には、これまでHello, Worldの記述には下記のようなコードを書いていました。

これが下記のように簡潔に書けるようになります。

さらに、「JEP 440: Record Patterns」は、instanceofやswitchによるパターンマッチングが拡張され、Recordクラスを分解して値を抽出できるようにする機能が正式版となります。

「JEP 441: Pattern Matching for switch」は、文字通りSwitchのなかでパターンマッチングを使えるようにするもの。これも正式版になりました。

「JEP 449: Deprecate the Windows 32-bit x86 Port for Removal」で、Windows 32ビットx86版がなくなりました。

そのほか多くの新機能についてはOpenJDK 21のページをご覧ください。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
ザトウクジラの尾びれ写真から個体を見分けるAI自動識別システム開発、Diagence・阪大・慶應・沖縄美ら海財団で実用化へ
IT関連
2022-02-09 16:53
インテル、「iOS」「Android」端末とPCを連携させる「Unison」を提供へ
IT関連
2022-09-29 03:28
「Hot Chips」カンファレンス、議論の中心はAI処理向けプロセッサー
IT関連
2024-08-29 03:42
5G✕エッジコンピューティングがインパクトをもたらす6の業界
IT関連
2021-02-08 06:35
食品メーカーのはくばく、企業向け「Dropbox」を導入–クラウド化を推進
IT関連
2022-10-25 01:39
鹿児島市、「Microsoft 365」の利用安定化でA10を導入
IT関連
2024-09-19 00:56
信用できない大手ハイテク企業の自主規制、今、米国議会の行動が必要とされている
パブリック / ダイバーシティ
2021-03-29 03:36
レッドハットが事業戦略を発表–OpenShiftやAnsibleに注力
IT関連
2023-04-27 18:27
[速報]Google、PostgreSQLにAI対応を組み込んだ「AlloyDB AI」発表、オンプレミスでも他社クラウドでも利用可能に。Google Cloud Next '23
Google
2023-08-30 01:33
「アジャイルソフトウェア開発宣言」から20年–いかに実践されているのか
IT関連
2021-03-19 03:17
AIを利用したリアルタイム音声文字起こしサービスOtter.aiがGoogle Meetでも利用可能に
ネットサービス
2021-01-23 18:40
Docker創始者らが開発、ビルド/テスト/デプロイの自動化をポータブルにするツール「Dagger」登場。そのままローカルでもGitHubでもCircleCIでも実行可能に
CI/CD
2022-04-19 11:18
ウクライナ戦争の影響でワイパー型マルウェアとIoTボットネットが脅威の主流に–Nozomi Networks
IT関連
2022-09-10 23:36
スクラムガイドに新たに追加された「プロダクトゴール」とは? あるいはプロダクトゴールの設定には何が必要か?(前編) Regional Scrum Gathering Tokyo 2022
DevOps / アジャイル開発
2022-03-03 14:10