Press Release

オラクル、Java 17をリリース

最新のJava長期サポート・リリースでは、数千ものアップデートや言語、プラットフォームのさらなる改善と、開発者の生産性の向上を実現

「Oracle JDK 17」は、セキュリティ、パフォーマンス、およびバグ修正のアップデートを2029年9月まで提供

テキサス州オースティン—2021年9月17日
Java

(本資料は米国2021年9月14日にオラクル・コーポレーションより発表されたプレスリリースの抄訳です)

オラクルは本日、世界でトップクラスを誇るプログラミング言語および開発プラットフォームの最新バージョンであるJava 17の提供を発表しました。Java 17は、パフォーマンス、安定性、およびセキュリティに関する数千ものアップデートに加え、14のJEP(JDK Enhancement Proposals)を提供し、Java言語とプラットフォームをさらに改善することで、開発者の生産性向上を実現します。

Java 17は、Javaの6カ月ごとのリリース・サイクルに基づく最新の長期サポート (LTS)のリリースです。これは、OpenJDK CommunityおよびJava Community Process (JCP)を介した、世界中のJava開発者コミュニティのメンバーと、オラクルのエンジニアの幅広いコラボレーションの結果生み出されたものです。3年前にリリースされた以前のJDK 11 LTS以降、70以上のJEPが実装されています。

よりシンプルなライセンス体系の提供

「Oracle JDK 17」および今後のJDKリリースは、次のLTSのリリースから1年後まで、無償で使用できるライセンスの下で提供されます。また、オラクルは2017年以降と同様に、オープンソースであるGeneral Public License(GPL)の下で「Oracle OpenJDK」のリリースを提供していきます。

お客様への長期サポートの強化

オラクルは、Javaの開発者コミュニティおよびJCPと協力して、お客様の新しいJava LTSのバージョンへの移行の時期や要否について、より柔軟に対応できるように、LTSのスケジューリングを強化していきます。オラクルは次のLTSのリリースをJava 21とし、2023年9月の提供開始を検討しています。これにより、今後のLTSのリリース・サイクルは3年から2年に変更されます。

「Oracle LTS」と「Java SE Subscription」を利用することにより、お客様のニーズに最も適したペースでJava 17への移行を実現できます。オラクルは、少なくとも2029年9月まで、Java 17のセキュリティ、パフォーマンス、およびバグ修正のアップデートをお客様に提供します。

オラクル Javaプラットフォーム・グループ開発担当バイスプレジデントのジョージ・サーブ(Georges Saab)は次のように述べています。「我々はこの3年間、開発者が最新の機能をどれほど気に入っているかを聞いてきました。そしてJavaのエコシステムが、6カ月間というリリース・サイクルを確実に受け入れていることもわかってきました。現在、Java開発者が直面している最大の課題の1つは、組織が最新のLTSリリースの使用しか許可していないことです。LTSのリリースを2年ごとにすることで、保守的な組織に属する開発者にとって、より多くの選択肢を持つことができ、好きな機能や使いたい機能にアクセスできるようになります。」

IDCのソフトウェア開発部門のリサーチ・バイスプレジデントであるアーナル・ダヤラートナ(Arnal Dayaratna)博士は次のように述べています。「オラクルは、LTS (long-term support) リリースのサイクルを2年周期に変更し、『Oracle JDK』を本番環境で無償利用できる期間を設けたより緩やかで新たなライセンス体系を導入することで、Javaのコミュニティにとって大きなメリットをもたらす形で変革をしています。そして、これらの変更により、組織はクラウドやオンプレミス、ハイブリッド環境において、最新アプリケーションの複雑な開発や導入をより柔軟に管理できるようになります。」

クラウドで加速するJavaの採用

Javaは、これまででもっとも成功した開発プラットフォームの1つであり、進化する開発者ニーズへの対応に向けた、継続的な革新の上に成り立っている言語です。 オラクルでは先日、クラウドでのJavaの普及の推進を目的として、オンプレミスやあらゆるクラウド上でJavaのランタイムとアプリケーションの管理を実現する「Oracle Java Management Service」を発表しました。これは、「Oracle Cloud Infrastructure(OCI)」の新しいネイティブ・サービスとして提供される予定です。

「Java Management Service」は、企業全体におけるJavaの導入状況の可視化を実現します。これは、開発中や本番環境で実行されているJavaのバージョンを含め、環境にインストールされているすべてのJavaのバージョンが対象となります。計画外のJavaアプリケーションの実行があればそれを強調表示し、また、インストールされているすべてのJavaバージョンに最新のセキュリティ・パッチが適用されているかどうかをチェックします。

JDK 17には、新しい言語機能の拡張、ライブラリの更新、新しいApple社のコンピュータへの対応、レガシー機能の削除と非推奨化が含まれます。また、現在のJavaコードが、将来のJDKのバージョンでも変更なく実行できるよう形で機能する、といったことが含まれています。また、言語機能のプレビューや、Javaのコミュニティからのフィードバックを収集するためのAPIのインキュベーションも提供されます。アップデート内容は以下の通りです。

