「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
課題を言語化し変革を自走するコンサルティングに自信–Ridgelinezの今井CEO
IT関連
2024-04-12 21:40
企業変革に対する抵抗への処方箋–事例に学ぶチェンジマネジメントのTIPS
IT関連
2024-01-18 02:56
「コンピューティングパワーは不足しつつある」–IBMの答えはAI向け新チップ「AIU」
IT関連
2022-11-09 13:52
群馬県庁、スマートロックで会議時間短縮–受け渡しの手間ゼロで時短
IT関連
2024-11-21 21:05
三菱マテリアル、人事改革に向けクラウド型人事ソリューションを導入
IT関連
2022-09-08 11:26
クラウド戦略を立案する際に避けるべき10の間違い
IT関連
2022-11-30 18:58
企業はWindows 11をどう受け止めるべきか
IT関連
2021-07-01 00:44
NECの地上型衛星航法補強システム、羽田空港でアジア初の正式運用開始
IT関連
2025-03-05 16:18
ダイナミックマッププラットフォーム、契約業務効率化で「Hubble」導入
IT関連
2024-06-15 08:15
「ミロ」出荷再開、ネスレが発表 オンラインショップでは1日から
くらテク
2021-03-02 16:35
Next.jsの開発元Vercel、Edge FunctionsでWebAssemblyのサポートを発表
JavaScript
2022-08-30 05:43
兵庫県西宮市、請求・支払業務のDXを推進–業務時間を約70%削減
IT関連
2024-04-07 18:37
緊急事態宣言でも、日本株は日銀が買い支え–景気敏感株「買い場」と判断
IT関連
2021-04-26 22:54
グーグル・クラウドが支援するスタートアップ–資金や技術、事業面を評価
IT関連
2022-07-15 03:06