OpenJDK

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
OpenJDK
OpenJDK logo.png
開発元 オラクル
最新評価版 OpenJDK 8 Build b46 / 2012年7月5日(5年前) (2012-07-05
プログラミング言語 C++Java
対応OS クロスプラットフォーム
種別 Javaプラットフォーム
ライセンス GNU GPL+リンク例外
公式サイト 公式ウェブサイト
テンプレートを表示

OpenJDK (Open Java Development Kit) は、プログラミング言語Javaフリーかつオープンソースの実装である[1]。2006年、サン・マイクロシステムズが始めたもので、GPLリンク例外つきの GNU General Public License (GNU GPL) でライセンスされている。リンク例外つきとしたのは、Javaクラスライブラリのライブラリとしての使用をGPLライセンスの適用外とするためである。OpenJDKは Java SE 7 の公式リファレンス実装とされている[2][3]

コンポーネント[編集]

OpenJDKプロジェクトは、いくつかのコンポーネントからなる。主なコンポーネントとして、HotSpotJava仮想マシン)、JavaクラスライブラリjavacJavaコンパイラ)がある。

オラクルのJavaの一部であるウェブブラウザ用プラグインと Web Start はOpenJDKには含まれない。サンはかつてそれらのコンポーネントもオープンソース化したいとしていたが、実際にはサンもオラクルもオープンソース化していない[4]。今のところ利用可能なフリーのプラグインと Web Start の実装は、IcedTeaが提供しているものだけである。

サポートしているJDKのバージョン[編集]

OpenJDKが当初ベースとしていたのは JDK 7 のみだった[5]

Javaのバージョンに合わせて、以下のような別々のOpenJDKプロジェクトが存在する。

  • OpenJDK 9 プロジェクト - JDK 9 のベースとなる予定のもの
  • OpenJDK 8 Update プロジェクト - JDK 8 をベースとし,既存のリリースを更新するもの
  • OpenJDK 8 プロジェクト - JDK 8 のベースとなるもの
  • OpenJDK 7 Update プロジェクト - JDK 7 をベースとし、既存のリリースを更新するもの
  • OpenJDK 7 プロジェクト - JDK 7 のベースとなるもの
  • OpenJDK 6 プロジェクト - JDK 7 をベースとし、Java 6 のオープンソース版を提供しようとするもの[6][7]

IcedTeaとの関係[編集]

OpenJDKをFedoraや他のフリーGNU/Linuxディストリビューションにバンドルするには、フリーソフトウェアのコンポーネントのみでビルド可能になっている必要がある。Javaクラスライブラリの一部にはそうでないコンポーネントがあり、ビルドに際してはデフォルトでサンの製品版JDKを使うようになっており、フリーソフトウェアのみでのビルドは不可能だった。これを解決するため2007年6月にレッドハットが開始したプロジェクトがIcedTeaである[8]。OpenJDKとGNU Classpathの混合によってOpenJDKのブートストラップ問題を解決し、プロプライエタリの部分をClasspathのコードで置換するというプロジェクトである[9][10]

2007年11月5日、レッドハットは Sun Contributor Agreement と OpenJDK Community TCK License の両方に署名した[11]。この合意の第一の利点の1つはIcedTeaプロジェクトとの緊密な連携であり、Linux環境における技術をLinuxディストリビューションFedoraとアプリケーションサーバJBossから導入することであった。IcedTeaはOpenJDKプロジェクトに残っていた少数のプロプライエタリの部分の代替となるフリーソフトウェアを提供した。

2008年5月、Fedora 9[12][13]Ubuntu 8.04[14]というディストリビューションは完全にフリーかつオープンソースのコードをベースとした IcedTea 6 を採用した[15]。IcedTea6は、OpenJDK7ではなくOpenJDK6のソースに基づいたバージョンである。Fedoraでは、パッケージ名としてOpenJDKという名称を初めて使った[16][12]Ubuntuでは当初IcedTea7パッケージを採用していたが[17]、後にIcedTea6に変更した。DebianでもIcedTea6パッケージが作成され、lenny (Debian 5.0) に含まれるようになった。2008年7月12日、DebianはOpenJDK6を不安定版として受理し[18][19]、その後安定版とした[20]。OpenJDKは他にOpenSUSE[21]Red Hat Enterprise Linux (RHEL)、RHELからの派生であるCentOSなどでも利用可能となっている[22]

