OpenJDK
OpenJDK (Open Java Development Kit) は、プログラミング言語Javaのフリーかつオープンソースの実装である[2]。2006年、サン・マイクロシステムズが始めたもので、GPLリンク例外つきの GNU General Public License (GNU GPL) でライセンスされている。リンク例外つきとしたのは、Javaクラスライブラリのライブラリとしての使用をGPLライセンスの適用外とするためである。OpenJDKはJava SE 7以降の公式リファレンス実装とされている[3]。
![]() | |
開発元 | サン・マイクロシステムズ(オラクルが買収) |
---|---|
初版 | 2007年5月8日 |
最新版 | 22.0.2 - 2024年7月16日 [±] |
最新評価版 | JDK 23 Build 33[1] - 2024年7月19日 [±] |
リポジトリ | |
プログラミング 言語 | C++とJava |
対応OS | クロスプラットフォーム |
プラットフォーム | Javaプラットフォーム |
サポート状況 | Oracle社にて開発中 |
ライセンス | GNU GPL+リンク例外 |
公式サイト | 公式ウェブサイト |
コンポーネント
編集OpenJDKプロジェクトは、いくつかのコンポーネントからなる。主なコンポーネントとして、HotSpot(Java仮想マシン)、Javaクラスライブラリ、javac(Javaコンパイラ)がある。
オラクルのJavaの一部であるウェブブラウザ用プラグインと Web Start はOpenJDKには含まれない。サンはかつてそれらのコンポーネントもオープンソース化したいとしていたが、実際にはサンもオラクルもオープンソース化していない[4]。今のところ利用可能なフリーのWeb Start の実装は、IcedTeaが提供しているもの、およびOpenWebStartがある。
バージョン
編集OpenJDKは当初、Java SE 7のJavaプラットフォームのみをベースとしていた[5]。
しかし、JDK 10以来、Java SEプラットフォームに対するオープンソースのリファレンス実装を作成するプロジェクトがJDKプロジェクトに移譲された[6]。1つのフィーチャーリリースを公開してすぐに終了するという過去のJDKリリースのプロジェクトとは異なり、新しいプロジェクトでは、長期間活動するプロジェクトによって、将来のJDKのフィーチャーリリースのすべてを作成し、6ヶ月毎に新しいバージョンのフィーチャーリリースを公開するという厳格な時間ベースのリリースモデルを使用する方針に転換した[7]。
以下のように、複数の異なるバージョンのOpenJDKおよびJDKプロジェクトの開発ブランチが存在する。
- JDKプロジェクト リリース22[8]。
- JDKプロジェクト リリース21[8]。
- JDKプロジェクト リリース20[8]。
- JDKプロジェクト リリース19[8]。
- JDKプロジェクト リリース18[8]。
- JDKプロジェクト リリース17[8]。
- JDKプロジェクト リリース16[8]。
- JDKプロジェクト リリース15[8]。
- JDKプロジェクト リリース14[8]。
- JDKプロジェクト リリース13[8]。
- JDKプロジェクト リリース12[8]。
- JDKプロジェクト リリース11[8]。
- JDKプロジェクト リリース10[8]。
- OpenJDK 9プロジェクト。これは、JDK 9の基礎となっている[9]。
- OpenJDK 8uプロジェクト。これは、JDK 8をベースにしており、既存のJava 8リリースのアップデートを生成するもの[10]。
- OpenJDK 8プロジェクト。これは、JDK 8の基礎となっており、2014年3月18日にリリースされた[11]。
- OpenJDK 7uプロジェクト。JDK 7をベースとしており、既存のJava 7リリースのアップデートを生成するもの[12]。
- OpenJDK 6プロジェクト。これは、JDK 7をベースとしており、オープンソースバージョンのJava 6を提供するために修正されたもの[13][14][15]。Red HatはOpenJDK 6のリーダーを辞任し、2017年の初めにAzul Systemsにより取得された[16][17]。
ビルド
編集Oracleが、長期サポートリリース(LTS)に対するアップデートをJDK 11や8u211以降はパーミッシブ・ライセンスでリリースするのを中止したため、他のグループらがパーミッシブなライセンスのビルドを提供し始めている[18][19]。 しかし、Oracle JDK 17からは次のLTSがリリースされてから最低1年はパーミッシブ・ライセンスであるNo-Fee Terms and Conditions (NFTC)とすることが発表されている[20]。 また、下記の内、Amazon、Microsoft、Oracle以外はOpenJREも配布している
ビルド | LTS | パーミッシブ | TCK | 商用サポート |
---|---|---|---|---|
Amazon Corretto | Yes | Yes | Yes | オプション(AWS上) |
Azul Zulu Builds of OpenJDK | Yes | Yes | Yes | オプション |
BellSoft Liberica JDK | Yes | Yes | Yes | オプション |
Eclipse Temurin | Yes | Yes | Yes | オプション(Azul,IBM,Red Hat) |
Microsoft Build of OpenJDK | Yes | Yes | Yes | オプション(Azure上) |
Oracle Java SE | Yes | (yes,次期LTSリリースから1年程度) | Yes | Yes |
Oracle OpenJDK | No | Yes | Yes | No |
Red Hat OpenJDK | Yes | Yes | Yes | Yes |
SAP SapMachine | Yes | Yes | Yes | オプション(SAP製品) |
IcedTeaとの関係
編集OpenJDKをFedoraや他のフリーのGNU/Linuxディストリビューションにバンドルするには、フリーソフトウェアのコンポーネントのみでビルド可能になっている必要がある。Javaクラスライブラリの一部にはそうでないコンポーネントがあり、ビルドに際してはデフォルトでサンの製品版JDKを使うようになっており、フリーソフトウェアのみでのビルドは不可能だった。これを解決するため2007年6月にレッドハットが開始したプロジェクトがIcedTeaである[21]。OpenJDKとGNU Classpathの混合によってOpenJDKのブートストラップ問題を解決し、プロプライエタリの部分をClasspathのコードで置換するというプロジェクトである[22][23]。
2007年11月5日、レッドハットは Sun Contributor Agreement と OpenJDK Community TCK License の両方に署名した[24]。この合意の第一の利点の1つはIcedTeaプロジェクトとの緊密な連携であり、Linux環境における技術をLinuxディストリビューションFedoraとアプリケーションサーバJBossから導入することであった。IcedTeaはOpenJDKプロジェクトに残っていた少数のプロプライエタリの部分の代替となるフリーソフトウェアを提供した。
2008年5月、Fedora 9[25][26]とUbuntu 8.04[27]というディストリビューションは完全にフリーかつオープンソースのコードをベースとした IcedTea 6 を採用した[28]。IcedTea 6は、OpenJDK 7ではなくOpenJDK 6のソースに基づいたバージョンである。Fedoraでは、パッケージ名としてOpenJDKという名称を初めて使った[29][25]。Ubuntuでは当初IcedTea7パッケージを採用していたが[30]、後にIcedTea6に変更した。DebianでもIcedTea6パッケージが作成され、lenny (Debian 5.0) に含まれるようになった。2008年7月12日、DebianはOpenJDK 6を不安定版として受理し[31][32]、その後安定版とした[33]。OpenJDKは他にOpenSUSE[34]、Red Hat Enterprise Linux (RHEL)、RHELからの派生であるCentOSなどでも利用可能となっている[35]。
2008年6月、レッドハットは Fedora 9 上で IcedTea 6 を使ってビルドされたOpenJDKパッケージのバイナリが Technology Compatibility Kit のテストに合格し、Java 6 実装と完全互換であると主張できるようになったと発表した[36]。2009年7月、Ubuntu 9.04 でビルドされた IcedTea6 のバイナリが Java SE 6 のTCK互換性テストに全て合格した[37]。
歴史
編集サンの約束と最初のリリース
編集JavaOne 2006 にて、サンはJavaをオープンソースにする意志があると発表し[39][40]、2006年10月25日の Oracle OpenWorld にてジョナサン・シュワルツはJavaプラットフォーム中核部のオープンソース化を30から60日以内に発表するだろうと述べた[41]。
2006年11月13日、サンはJava仮想マシンであるHotSpotとJavaコンパイラを GNU General Public License のフリーソフトウェアとしてリリースし、JDKの残りの部分(Javaランタイム環境など)も2007年3月までにGPLでリリースする予定だが、「サン自身がGPLで公開する権利を有していない少数のコンポーネントは除く」とした[42]。フリーソフトウェアの唱道者リチャード・ストールマンはこれについて、彼がそれまでJavaとJavaで書かれてきたプログラムについて主張してきた「Javaトラップ」というベンダーロックインの終りだとした[43]。
クラスライブラリのリリース
編集Java Development Kit (JDK) のほとんどの部分をフリーかつオープンソースのものとして2007年前半にリリースするという約束に続き、サンは2007年5月8日、サードパーティが著作権を持っていてサンがGPLで公開できない部分を除いたJavaクラスライブラリのソースコードをGPLでリリースした[44]。除外された部分の一覧には、Javaのグラフィカルユーザインタフェース (GUI) の重要なコンポーネントもいくつか含まれていた。サンは残りのプロプライエタリのコンポーネントも代替実装で置換し、クラスライブラリを完全にフリーにする計画だとした。
2007年5月にリリースされた時点で、OpenJDKのクラスライブラリの4%がプロプライエタリだった[45]。2008年5月にOpenJDK 6が登場した時点では、それが1%未満になっていて(残ったのはSNMP実装[46]であり、Java仕様の一部ではない)[25]、OpenJDKをバイナリ部分なしにビルドできるようになった[46]。そして2009年4月、OpenJDK 7のb53の一部として問題の部分を除いてビルドできるようになった[47]。
これは、サン・マイクロシステムズとOpenJDKコミュニティの努力の成果である。残存部分[48]は、FLOSSとしてリリースされたり、代替実装で置換されたりした。2010年12月、全ての残存部分がオープンソースで置換され、JDK全体が完全にオープンソースとなった[49]。
コミュニティによる改良
編集2007年11月5日、レッドハットはサンとの合意を発表し、Sun Contributor Agreement(サンによるフリーかつオープンソースのソフトウェアプロジェクトにレッドハットの全技術者が参加するという契約)と OpenJDK Community Technology Compatibility Kit (TCK) License Agreement(OpenJDKに基づいたプロジェクトが Java SE 6 仕様に準拠していることを確認するテストスイートへのアクセス権を与える契約)に署名した[50]。
また2007年11月、Porters Group が結成され[51]、OpenJDKを異なるプロセッサアーキテクチャやオペレーティングシステムに移植する作業を開始。BSD系への移植プロジェクト[52]は Kurt Miller と Greg Lewis が主導し、Mac OS X への移植プロジェクト SoyLatte は Landon Fuller が主導した[53]。2008年1月、彼らは Porters Group 経由でOpenJDKへの参加に関心を示し、メーリングリストで議論を開始した。他に Bryan Varner 率いるHaikuへのJava移植チームも結成された[54]。
2007年12月、サンはOpenJDKのバージョン管理をTeamWareからMercurialに移行させ、オープンソースコミュニティへのリリース工程を進めた[55][56]。
OpenJDKでは寄贈コードを受け入れる際にかなり厳密な手続きをとっていた。寄贈コードは必ず別のOpenJDKコミッターがレビューし、寄贈者は Sun/Oracle Contributor Agreement (SCA/OCA[57]) に合意しなければならない。さらにバグが修正されていることを示すためにjtreg[58]テストも行うのが好ましい。2008年9月まで、外部から提供されたパッチをコードベースにコミットするのはサンの技術者のみが行っていて[59]、かなり対応が遅かった[60]。その後改善され、単純なパッチやOpenJDK 7からOpenJDK 6へのバックポートは数時間でコミットされるようになった[61]。
IBM、アップル、SAPの参加
編集2010年10月11日、Apache Harmony プロジェクトを推進してきたIBMがオラクルのOpenJDKに参加表明し、事実上HarmonyからOpenJDKへ移行することを決めた[62][63]。IBMでLinuxおよびオープンソース関連を指揮する Bob Sutor はブログで「IBMは Apache Harmony からOpenJDKへと開発の重心をシフトさせるだろう」と記した[64]。
2010年11月12日、(3週間前に自身のJavaランタイム環境の移植版に問題があるとした[65])Appleはオラクルと共に Mac OS X 向けOpenJDKプロジェクトを発表した。アップルは主要コンポーネント、ツール、テクノロジーを Mac OS X 上の Java SE 7 実装向けに提供するとし、その中にはHotSpotベースのJava仮想マシン(32ビットと64ビット版)、クラスライブラリ、新たなグラフィカルクライアントのためのネットワークプロトコルスタックが含まれるとした[66]。
2011年1月11日、OpenJDKにて Mac OS X 向け移植プロジェクトが結成され、アップルから初のコード寄贈が行われた。Mac OS X 版は当初BSD移植版をベースにしていた[67]。
脚注
編集- ^ “"OpenJDK JDK 23 Early-Access Builds"”. 2024年7月24日閲覧。
- ^ “OpenJDK Legal Documents”. Sun Microsystems. 2012年11月8日閲覧。
- ^ JDK Builds from Oracle
- ^ Darcy, Joe (June 8, 2009). “OpenJDK and the new plugin”. 2009年9月5日閲覧。
- ^ “Didn't you promise to open source both JDK 6 and JDK 7 last November? What happened to JDK 6?”. Sun Microsystems. October 14, 2007閲覧。 “Sun did make that promise, and we plan to keep it. But in the six months since the November 2006 announcement, it has become clear that doing this is far more complex than just changing the license and publishing the source code.”
- ^ oracle.com, mark reinhold at (September 26, 2017). “CFV: New Project: JDK”. 2018年2月16日閲覧。
- ^ oracle.com, mark reinhold at (September 6, 2017). “Accelerating the JDK release cadence”. 2018年2月16日閲覧。
- ^ a b c d e f g h i j k l m OpenJDK. “JDK Project”. 2023年10月17日閲覧。
- ^ “JDK 9”. openjdk.java.net. 2018年2月16日閲覧。
- ^ “OpenJDK: JDK 8 Updates”. openjdk.java.net. 2018年2月16日閲覧。
- ^ “JDK 8”. openjdk.java.net. 2018年2月16日閲覧。
- ^ “JDK 7”. openjdk.java.net. 2018年2月16日閲覧。
- ^ “OpenJDK: JDK 6”. openjdk.java.net. 2018年2月16日閲覧。
- ^ It will be (Open)JDK7 where OpenJDK==JDK | Java.net Archived August 20, 2011, at the Wayback Machine.. Weblogs.java.net. Retrieved on 2013-08-09.
- ^ Darcy, Joe (February 11, 2008). “The code is coming! The code is coming!”. February 16, 2008閲覧。 “At Sun we're making final preparations for the first source release for the OpenJDK 6 project. We plan to release a tarball of the source, along with matching binary plugs, by February 15, 2008.”
- ^ Haley, Andrew (1 October 2016). "OpenJDK6 End Of Life". jdk6-dev (Mailing list). 2017年7月2日時点のオリジナルよりアーカイブ。2018年2月12日閲覧。
- ^ Bell, Tim (1 October 2016). "New lead for the JDK 6 Project: Andrew Brygin". jdk6-dev (Mailing list). 2018年2月19日時点のオリジナルよりアーカイブ。2018年2月19日閲覧。
- ^ “Time to look beyond Oracle's JDK”. Stephen Colebourne. 2019年4月23日閲覧。
- ^ Difference between OpenJDK and AdoptOpenJDK
- ^ “Introducing the Free Java License”. 2021年9月16日閲覧。
- ^ Fitzsimmons, Thomas (June 8, 2007). “Credits”. 2007年6月8日閲覧。
- ^ Andrew, Haley (June 7, 2007). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。
- ^ Mark, Wielaard (June 7, 2007). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。
- ^ “Red Hat and Sun Collaborate to Advance Open Source Java Technology”. Red Hat (November 5, 2007). 2007年11月6日閲覧。
- ^ a b c Wade, Karsten (March 13, 2008). “OpenJDK in Fedora 9!”. redhatmagazine.com. 2008年4月5日閲覧。 “Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.”
- ^ “Open Source Java Technology Debuts In GNU/Linux Distributions”. Sun Microsystems. 2008年5月3日時点のオリジナルよりアーカイブ。2008年5月2日閲覧。
- ^ “openjdk-6 in Ubuntu”. 2008年4月19日閲覧。
- ^ Reinhold, Mark (April 24, 2008). “There’s not a moment to lose!”. 2008年4月29日時点のオリジナルよりアーカイブ。2008年4月19日閲覧。
- ^ OpenJDK trademark agreement
- ^ “icedtea-java7 in Ubuntu”. 2008年4月19日閲覧。
- ^ Topic, Dalibor (July 14, 2008). “QotD: Debian Overview of openjdk-6 source package”. 2008年7月15日閲覧。
- ^ “Overview of openjdk-6 source package”. debian.org. 2008年7月15日閲覧。
- ^ “Package: openjdk-6-jdk”. debian.org (February 14, 2009). 2009年2月16日閲覧。
- ^ “Additional package repositories”. SUSE LLC. 2019年3月3日閲覧。
- ^ “How to download and install prebuilt OpenJDK packages”. 2010年3月3日閲覧。
- ^ Sharples, Rich (June 19, 2008). “Java is finally Free and Open”. 2012年11月9日閲覧。
- ^ Announcing OpenJDK 6 Certification for Ubuntu 9.04 (jaunty)
- ^ Fuller, Landon (August 19, 2008). “SoyLatte, Meet OpenJDK: OpenJDK 7 for Mac OS X”. 2008年8月22日閲覧。
- ^ Schwartz, Jonathan (May 23, 2006). “Busy Week...”. Sun Microsystems. 2006年6月12日時点のオリジナルよりアーカイブ。2007年5月9日閲覧。
- ^ (OGG Theora) Sun Opens Java, Sun Microsystems[リンク切れ]
- ^ “Sun CEO sets open source Java time frame - Announcement set for 30 to 60 days”. InfoWorld (2006年10月25日). 2011年12月22日閲覧。
- ^ “Sun Opens Java”. Sun Microsystems (November 13, 2006). April 21, 2007時点のオリジナルよりアーカイブ。2007年5月9日閲覧。
- ^ Stallman, Richard. “Free But Shackled—The Java Trap”. 2007年12月4日閲覧。
- ^ “Open JDK is here!”. Sun Microsystems (May 8, 2007). 2007年5月9日閲覧。
- ^ Fitzsimmons, Thomas (May 18, 2007). “Plans for OpenJDK”. 2007年5月22日閲覧。
- ^ a b “OpenJDK 6 b10 source posted” (May 30, 2008). 2008年6月1日閲覧。
- ^ “Changes in OpenJDK7 b53” (April 2, 2009). 2009年9月5日閲覧。
- ^ Herron, David (October 4, 2007). “Plans for OpenJDK”. 2007年10月9日閲覧。
- ^ Kelly O'Hair (December 2010). “OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed”. Oracle Corporation. 2011年11月25日閲覧。
- ^ Broad contributor agreement and TCK License pave way for a fully compatible, free and open source Java Development Kit for Red Hat Enterprise Linux
- ^ Porters Group
- ^ http://www.eyesbeyond.com/freebsddom/java/jdk16.html
- ^ http://landonf.bikemonkey.org/code/macosx/
- ^ New java for haiku team formed
- ^ James Gosling (2006). "James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1" (Interview). Interviewed by Robert Eckstein. 2013年7月23日時点のオリジナルよりアーカイブ。
- ^ O'Hair, Kelly (December 12, 2007), Mercurial OpenJDK Questions, オリジナルの2008-02-14時点におけるアーカイブ。
- ^ “Sun Microsystems Inc. Contributor Agreement”. 2012年11月9日閲覧。
- ^ “Regression Test Harness for the OpenJDK platform: jtreg”. 2008年8月26日閲覧。
- ^ Kennke, Roman (September 29, 2008). “A small step for me”. 2008年10月3日時点のオリジナルよりアーカイブ。2008年10月19日閲覧。
- ^ Tripp, Andy (July 16, 2007). “Classpath hackers frustrated with slow OpenJDK process”. 2008年4月20日閲覧。
- ^ Darcy, Joe (June 10, 2010). “Backporting changeset from 7 to 6 for bugfix”. 2012年11月9日閲覧。
- ^ “Oracle and IBM Collaborate to Accelerate Java Innovation Through OpenJDK”. Oracle Corporation. 2010年10月22日閲覧。
- ^ Ryan Paul. “Java wars: IBM joins OpenJDK as Oracle shuns Apache Harmony”. Ars Technica. 2010年10月22日閲覧。
- ^ Bob Sutor. “IBM joins the OpenJDK community, will help unify open source Java efforts”. 2010年10月22日閲覧。 “IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK. For others who wish to do the same, we’ll work together to make the transition as easy as possible. IBM will still be vigorously involved in other Apache projects.”
- ^ “Java for Mac OS X 10.6 Update 3 and 10.5 Update 8 Release Notes” (October 20, 2010). 2012年11月9日閲覧。
- ^ “Oracle and Apple Announce OpenJDK Project for Mac OS X”. Business Wire (2010年11月12日). 2010年11月12日閲覧。 “Oracle and Apple today announced the OpenJDK project for Mac OS X. Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple’s Java technology available to open source developers so they can access and contribute to the effort.”
- ^ Mike Swingler(Apple) (2011年1月11日). “Announcing: OpenJDK for Mac OS X source repository, mailing list, project home”. OpenJDK. 2010年11月12日閲覧。 “I'm very happy to let you know that today we made the first public contribution of code to the OpenJDK project for Mac OS X. This initial contribution builds on the hard work of the BSD port, and initially has the same functionality. Today's contribution simply modifies the build process to create universal binary, and produces a .jdk bundle which is recognized by Java Preferences and the JVM detection logic in Mac OS X.”
- ^ Volker Simonis (SAP AG) (2011年7月14日). “SAP joins the OpenJDK”. OpenJDK. 2010年11月12日閲覧。 “I'm really happy that as of today, SAP has signed the Oracle Contributor Agreement (OCA). This means that with immediate effect the SAP JVM developers can officially join the discussions on the various OpenJDK mailing lists and contribute patches and enhancements to the project.”