OpenJDK

コンポーネント

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

IcedTeaとの関係

OpenJDKをFedoraや他のフリーのGNU/Linuxディストリビューションにバンドルするには、フリーソフトウェアのコンポーネントのみでビルド可能になっている必要がある。Javaクラスライブラリの一部にはそうでないコンポーネントがあり、ビルドに際してはデフォルトでサンの製品版JDKを使うようになっており、フリーソフトウェアのみでのビルドは不可能だった。これを解決するため2007年6月にレッドハットが開始したプロジェクトがIcedTeaである。OpenJDKとGNU Classpathの混合によってOpenJDKのブートストラップ問題を解決し、プロプライエタリの部分をClasspathのコードで置換するというプロジェクトである。
2007年11月5日、レッドハットは Sun Contributor Agreement と OpenJDK Community TCK License の両方に署名した。この合意の第一の利点の1つはIcedTeaプロジェクトとの緊密な連携であり、Linux環境における技術をLinuxディストリビューションFedoraとアプリケーションサーバJBossから導入することであった。IcedTeaはOpenJDKプロジェクトに残っていた少数のプロプライエタリの部分の代替となるフリーソフトウェアを提供した。
2008年5月、Fedora 9とUbuntu 8.04というディストリビューションは完全にフリーかつオープンソースのコードをベースとした IcedTea 6 を採用した。IcedTea 6は、OpenJDK 7ではなくOpenJDK 6のソースに基づいたバージョンである。Fedoraでは、パッケージ名としてOpenJDKという名称を初めて使った。Ubuntuでは当初IcedTea7パッケージを採用していたが、後にIcedTea6に変更した。DebianでもIcedTea6パッケージが作成され、lenny (Debian 5.0) に含まれるようになった。2008年7月12日、DebianはOpenJDK 6を不安定版として受理し、その後安定版とした。OpenJDKは他にOpenSUSE、Red Hat Enterprise Linux (RHEL)、RHELからの派生であるCentOSなどでも利用可能となっている。
2008年6月、レッドハットは Fedora 9 上で IcedTea 6 を使ってビルドされたOpenJDKパッケージのバイナリが Technology Compatibility Kit のテストに合格し、Java 6 実装と完全互換であると主張できるようになったと発表した。2009年7月、Ubuntu 9.04 でビルドされた IcedTea6 のバイナリが Java SE 6 のTCK互換性テストに全て合格した。
2008年8月以降、OpenJDK 7は Mac OS XやBSD系OSでも動作可能となった。

サンの約束と最初のリリース

JavaOne 2006 にて、サンはJavaをオープンソースにする意志があると発表し、2006年10月25日の Oracle OpenWorld にてジョナサン・シュワルツはJavaプラットフォーム中核部のオープンソース化を30から60日以内に発表するだろうと述べた。
2006年11月13日、サンはJava仮想マシンであるHotSpotとJavaコンパイラを GNU General Public License のフリーソフトウェアとしてリリースし、JDKの残りの部分（Javaランタイム環境など）も2007年3月までにGPLでリリースする予定だが、「サン自身がGPLで公開する権利を有していない少数のコンポーネントは除く」とした。フリーソフトウェアの唱道者リチャード・ストールマンはこれについて、彼がそれまでJavaとJavaで書かれてきたプログラムについて主張してきた「Javaトラップ」というベンダーロックインの終りだとした。

クラスライブラリのリリース

Java Development Kit (JDK) のほとんどの部分をフリーかつオープンソースのものとして2007年前半にリリースするという約束に続き、サンは2007年5月8日、サードパーティが著作権を持っていてサンがGPLで公開できない部分を除いたJavaクラスライブラリのソースコードをGPLでリリースした。除外された部分の一覧には、Javaのグラフィカルユーザインタフェース (GUI) の重要なコンポーネントもいくつか含まれていた。サンは残りのプロプライエタリのコンポーネントも代替実装で置換し、クラスライブラリを完全にフリーにする計画だとした。
2007年5月にリリースされた時点で、OpenJDKのクラスライブラリの4%がプロプライエタリだった。2008年5月にOpenJDK 6が登場した時点では、それが1%未満になっていて（残ったのはSNMP実装であり、Java仕様の一部ではない）、OpenJDKをバイナリ部分なしにビルドできるようになった。そして2009年4月、OpenJDK 7のb53の一部として問題の部分を除いてビルドできるようになった。
これは、サン・マイクロシステムズとOpenJDKコミュニティの努力の成果である。残存部分は、FLOSSとしてリリースされたり、代替実装で置換されたりした。2010年12月、全ての残存部分がオープンソースで置換され、JDK全体が完全にオープンソースとなった。

コミュニティによる改良

2007年11月5日、レッドハットはサンとの合意を発表し、Sun Contributor Agreement（サンによるフリーかつオープンソースのソフトウェアプロジェクトにレッドハットの全技術者が参加するという契約）と OpenJDK Community Technology Compatibility Kit (TCK) License Agreement（OpenJDKに基づいたプロジェクトが Java SE 6 仕様に準拠していることを確認するテストスイートへのアクセス権を与える契約）に署名した。
また2007年11月、Porters Group が結成され、OpenJDKを異なるプロセッサアーキテクチャやオペレーティングシステムに移植する作業を開始。BSD系への移植プロジェクトは Kurt Miller と Greg Lewis が主導し、Mac OS X への移植プロジェクト SoyLatte は Landon Fuller が主導した。2008年1月、彼らは Porters Group 経由でOpenJDKへの参加に関心を示し、メーリングリストで議論を開始した。他に Bryan Varner 率いるHaikuへのJava移植チームも結成された。
2007年12月、サンはOpenJDKのバージョン管理をTeamWareからMercurialに移行させ、オープンソースコミュニティへのリリース工程を進めた。
OpenJDKでは寄贈コードを受け入れる際にかなり厳密な手続きをとっていた。寄贈コードは必ず別のOpenJDKコミッターがレビューし、寄贈者は Sun/Oracle Contributor Agreement (SCA/OCA) に合意しなければならない。さらにバグが修正されていることを示すためにjtregテストも行うのが好ましい。2008年9月まで、外部から提供されたパッチをコードベースにコミットするのはサンの技術者のみが行っていて、かなり対応が遅かった。その後改善され、単純なパッチやOpenJDK 7からOpenJDK 6へのバックポートは数時間でコミットされるようになった。

IBM、アップル、SAPの参加

2010年10月11日、Apache Harmony プロジェクトを推進してきたIBMがオラクルのOpenJDKに参加表明し、事実上HarmonyからOpenJDKへ移行することを決めた。IBMでLinuxおよびオープンソース関連を指揮する Bob Sutor はブログで「IBMは Apache Harmony からOpenJDKへと開発の重心をシフトさせるだろう」と記した。
2010年11月12日、（3週間前に自身のJavaランタイム環境の移植版に問題があるとした）アップルはオラクルと共に Mac OS X 向けOpenJDKプロジェクトを発表した。アップルは主要コンポーネント、ツール、テクノロジーを Mac OS X 上の Java SE 7 実装向けに提供するとし、その中にはHotSpotベースのJava仮想マシン（32ビットと64ビット版）、クラスライブラリ、新たなグラフィカルクライアントのためのネットワークプロトコルスタックが含まれるとした。
2011年1月11日、OpenJDKにて Mac OS X 向け移植プロジェクトが結成され、アップルから初のコード寄贈が行われた。Mac OS X 版は当初BSD移植版をベースにしていた。
2011年7月、SAP AG がOpenJDKプロジェクトへの公式参加を発表した。