2008年6月、レッドハットは Fedora 9 上で IcedTea 6 を使ってビルドされたOpenJDKパッケージのバイナリが Technology Compatibility Kit のテストに合格し、Java 6 実装と完全互換であると主張できるようになったと発表した[23]。2009年7月、Ubuntu 9.04 でビルドされた IcedTea6 のバイナリが Java SE 6 のTCK互換性テストに全て合格した[24]

2008年8月以降、OpenJDK7は Mac OS XBSD系OSでも動作可能となった[25]

歴史[編集]

サンの約束と最初のリリース[編集]

JavaOne 2006 にて、サンはJavaをオープンソースにする意志があると発表し[26][27]、2006年10月25日の Oracle OpenWorld にてジョナサン・シュワルツJavaプラットフォーム中核部のオープンソース化を30から60日以内に発表するだろうと述べた[28]

2006年11月13日、サンはJava仮想マシンであるHotSpotとJavaコンパイラを GNU General Public Licenseフリーソフトウェアとしてリリースし、JDKの残りの部分(Javaランタイム環境など)も2007年3月までにGPLでリリースする予定だが、「サン自身がGPLで公開する権利を有していない少数のコンポーネントは除く」とした[29]。フリーソフトウェアの唱道者リチャード・ストールマンはこれについて、彼がそれまでJavaとJavaで書かれてきたプログラムについて主張してきた「Javaトラップ」というベンダロックインの終りだとした[30]

クラスライブラリのリリース[編集]

Java Development Kit (JDK) のほとんどの部分をフリーかつオープンソースのものとして2007年前半にリリースするという約束に続き、サンは2007年5月8日、サードパーティが著作権を持っていてサンがGPLで公開できない部分を除いたJavaクラスライブラリのソースコードをGPLでリリースした[31]。除外された部分の一覧には、Javaのグラフィカルユーザインタフェース (GUI) の重要なコンポーネントもいくつか含まれていた。サンは残りのプロプライエタリのコンポーネントも代替実装で置換し、クラスライブラリを完全にフリーにする計画だとした。

2007年5月にリリースされた時点で、OpenJDKのクラスライブラリの4%がプロプライエタリだった[32]。2008年5月にOpenJDK6が登場した時点では、それが1%未満になっていて(残ったのはSNMP実装[33]であり、Java仕様の一部ではない)[12]、OpenJDKをバイナリ部分なしにビルドできるようになった[33]。そして2009年4月、OpenJDK7のb53の一部として問題の部分を除いてビルドできるようになった[34]

これは、サン・マイクロシステムズとOpenJDKコミュニティの努力の成果である。残存部分[35]は、FLOSSとしてリリースされたり、代替実装で置換されたりした。2010年12月、全ての残存部分がオープンソースで置換され、JDK全体が完全にオープンソースとなった[36]

コミュニティによる改良[編集]

2007年11月5日、レッドハットはサンとの合意を発表し、Sun Contributor Agreement(サンによるフリーかつオープンソースのソフトウェアプロジェクトにレッドハットの全技術者が参加するという契約)と OpenJDK Community Technology Compatibility Kit (TCK) License Agreement(OpenJDKに基づいたプロジェクトが Java SE 6 仕様に準拠していることを確認するテストスイートへのアクセス権を与える契約)に署名した[37]

また2007年11月、Porters Group が結成され[38]、OpenJDKを異なるプロセッサアーキテクチャオペレーティングシステムに移植する作業を開始。BSD系への移植プロジェクト[39]は Kurt Miller と Greg Lewis が主導し、Mac OS X への移植プロジェクト SoyLatte は Landon Fuller が主導した[40]。2008年1月、彼らは Porters Group 経由でOpenJDKへの参加に関心を示し、メーリングリストで議論を開始した。他に Bryan Varner 率いるHaikuへのJava移植チームも結成された[41]

2007年12月、サンはOpenJDKのバージョン管理TeamWareからMercurialに移行させ、オープンソースコミュニティへのリリース工程を進めた[42][43]

