OpenJDK ( Open Java Development Kit ) は、Java Platform, Standard Edition (Java SE)の実装です。 [ 2 ]これは、 Sun MicrosystemsがOracle Corporationに買収される 4 年前の 2006 年に開始した取り組みの結果です。OpenJDK は、GNU General Public License (GPL) バージョン 2の下でリリースされたフリーでオープンソースのソフトウェアですが、 Java クラス ライブラリにリンクするコンポーネントがGPLライセンスの条件の対象にならないように、GPL リンク例外が適用されます。OpenJDK は、バージョン 7 以降、Java SE の公式リファレンス実装であり、最も人気のある JDK ディストリビューションです。[ 3 ] [ 4 ] [ 5 ]
サンはJavaOne 2006でJavaがオープンソースソフトウェアになると発表し[ 6 ] [ 7 ]、2006年10月25日、Oracle OpenWorldカンファレンスでジョナサン・シュワルツは、同社が30~60日以内にコアJavaプラットフォームのオープンソース化を発表する予定だと述べた[ 8 ]。
サンは2006年11月13日にJava HotSpot仮想マシンとコンパイラをGNU General Public Licenseの下でフリーソフトウェアとしてリリースし、残りのJDK(Java Runtime Environmentを含む)を2007年3月までにGPLの下に置くことを約束した。「ただし、GPLの下でソース形式で公開する権利をサンが持っていないいくつかのコンポーネントは除く」。[ 9 ]フリーソフトウェアの擁護者であるリチャード・ストールマンによれば、これはJavaおよびJavaで書かれたプログラムに適用されるベンダーロックインである「Javaの罠」を終わらせることになるという。[ 10 ]
2007 年前半にほぼ完全にフリーでオープンソースのコードに基づいたJava 開発キット(JDK)をリリースするという約束に従い、 [ 11 ] Sun は 2007 年 5 月 8 日に Java クラス ライブラリの完全なソース コードを GPL の下でリリースしました。ただし、第三者から Sun にライセンス供与されていた一部の限定的な部分はGPL の下で再ライセンス供与することができませんでした。 [ 12 ]制限された部分のリストには、Javaグラフィカル ユーザー インターフェイス(GUI) のいくつかの主要コンポーネントが含まれていました。Sun は、残りの独自コンポーネントを代替実装に置き換え、クラス ライブラリを完全にフリーにする予定であると述べました。
2007 年 5 月に最初にリリースされたとき、OpenJDK クラス ライブラリの 4% はプロプライエタリのままでした。[ 13 ] 2008 年 5 月に OpenJDK 6 がリリースされた時点では、1% 未満 ( Java 仕様の一部ではないSimple Network Management Protocol (SNMP) の実装[ 14 ] ) が残っており、 [ 15 ]バイナリ プラグなしで OpenJDK をビルドすることが可能になりました。[ 14 ]バイナリ プラグの要件は、その後 2009 年 4 月に b53 の一部として OpenJDK 7 から削除されました。[ 16 ]
これは、最初の1年間で、Sun MicrosystemsとOpenJDKコミュニティの努力によって可能になった。各制約[ 17 ]は、フリーでオープンソースのソフトウェアとしてリリースされるか、代替品に置き換えられた。2010年12月から、いわゆるバイナリプラグはすべてオープンソースのソフトウェアに置き換えられ、JDK全体がオープンソース化され、バイナリプラグは不要になった。[ 18 ]
2007年11月5日、Red HatはSunとの合意を発表し、Sunの広範な貢献者契約(Red Hatの全エンジニアによるSun主導のすべてのフリーおよびオープンソースソフトウェアプロジェクトへの参加を対象とする)とSunのOpenJDKコミュニティ技術互換性キット(TCK)ライセンス契約(OpenJDKに基づくプロジェクトがJava SE 6仕様に準拠しているかどうかを判断するテストスイートへのアクセス権を同社に与える)に署名した。[ 19 ]
また、2007 年 11 月には、OpenJDK をさまざまなプロセッサ アーキテクチャやオペレーティングシステムに移植する取り組みを支援するために、OpenJDK 上にPorters Group が設立されました。Kurt Miller と Greg Lewis が率いるBerkeley Software Distribution (BSD) 移植プロジェクトと、Landon Fuller が率いるMac OS X移植プロジェクト (BSD のプロジェクトに基づく) は、Porters Group を通じて OpenJDK に参加することに関心を示しています。2008 年 1 月現在、両方ともメーリング リストでの議論に参加しています。Porters Group 上で正式化を待っているもう 1 つのプロジェクトは、Bryan Varner が率いるHaiku Java チームです。 [ 20 ]
2007年12月、SunはOpenJDKをオープンソースコミュニティにリリースするプロセスの一環として、 OpenJDKのリビジョン管理をTeamWareからMercurial(後にGitとGitHubへ)に移行した。 [ 21 ] [ 22 ]
OpenJDK はコード貢献を受け入れるための比較的厳格な手順を採用しています。提案された貢献はすべて別の OpenJDK コミッターによるレビューを受けなければならず、貢献者は Sun/Oracle 貢献者契約 (SCA/OCA) に署名している必要があります。[ 23 ]できれば、バグが修正されたことを示すjtreg [ 24 ]テストも必要です。当初、外部パッチ提出プロセスは遅く[ 25 ]、2008 年 9 月までは、コードベースへのコミットは Sun のエンジニアのみが行っていました。[ 26 ]プロセスは改善され、2010 年現在では簡単なパッチやOpenJDK 7からOpenJDK 6へのバックポートは、数日ではなく数時間で完了する。[ 27 ]
2011年に、OpenJDK 6.0のOS/2への非公式移植版が初めてリリースされました。[ 28 ]この移植版は、OS/2派生OSであるArcaOSに含まれています。[ 29 ]
2013 年 9 月 25 日、Microsoft とAzul Systems は協力して Zulu [ 30 ]を作成しました。これは Windows Azure クラウドのユーザー向けの OpenJDK のビルドです。Zulu はコミュニティ サイトZulu.orgから無料でダウンロードできます。また、 Canonical の Juju Charm Store [ 32 ] 、 Docker Hub [ 33 ] 、および Azul Systems リポジトリを介して Amazon Web Services [ 31 ]で Zulu を入手することもできます。Azul は OpenJDK プロジェクトにバグ修正と機能強化を還元しており、社内に複数のプロジェクト コミッターがいます。[ 34 ] Red Hat は 2017 年初頭に OpenJDK 6 のリーダーシップを辞任し、その後 Azul Systems が引き継ぎました。[ 35 ] [ 36 ]
2016年4月以降、 GitHubのojdkbuildプロジェクト[ 37 ]には、 Microsoft Windows用のOpenJDKのサポート対象外のコミュニティビルドがあり、Oracle JDKのアップデートに合わせてリリースされています。ビルド8u151以降、MSIインストーラーには、IcedTea-Webプロジェクトに基づいたJava Web Startを使用するためのオプションコンポーネントが用意されています。
2020年には、 Itaniumプラットフォーム上のOpenVMSへのOpenJDK 8の移植版がリリースされた。[ 38 ]
OpenJDKへの外部からの貢献は、プロジェクト開始以来増加しています。2018年9月にリリースされたOpenJDK 11では、20%の外部修正[ 39 ]が採用され、17の新しいJEP(機能)が追加されました。そのうち3つはコミュニティからの貢献です。具体的には、JEP 315: "Improve Aarch64 Intrinsics"(BellSoftによる貢献)、JEP 318: "Epsilon: A No-Op Garbage Collector"(Red Hatによる貢献)、JEP 331: "Low-Overhead Heap Profiling"(Googleによる貢献)です。[ 40 ]
2010年10月11日、Apache Harmonyプロジェクト最大の参加企業であるIBMは、 Oracleと共にOpenJDKプロジェクトに参加することを決定し、事実上HarmonyからOpenJDKへと開発の取り組みをシフトした。 [ 41 ] [ 42 ] IBMのLinuxおよびオープンソース責任者であるBob Sutorは、「IBMはApacheプロジェクトHarmonyからOpenJDKへと開発の取り組みをシフトする」とブログに記した。[ 43 ]
2010年11月12日、Apple Inc.(自社のJavaランタイムポート[ 44 ]を廃止してから3週間後)とOracle Corporationは、Mac OS X向けのOpenJDKプロジェクトを発表しました。Appleは、32ビットおよび64ビットのHotSpotベースのJava仮想マシン、クラスライブラリ、ネットワークスタック、新しいグラフィカルクライアントの基盤など、Mac OS X上でJava SE 7を実装するために必要な主要コンポーネント、ツール、テクノロジーのほとんどを提供します。[ 45 ]
2011年1月11日、Mac OS X Port ProjectがOpenJDK上に作成され、Appleがプロジェクトに最初の公開コード貢献を行った。Appleの最初の貢献はOpenJDK BSDポートをベースに構築された。[ 46 ]
OpenJDKプロジェクトは、いくつかのコンポーネントを生成します。最も重要なのは、仮想マシン(HotSpot)、Javaクラスライブラリ、およびJavaコンパイラ(javac)です。
Oracle Javaの一部であるWebブラウザプラグインとWeb Startは、 OpenJDKには含まれていません。Sunは以前、これらのコンポーネントをオープンソース化しようと試みると表明していましたが、SunもOracle Corporationもそれを実行していません。[ 48 ] 2016年現在利用可能な無料のプラグインと Web Start 実装は、 IcedTeaのものだけです。
OpenJDK 9+ はGraalVM (JEP 295) を使用した事前コンパイル(AOT、jaotc)をサポートしています。[ 49 ]実験的なフラグにより Graal JIT (JEP 317) の使用が可能になります。[ 50 ]-XX:+EnableJVMCIProduct
OpenJDKは当初、 JavaプラットフォームのJDK 7バージョンのみに基づいていました。 [ 51 ]
JDK 10以降、Java SE Platformのオープンソースのリファレンス実装を作成する取り組みはJDKプロジェクトに移管されました。[ 52 ]過去のJDKリリースプロジェクトは1つの機能リリースを作成して終了していましたが、この長期プロジェクトは将来のすべてのJDK機能リリースを作成し、厳密な時間ベースのモデルに従って6か月ごとに機能リリースを出荷します。[ 53 ]
Oracle が寛容なライセンスの下で長期サポート(LTS) リリースのアップデートをリリースしなくなったため、他の組織が通常および長期サポートの両方の条件で独自のビルドを公開し始めました。[ 54 ] [ 55 ] [ 56 ]多くのオペレーティングシステムは、パッケージマネージャを介して独自のビルドを提供しており、多くのLinux ディストリビューションやMicrosoft Windowsなどが含まれます。
Fedora Linuxやその他のフリーLinuxディストリビューションに OpenJDK をバンドルするには、OpenJDK がフリー ソフトウェアコンポーネントのみを使用してビルド可能である必要がありました。クラス ライブラリの制約のあるコンポーネントと、ビルド システム内で OpenJDK のビルドに使用される JDK が Sun JDK であるという暗黙の前提のため、これは不可能でした。オープン性を実現するために、 Red Hat は2007 年 6 月に IcedTea プロジェクトを開始しました。[ 83 ]これは、制約を GNU Classpath のコードに置き換えることで OpenJDK をブートストラップするために使用できる OpenJDK/ GNU Classpathハイブリッドとして始まりました。[ 84 ] [ 85 ]
2007年11月5日、Red HatはSun Contributor AgreementとOpenJDK Community TCK Licenseの両方に署名しました。[ 86 ]この契約の最初の利点の1つは、 LinuxディストリビューションFedoraとアプリケーションサーバーJBossのテクノロジーをLinux環境に統合するIcedTeaプロジェクトとの連携が強化されたことです。IcedTeaは、OpenJDKプロジェクトに残っていた少数のプロプライエタリなセクションに対して、フリーソフトウェアの代替手段を提供しました。
2008 年 5 月、Fedora 9 [ 15 ] [ 87 ]およびUbuntu 8.04 [ 88 ] ディストリビューションには、完全にフリーでオープンソースのソフトウェアに基づいた IcedTea 6 が含まれていました。[ 89 ] Fedora 9 は、OpenJDK7 ではなく Sun の OpenJDK6 ソースに基づいた IcedTea6 を同梱した最初のバージョンでした。また、パッケージ名にIcedTea ではなくOpenJDK (OpenJDK 商標契約[ 90 ]経由) を使用した最初のバージョンでもありました。 [ 15 ] Ubuntuも最初に IcedTea7 [ 91 ]をパッケージ化し、その後 IcedTea6 に移行しました。IcedTea6 のパッケージはDebian用に作成され、 Lennyに含まれました。2008 年 7 月 12 日、Debian はunstable で OpenJDK-6 を受け入れ、[ 92 ] [ 93 ]後にstableに含まれました。[ 94 ] OpenJDKはopenSUSE、[ 95 ] Red Hat Enterprise Linux 、およびCentOSなどのRHEL派生版でも利用可能です。[ 96 ]
2008 年 6 月、Red Hat は、IcedTea 6 を使用してビルドされたFedora 9上の OpenJDK のパッケージ バイナリが技術互換性キットのテストに合格し、完全な互換性のある Java 6 実装であると主張できると発表した。[ 97 ] 2009 年 7 月、 Ubuntu 9.04用の IcedTea 6 バイナリ ビルドが、 Java SE 6技術互換性キット(TCK)のすべての互換性テストに合格した。[ 98 ]
2008年8月以降、OpenJDK 7はmacOSおよびその他のBSD系OSで使用可能です。[ 99 ]
Android Nougatでは、モバイルオペレーティングシステムのソースコード内の Java ライブラリとして、現在サポートが終了しているApache Harmonyに代わって OpenJDK が使用されるようになりました。Googleは、Harmony を介して著作権で保護された Java API を再実装したことによる著作権および特許侵害の主張をめぐり、 Oracle と法的紛争を抱えていました。Google はこの変更が Android 上の Java と他のプラットフォームとの間でより一貫性のあるプラットフォームを作成するためであると述べる一方で、この切り替えは訴訟が動機であったことを認め、Oracle が GPL ライセンスに基づいて OpenJDK コードの使用を許可していたと主張しました。[ 100 ]
Thomas Fitzsimmons は、Fedora 9 のリリース ノートのソース ページを更新し、Fedora 9 には OpenJDK 7 の IcedTea 実装ではなく OpenJDK 6 が同梱されることを反映させました。Fedora 9 (Sulphur) は 2008 年 5 月にリリース予定です。
は、開発作業をApache Project HarmonyからOpenJDKに移行します。同様の移行を希望する他の企業のために、移行が可能な限り容易になるよう協力していきます。IBMは、他のApacheプロジェクトにも引き続き積極的に関与していきます。
とAppleは本日、Mac OS X向けOpenJDKプロジェクトを発表しました。Appleは、32ビットおよび64ビットのHotSpotベースのJava仮想マシン、クラスライブラリ、ネットワークスタック、新しいグラフィカルクライアントの基盤など、Mac OS X上でJava SE 7を実装するために必要な主要コンポーネント、ツール、テクノロジーの大部分を提供します。OpenJDKは、AppleのJavaテクノロジーをオープンソース開発者が利用できるようにし、開発者がこの取り組みにアクセスして貢献できるようにします。
本日、Mac OS X 用 OpenJDK プロジェクトに初めて公開コードを貢献したことをお知らせできて大変嬉しく思います。 この最初の貢献は、BSD ポートの努力の上に構築されており、当初は同じ機能を持っています。 本日の貢献は、ユニバーサル バイナリを作成するためにビルド プロセスを変更するだけで、Mac OS X の Java 設定と JVM 検出ロジックによって認識される .jdk バンドルを生成します。
本日より SAP が Oracle Contributor Agreement (OCA) に署名したことを大変嬉しく思います。これにより、SAP JVM 開発者は、OpenJDK のさまざまなメーリングリストでの議論に正式に参加し、プロジェクトにパッチや機能強化を提供できるようになります。
では Graal をバックエンド (コード生成用) として使用する 'jaotc' という新しいツールが導入されます。
サンは確かにその約束をし、それを守るつもりです。しかし、2006年11月の発表から6か月が経ち、これを行うことは、ライセンスを変更してソースコードを公開するよりもはるかに複雑であることが明らかになりました。
{{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク)