米オラクルは3月19日(現地時間)、プログラミング言語および開発プラットフォームの最新バージョン「Java 22」 の提供を開始した。Java Development Kit(JDK)では、12のJDK Enhancement Proposal(JEPs)によるアップデートと改良が行われている。
12のJDK Enhancement Proposalsを提供
米オラクル ソフトウェア開発担当バイスプレジデントのBernard Traversat氏は、Javaが半年ごとにリリースを行っている背景とメリットについて、次のように説明した。
「JavaはJDK10から半年おきにリリースしているが、それまでのリリースと比べて、新機能が減っている。この背後には、リリースの頻度を上げることで、エコシステムの容易な採用を促すことがある。新機能が多いと、開発者もリリースの適用が大変だったはず。また、エンタープライズ系ユーザーにとって、半年ごとにアップデートを実施するのは難しいことも知っている。そのため、長期の商用サポートを提供している。そのため、古いJDKのバージョンでも安心安全な開発が行える」
JDK 22では、12のJDK Enhancement Proposal(JEPs)によるアップデートと改良が行われている。主要なアップデートは以下となる。
Project Amberの機能
Javaの学習の複雑性を解消する「Project Amber」から提供される機能としては、「JEP 447:super(…)の前の文」「JEP 456:無名変数とパターン」「JEP 459:文字列テンプレート(第2プレビュー)」「JEP 463:暗黙的に宣言されたクラスとインスタンスのメイン・メソッド(第2プレビュー)」がある。
例えば、JEP 463は、大規模なプログラム用に設計された言語機能を理解することなく、学習者が最初のプログラムを記述できるように、Java プログラミングへのスムーズなオンランプを提供するもの。これにより、学習者は単一クラス・プログラムの合理化された宣言を記述できる。
Traversat氏は、「以前は複雑なプログラミングが必要だったが、大幅に簡略化された」と語っていた。
「Project Loom」の機能
Javaの軽量同時実行を目指す「Project Loom」からは、「JEP 462:構造化された並行性 (第2 プレビュー)」と「JEP 464:スコープ値(第2 プレビュー)」が提供される。
「Project Panama」の機能
ネイティブコードとメモリの相互運用とSIMDVector のサポートを目指す「Project Panama」からは、「JEP 454:Foreign Function & Memory」と「JEP 460:Vector API (第7 インキュベーター」が提供される。
コア・ライブラリとツールの機能
コア・ライブラリとツールの機能としては、「JEP 457:Class File API (プレビュー)」「JEP 458:マルチファイル・ソース・コード・プログラムの起動」「JEP 461:Stream Gatherers (プレビュー)」が提供される。
パフォーマンスのアップデート
パフォーマンスのアップデートとしては、「JEP 423:G1 領域の固定」が提供される。
Traversat氏は、VS Code用のJavaプラグインについて、「Javaを学ぶとき、VS Codeのサポートが十分ではないことに気付き、昨年、VS CodeのためのJavaプラグインの提供を始めた。オラクルは、JDKのアーリーアクセス期間中でも、JDKの新機能が導入され次第、VS Code IDEのサポートを提供する。VS Codeの拡張機能は、次期JDKバージョンでもサポートする」と語った。
コミュニティがサポートするJava
米オラクル Java プラットフォーム プロダクトマネジメント担当シニアディレクターのSharat Chander氏は、Javaの発展におけるコミュニティの重要性について説明した。
「これまで29年間、Javaは発展してきたが、それは、オラクルとしてコミュニティに積極的に投資してきたから。使っている人たちがいるからJavaは価値がある」(Chander氏)
また、Chander氏は国内のJavaコミュニティの活動について紹介した。同氏によると、日本で活発に活動しているJavaのグループは10あり、Javaのエリート集団であるチャンピオンズプログラムに所属するエンジニア388名のうち、7名が日本にいるという。もうすぐ、日本の開発者からの機能発表も予定されているそうだ。
Chander氏はJava 22の新機能のうち、特に「JEP 463」に注目していると述べた。Traversat氏もピックアップして説明していた機能だ。その理由について、「これは、プログラミングの複雑さを理解せずに、新しい開発者も効率よく学習できる機能と考えている。経験を積んでから、Javaの複雑なコンセプトを理解して、スキルアップを図ってもらいたい」と語っていた。