OpenJDKでは寄贈コードを受け入れる際にかなり厳密な手続きをとっていた。寄贈コードは必ず別のOpenJDKコミッターがレビューし、寄贈者は Sun/Oracle Contributor Agreement (SCA/OCA[44]) に合意しなければならない。さらにバグが修正されていることを示すためにjtreg英語版[45]テストも行うのが好ましい。2008年9月まで、外部から提供されたパッチをコードベースにコミットするのはサンの技術者のみが行っていて[46]、かなり対応が遅かった[47]。その後改善され、単純なパッチやOpenJDK7からOpenJDK6へのバックポートは数時間でコミットされるようになった[48]

IBM、アップル、SAPの参加[編集]

2010年10月11日、Apache Harmony プロジェクトを推進してきたIBMオラクルのOpenJDKに参加表明し、事実上HarmonyからOpenJDKへ移行することを決めた[49][50]。IBMでLinuxおよびオープンソース関連を指揮する Bob Sutor はブログで「IBMは Apache Harmony からOpenJDKへと開発の重心をシフトさせるだろう」と記した[51]

2010年11月12日、(3週間前に自身のJavaランタイム環境の移植版に問題があるとした[52]アップルはオラクルと共に Mac OS X 向けOpenJDKプロジェクトを発表した。アップルは主要コンポーネント、ツール、テクノロジーを Mac OS X 上の Java SE 7 実装向けに提供するとし、その中にはHotSpotベースのJava仮想マシン(32ビットと64ビット版)、クラスライブラリ、新たなグラフィカルクライアントのためのネットワークプロトコルスタックが含まれるとした[53]

2011年1月11日、OpenJDKにて Mac OS X 向け移植プロジェクトが結成され、アップルから初のコード寄贈が行われた。Mac OS X 版は当初BSD移植版をベースにしていた[54]

2011年7月、SAP AG がOpenJDKプロジェクトへの公式参加を発表した[55]

脚注[編集]

  1. ^ OpenJDK Legal Documents”. Sun Microsystems. 2012年11月8日閲覧。
  2. ^ Moving to OpenJDK as the official Java SE 7 Reference Implementation
  3. ^ Java Platform, Standard Edition 7 Reference Implementations
  4. ^ Darcy, Joe (2009年6月8日). “OpenJDK and the new plugin”. 2009年9月5日閲覧。
  5. ^ Didn't you promise to open source both JDK 6 and JDK 7 last November? What happened to JDK 6?”. Sun Microsystems. 2007年10月12日時点のオリジナルよりアーカイブ。2007年10月14日閲覧。 “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.
  6. ^ http://weblogs.java.net/blog/robogeek/archive/2009/01/it_will_be_open.html
  7. ^ Darcy, Joe (2008年2月11日). “The code is coming! The code is coming!”. 2008年2月16日閲覧。 “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.
  8. ^ Fitzsimmons, Thomas (2007年6月8日). “Credits”. 2007年6月8日閲覧。
  9. ^ Andrew, Haley (2007年6月7日). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。
  10. ^ Mark, Wielaard (2007年6月7日). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。
  11. ^ Red Hat and Sun Collaborate to Advance Open Source Java Technology”. Red Hat (2007年11月5日). 2007年11月6日閲覧。
  12. ^ a b c Wade, Karsten (2008年3月13日). “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.
  13. ^ Open Source Java Technology Debuts In GNU/Linux Distributions”. Sun Microsystems. 2008年5月3日時点のオリジナルよりアーカイブ。2008年5月2日閲覧。
  14. ^ openjdk-6 in Ubuntu”. 2008年4月19日閲覧。
  15. ^ Reinhold, Mark (2008年4月24日). “There’s not a moment to lose!”. 2008年4月29日時点のオリジナルよりアーカイブ。2008年4月19日閲覧。
  16. ^ OpenJDK trademark agreement
  17. ^ icedtea-java7 in Ubuntu”. 2008年4月19日閲覧。
  18. ^ Topic, Dalibor (2008年7月14日). “QotD: Debian Overview of openjdk-6 source package”. 2008年7月15日閲覧。
  19. ^ Overview of openjdk-6 source package”. debian.org. 2008年7月15日閲覧。
  20. ^ Package: openjdk-6-jdk”. debian.org (2009年2月14日). 2009年2月16日閲覧。
  21. ^ Package: OpenJDK”. opensuse.org. 2009年6月1日閲覧。 [リンク切れ]
  22. ^ How to download and install prebuilt OpenJDK packages”. 2010年3月3日閲覧。
  23. ^ Sharples, Rich (2008年6月19日). “Java is finally Free and Open”. 2012年11月9日閲覧。
  24. ^ Announcing OpenJDK 6 Certification for Ubuntu 9.04 (jaunty)
  25. ^ Fuller, Landon (2008年8月19日). “SoyLatte, Meet OpenJDK: OpenJDK 7 for Mac OS X”. 2008年8月22日閲覧。
  26. ^ Schwartz, Jonathan (2006年5月23日). “Busy Week...”. Sun Microsystems. 2006年6月12日時点のオリジナルよりアーカイブ。2007年5月9日閲覧。
  27. ^ (OGG Theora) Sun Opens Java, Sun Microsystems, http://mediacast.sun.com/share/tmarble/Sun_Opens_Java.ogg [リンク切れ]
  28. ^ Sun CEO sets open source Java time frame - Announcement set for 30 to 60 days”. InfoWorld (2006年10月25日). 2011年12月22日閲覧。
  29. ^ Sun Opens Java”. Sun Microsystems (2006年11月13日). 2007年4月21日時点のオリジナルよりアーカイブ。2007年5月9日閲覧。
  30. ^ Stallman, Richard. “Free But Shackled—The Java Trap”. 2007年12月4日閲覧。
  31. ^ Open JDK is here!”. Sun Microsystems (2007年5月8日). 2007年5月9日閲覧。
  32. ^ Fitzsimmons, Thomas (2007年5月18日). “Plans for OpenJDK”. 2007年5月22日閲覧。
  33. ^ a b OpenJDK 6 b10 source posted” (2008年5月30日). 2008年6月1日閲覧。
  34. ^ Changes in OpenJDK7 b53” (2009年4月2日). 2009年9月5日閲覧。
  35. ^ Herron, David (2007年10月4日). “Plans for OpenJDK”. 2007年10月9日閲覧。
  36. ^ Kelly O'Hair (2010年12月). “OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed”. Oracle Corporation. 2011年11月25日閲覧。
  37. ^ Broad contributor agreement and TCK License pave way for a fully compatible, free and open source Java Development Kit for Red Hat Enterprise Linux
  38. ^ Porters Group
  39. ^ http://www.eyesbeyond.com/freebsddom/java/jdk16.html
  40. ^ http://landonf.bikemonkey.org/code/macosx/
  41. ^ New java for haiku team formed
  42. ^ James Gosling (October 2006). James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1. インタビュアー:Robert Eckstein. http://www.oracle.com/technetwork/articles/javase/gosling-os1-qa-142025.html 
  43. ^ O'Hair, Kelly (December 12, 2007), Mercurial OpenJDK Questions, オリジナルの2008年2月14日時点によるアーカイブ。, http://web.archive.org/web/20080214085410/http://blogs.sun.com/kto/entry/mercurial_openjdk_questions 
  44. ^ Sun Microsystems Inc. Contributor Agreement”. 2012年11月9日閲覧。
  45. ^ Regression Test Harness for the OpenJDK platform: jtreg”. 2008年8月26日閲覧。
  46. ^ Kennke, Roman (2008年9月29日). “A small step for me”. 2008年10月3日時点のオリジナルよりアーカイブ。2008年10月19日閲覧。
  47. ^ Tripp, Andy (2007年7月16日). “Classpath hackers frustrated with slow OpenJDK process”. 2008年4月20日閲覧。
  48. ^ Darcy, Joe (2010年6月10日). “Backporting changeset from 7 to 6 for bugfix”. 2012年11月9日閲覧。
  49. ^ Oracle and IBM Collaborate to Accelerate Java Innovation Through OpenJDK”. Oracle Corporation. 2010年10月22日閲覧。
  50. ^ Ryan Paul. “Java wars: IBM joins OpenJDK as Oracle shuns Apache Harmony”. Ars Technica. 2010年10月22日閲覧。
  51. ^ 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.
  52. ^ Java for Mac OS X 10.6 Update 3 and 10.5 Update 8 Release Notes” (2010年10月20日). 2012年11月9日閲覧。
  53. ^ 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.
  54. ^ Mike Swingler(アップル) (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.
  55. ^ 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.

関連項目[編集]

外部リンク[編集]