(本資料は米国2021年3月16日にオラクル・コーポレーションより発表されたプレスリリースの抄訳です)
オラクルは本日、Java 16(Oracle JDK 16)のリリースを発表しました。これには、開発者の生産性をさらに向上させるプラットフォームの17の新しい拡張機能が含まれます。最新のJava開発キット(JDK)では、instanceofのパターン・マッチング(JEP 394)とRecords(JEP 395)、Java 14で初めてプレビューされた言語強化が最終化されています。さらに、開発者は新しいパッケージング・ツール(JEP 392)を使用して自己完結型Javaアプリケーションを提供できるほか、3つのインキュベート機能、ベクトルAPI(JEP 338)、外部リンカーAPI(JEP 389)、外部メモリ・アクセスAPI(JEP 389)と1つのプレビュー機能、Sealed Classes(JEP 397)を確認、詳しく調査することができます。
オラクルは、6カ月ごとにJavaアップデートを提供することで、開発者に予測可能なリリース・スケジュールを提供しています。これにより、一連のイノベーションを安定的に提供すると同時に、パフォーマンス、安定性、セキュリティが継続的に改善され、あらゆる規模の組織と業界にまたがるJavaの広汎性の向上も提供します。
オラクルのJavaプラットフォーム・グループで開発担当バイスプレジデントを務めるジョージ・サーブ(Georges Saab)は次のように述べています。「最新リリースでは、6カ月のリリース・サイクルの威力がはっきり示されました。 パターン・マッチングとRecordsは、JDK 14の一部として1年前に発表されて以降、実際のアプリケーションに基づくコミュニティ・フィードバックを何度も繰り返してきました。このプロセスは、Java開発者にこれらの機能を完成前に試す機会を提供するだけでなく、極めて重要なフィードバックを取り入れたことにより、コミュニティのニーズにぴったりマッチする2つの強固なJEPとして結実しています。」
Java 16リリースは、OpenJDK CommunityやJava Community Processでのオープンなレビュー、週次ビルド、オラクルのエンジニアと世界中のJava開発者コミュニティ・メンバーを交えた業界全体の開発の成果です。Java 16が提供する主な新機能は次のとおりです。
JDK 14で初めて発表され、JDK 16で最終化された言語強化
-
- JEP 394: instanceofのパターン・マッチング – instanceof演算子のパターン・マッチングによってJavaプログラミング言語を強化します。
-
- JEP 395: Records – 不変データの透過的キャリアとして機能するクラスであるRecordsによってJavaプログラミング言語を強化します。Recordsは、ノミナル・タプルと考えることができます。
-
開発者の生産性向上のための新規ツール
JEP 392: パッケージング・ツール – 自己完結型Javaアプリケーションのパッケージング用の「jpackage」ツールを提供します。
パフォーマンス向上のためのメモリ管理の改善
-
- JEP 387: Elastic Metaspace – 未使用のHotSpotクラスメタデータ(メタスペース)メモリをより速やかにオペレーティング・システムに返すことでメタスペース・フットプリントを削減し、メタスペース・コードを合理化してメンテナンス・コストを削減します。
-
- JEP 376: ZGC:並列スレッドスタック処理 – ZGCスレッドスタック処理をセーフポイントから並列フェーズに移動します。これにより、並列スタック処理実現のための最後の大きなボトルネックが解消します。
-
開発者の生産性および柔軟性向上のためのネットワークの改善
-
- JEP 380: UNIXドメイン・ソケット・チャネル – 主要なUNIXプラットフォームとWindowsで一般的なUNIXドメイン・ソケットの全機能のサポートを、java.nio.channelsパッケージ内のソケット・チャネルおよびサーバー/ソケット・チャネルAPIに追加します。UNIXドメイン・ソケットは、同一ホスト上のプロセス間通信(IPC)に使用されます。アドレッシングにIPアドレスとポート番号の代わりにファイルシステム・パスが使用されるのを除き、これらは多くの面でTCP/IPソケットに類似しています。
-
将来互換性がないコードへの対応
-
- JEP 396: JDK internalをデフォルトで強固にカプセル化 – JDK 9では、新しいinternal API要素は強固にカプセル化され、これらに対するアクセスは制限されていました。ただし、JDK 9では移行に役立つように、JDK 8に存在していたパッケージの内容を実行時に強固にカプセル化しないことを故意に選択していました。 JDK 16は、sun.misc.Unsafeなどの重要internal APIを除くJDKのほとんどのinternal要素をデフォルトでカプセル化することで、この制約を引き締めます。エンドユーザーは、JDK 9以降のデフォルトであった緩和された強固なカプセル化を選択できます。これにより、internal要素の使用から標準APIの使用へと開発者の移行を促進し、開発者とそのユーザーの両方が、将来のJavaリリースに混乱なくアップグレードできるようにします。
-
- JEP 390: 値ベース・クラスの警告 – プリミティブ・ラッパー・クラスを値ベースとして指定し、そのコンストラクタの削除に対し、新しい非難警告によって注意を促します。Javaプラットフォーム内の任意の値ベース・クラスのインスタンスに対する不適切な同期試行に関する警告を提供します。
-
インキュベート機能とプレビュー機能
-
- JEP 338: ベクトルAPI(インキュベーター) – インキュベーター・モジュールjdk.incubator.vectorの初期イテレーションを提供し、実行時にサポートされるCPUアーキテクチャ上の最適なベクトル・ハードウェア・インストラクションに確実にコンパイルするベクトル演算を表現します。
-
- JEP 389: 外部リンカーAPI(インキュベーター) – ネイティブ・コードに対する静的に型付けされたピュアJavaアクセスを提供するAPIを導入します。
-
- JEP 393: 外部メモリ・アクセスAPI(サード・インキュベーター) – Javaヒープの外部にある外部メモリにJavaプログラムが安全かつ効率的にアクセスするためのAPIを導入します。
-
- JEP 397: シールド・クラス(第2プビュー) – シールド・クラスおよびインタフェースによってJavaプログラミング言語を強化します。シールド・クラスおよびインタフェースは、別のどのクラスまたはインタフェースがこれらを拡張または実装できるかを制限します。
-
OpenJDKコントリビューター向けの改善
より多くのプラットフォームでJavaのサポートを提供する新規ポート
-
- JEP 386: Alpine Linuxポート – Alpine Linuxおよびx64とAArch64の両方のアーキテクチャでmuslをプライマリCライブラリとして使用するその他のLinuxディストリビューションにJDKをポーティングします。
-
- JEP 388: Windows/Aarch64ポート – JDKをWindows/AArch64にポーティングします。
-
Javaを常により良く
Javaは、先進的アプリケーション開発者の進化するニーズに対応するための継続的イノベーションに基づいて、最も成功した開発プラットフォームの1つであり続けています。「Oracle Java SE Subscription」をお客様にとってより価値のあるものにするために、オラクルはGraalVM Enterpriseを追加しました。GraalVMは、特にマイクロサービスやクラウドネイティブ・アーキテクチャでのパフォーマンス向上とアプリケーションによるリソース消費の削減に役立ちます。Java資産の管理に「Oracle Java SE Subscription」を利用する組織は、最新の強化とオラクルのJavaエキスパートへの直接アクセスからメリットを得られるだけでなく、他のアプローチに比べて高い効率も体験できます。
ソルボンヌ・パリ・ノール大学の助教授であり、パリJavaユーザー・グループの共催者でもあるジョゼ・ポーマード(José Paumard)氏は次のように述べています。「3、4年おきにJavaの新機能に関心を持つ代わりに、現在のリリースのペースは、情熱的な開発者、教師、トレーナーとしての自分を活性化し続けてくれます。データ処理コードのパフォーマンスと可読性をRecordsによって向上できる日を待ち焦がれてきました。この機能は、プレビュー機能として利用できるようになった後、今回のリリースで正式な機能として利用できるようになっています。」
関連資料
オラクルについて
オラクルは、広範かつ統合されたアプリケーション群に加え、セキュリティを備えた自律型のインフラストラクチャをOracle Cloudとして提供しています。オラクル(NYSE:ORCL)に関するより詳細な情報については、www.oracle.com をご覧ください。
商標
UNIXは、The Open Groupの登録商標です。
* OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。本文書は情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。