Java言語の強化

  • JEP 409: シール・クラス – シール・クラスおよびインターフェースは、他のクラスやインターフェースのによる拡張または実装を制限します。この機能強化は、Java言語を進化させることで開発者の生産性向上を目的としたProject Amberの一環として行われたものです。

ライブラリの更新と改善

  • JEP 306: Always-Strict Floating-Point セマンティクスのリストア – Javaプログラミング言語とJava仮想マシンは、もともと厳密な浮動小数点セマンティクスしか持っていませんでした。Java 1.2以降、これらの厳密なセマンティクスの小さな差異は当時のハードウェア・アーキテクチャの制約に対応するために、デフォルトで許可されていました。これらの差異はもはや有用性や必要性が低いため、JEP 306において削除されました。
  • JEP 356: 疑似乱数ジェネレーターの強化 – 疑似乱数ジェネレーター(PRNG)の新たなタイプのインターフェースと実装を提供します。この変更により、さまざまなPRNGの相互運用性が向上し、特定の実装をハード・コーディングするのではなく、要件に基づいてアルゴリズムを簡単にリクエストできるようになります。
  • JEP 382: 新しいmacOSレンダリング・パイプライン – Apple Metal APIを使用してmacOS用のJava 2Dパイプラインを実装します。この新しいパイプラインにより、非推奨であるApple OpenGLAPIに対するJDKの依存度を減らすことができます。

新しいプラットフォームのサポート

  • JEP 391: macOS AArch64 Port – JDKをmacOS/AArch64プラットフォームにポートします。このポートにより、新しいArm 64ベースのApple Siliconコンピュータ上でJavaアプリケーションをネイティブに実行できます。

削除と非推奨

  • JEP 398: Applet APIの廃止 – すべてのWebブラウザ・ベンダーは、Javaブラウザ・プラグインのサポートの廃止、もしくは廃止予定を発表しています。Applet APIは、Java 9(2017年9月時点)で非推奨となりましたが、当時は廃止対象ではありませんでした。
  • JEP 407: RMIアクティベーションの削除 – Remote Method Invocation (RMI)のアクティブ化のメカニズムを削除し、それ以外のRMIの機能は引き続き維持します。
  • JEP 410: 試験的AOTおよびJITコンパイラの削除 – JavaベースのAOT(Ahead-of-Time)およびJIT(Just-in-Time)コンパイラは、試験的な機能でしたが、あまり採用されていませんでした。これらの機能はオプションであり、JDK 16からはすでに削除されています。このJEPでは、JDKのソース・コードからこれらのコンポーネントを削除します。
  • JEP 411: Security Managerの削除に向けた非推奨 – Security Managerの機能はJava1.0にまでさかのぼります。 この機能は長年にわたり、クライアント側のJavaコードの保護における主要な手段として用いられておらず、サーバー側のコードの保護においてもほとんど使用されていませんでした。将来のリリースでこれを削除することで、運用負荷を大幅に軽減し、Javaプラットフォームをよりよいものにします。

将来に対応したJavaプログラム

  • JEP 403: JDK内部の強力なカプセル化 – JDK 9からJDK 16まで可能であった、単一のコマンドライン・オプションを介した内部要素の強力なカプセル化の緩和はできなくなります。引き続き、既存の内部APIにアクセスすることは可能ですが、コマンドライン・パラメーターまたはJARファイルのマニフェスト属性として、カプセル化を緩和すべき各パッケージを列挙する必要があります。この変更により、アプリケーションがよりセキュアになり、JDK内部の非標準的な実装の詳細への依存度が低くなります。

今後のJDKリリースの見通しとインキュベーター

  • JEP 406: スイッチのパターン・マッチング(プレビュー) – 特定のアクションを伴う複数のパターンに対して式をテストできるため、複雑なデータ指向のクエリを簡潔かつ安全に表現できます。
  • JEP 412: 外部関数およびメモリAPI(インキュベーター) – JDK14およびJDK15で導入されたAPIのインキュベーションを改善し、JavaプログラムがJavaランタイムの外部のコードやデータと相互運用できるようにします。これらのAPIは、外部関数(JVM外のコード)を効率的に呼び出し、外部メモリにセキュアにアクセスすることで、Java Native Interface(JNI)の脆弱性や複雑性に煩わされることなく、Javaプログラムによるネイティブ・ライブラリの呼び出しやネイティブ・データの処理を可能にします。これらのAPIは、Javaと非Javaコードの間のやりとりの改善を目的としたProject Panama で開発されています。
  • JEP 414: ベクトルAPI(セカンド・インキュベーター) – ベクトル計算を表現することができ、サポートされているCPUアーキテクチャ上のベクトル命令を最適化し、実行時に確実にコンパイルすることで、同等のスカラー計算よりも優れたパフォーマンスを実現します。

参考資料

オラクルについて

オラクルは、広範かつ統合されたアプリケーション群に加え、セキュリティを備えた自律型のインフラストラクチャをOracle Cloudとして提供しています。オラクル(NYSE:ORCL)に関するより詳細な情報については、www.oracle.comをご覧ください。

商標

Oracle、Java及びMySQLは、Oracle Corporation、その子会社及び関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。本文書は情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。

【本件に関するお問い合わせ先】

日本オラクル株式会社

広報室 谷地田
03-6834-3020