IcedTea

IcedTeaとは2007年6月にレッドハットが開始したOpenJDK用のビルドおよびシステム統合プロジェクトである。IcedTea-WebとはJava Web StartおよびJavaウェブブラウザプラグインのフリーソフトウェア実装である。IcedTea-SoundとはJavaサウンドサブシステム用プラグインのコレクションである。以前はIcedTeaに含まれていたPulseAudioプロバイダもこのコレクションの一部である。フリーソフトウェア財団は全てのJavaプログラマに開発環境としてIcedTeaを使うことを推奨している。

歴史的にIcedTeaプロジェクトの最初の目標は、2007年にサン・マイクロシステムズがフリーソフトウェアとしてリリースしたOpenJDKソフトウェアを一切プロプライエタリソフトウェアを必要とせずに利用可能とすることであった。それゆえにフリーソフトウェアを強いるFedoraなどのLinuxディストリビューションにOpenJDKの追加が可能となった。この目標は達成され、OpenJDKをベースとしたIcedTeaのバージョンは2007年11月にFedora 8にパッケージされた。2008年8月には新しい派生であるIcedTea6の最初のリリースが行われた。IcedTea6はOpenJDK6のサンのビルドドロップをベースとしており、既存のJDK6との互換性確保を目標としたOpenJDKのフォークである。OpenJDK6は2008年5月、UbuntuとFedoraにリリースされた。これらのディストリビューションのIcedTeaパッケージは、OpenJDK商標通知を利用してOpenJDKに改名されている。Fedoraのビルドはサンの厳しいTechnology Compatibility Kitによる、x86とx86-64におけるテストをパスしている。OpenJDK 7をベースとした最初のバージョンであるIcedTea 2が2011年10月にリリースされた。OpenJDK 8をベースとした最初のバージョンであるIcedTea 3は2016年8月にリリースされた。IcedTea 1のサポートは2017年1月に打ち切られた。

現在はGitHubより最新版が入手可能である。[1]

1. 歴史
-----

サンは2006年11月にHotSpot仮想マシンとJavaコンパイラを、そして2007年5月にクラスライブラリのソースコードの大半をオープンソースライセンスの下でリリースしたが、本プロジェクトはその後に作られた。ただしフォントレンダリング、カラーマネジメントやサウンドサポートなどのクラスライブラリの一部は、プロプライエタリなバイナリプラグインしか提供されなかった。なぜならサンではなくサードパーティーがこれらのプラグインのソースコードの著作権を所有していたためである。 リリースされた部分はフリーソフトウェアライセンスであるGNU General Public Licenseの条項の下で発行された。 これらの欠落したコンポーネントのため、フリーソフトウェアコンポーネントのみを搭載するOpenJDKをビルドすることは不可能であった。サンはこのコードをフリーソフトウェアライセンスの下でリリースできるようにライセンス所有者と交渉し、もし失敗した場合はこれらのプロプライエタリな要素を代替実装へ置き換えることを目指した。プラグインを置き換えれば、クラスライブラリは完全にフリーとなる。サンはこれら公認バイナリリリースにプロプライエタリなコードを使い続けていた。

アナウンスの後にIcedTeaプロジェクトが開始され、GNU Classpathチームが提供したビルドリポジトリを伴い2007年6月7日に正式にアナウンスされた。GNU Classpathチームはこれらのソフトウェア製品を //"OpenJDK"// と呼ばなかった。なぜならOpenJDKはサンが所有する商標であったためである。GNU Classpathチームは代わりに仮の名前である //"IcedTea"// の使用を決定した。

2007年11月5日、レッドハットはSun Contributor Agreementとthe OpenJDK Community TCK Licenseの双方に署名した。プレスリリースには、これがIcedTeaプロジェクトの利益になることを示唆していた。Simon PhippsはIcedTeaがopenjdk.java.netにホストされる可能性を示唆し、Mark Reinholdは、レッドハットが著作権譲渡に署名したことで、IcedTeaの一部をサンに寄付してメインストリームであるJDKに含んでもらうことが可能となったことについて言及した。

それ以来、IcedTeaから多くのパッチがOpenJDKに譲渡された。

2008年6月、IcedTea6がTechnology Compatibility KitテストをパスしたためJava 6実装と完全な互換性があると主張できるようになった。このプロジェクトはOpenJDK 6、OpenJDK 7、そしてOpenJDK 8の開発をそれぞれ別々のリポジトリにトレースし続けており、さら可能であればパッチを上流へと逆移植することに貢献している。IcedTea wikiでは各IcedTeaパッチの現在の状態を保存している。

2. 目標
-----

IcedTeaプロジェクトは以下の2つを狙いとして開始された:

GNU Compiler for JavaでOpenJDKのコードをコンパイル可能にするため。OpenJDKはそれ自体がJavaで書かれているため、「鶏が先か、卵が先か」という問題を引き起こしていた。このため、開発者はOpenJDKをビルドするため既に動作しているJavaコンパイラとランタイムを必要としていた。元々は既存のプロプライエタリなサンのJDKのみがその要求を満たしていた。Fedoraのようなフリーディストリビューションではパッケージのビルドをプロプライエタリなツールに依存できないため、IcedTeaプロジェクトはフリーソフトウェアを使ってコードをコンパイルできるようにする必要があった。これがなされた場合、得られたOpenJDKのIcedTeaバージョンは自分自身のコンパイルに使うことができるので、将来のコンパイルでフリーではないソフトウェアを使う必要がなくなる。
サンが全てのソースコードをリリースできないので、OpenJDKに存在するバイナリプラグインとのフリーな同等物を提供するため。2008年3月の時点で既に、IcedTea6にフリーではないバイナリプラグインは必要なくなったが、これはフリーではないバイナリプラグインがなくともOpenJDK 6のビルドドロップをビルドできるようになったからである。プロプライエタリなサウンドのサポートを、Gervillプロジェクトからのサウンドのサポートに置き換えたb10のリリース により、フリーではないバイナリプラグインを使わずにJava 1.6の完全な実装をビルドできるようになった。残ったただ1つのフリーではないバイナリプラグはSNMP用である。これはオプションであるJMXアーキテクチャ用プロバイダであり、仕様の一部ではない。2009年4月におけるb53より、OpenJDK 7でもOpenJDK 6と同様になった。OpenJDKのコアの外でブラウザプラグインを使って動作するJava Web Startアプレットを利用するためには、依然としてフリーではないバイナリプラグインが必要である。2013年の時点で、この目標を達成できる可能性があるソースコードはIcedTea-Webプロジェクトのみである。

3. 他の利点
-------

IcedTeaはGNU Autotoolsを使ったOpenJDKのmakefileラッパーを提供することで、より身近なビルドシステムも提供する。これにより、ビルドを設定するための様々な環境変数を覚える必要がなくなる。また、Gervillのように、最終的にメインのOpenJDKビルドにお目見えすることになる機能における、初期作業や他のプラットフォーム移植の場を提供する。

3.1. IcedTea-Web
----------------

[[File:D.Iceweasel6.0.2-Addons-Plugins Knoppix6.7.1.png|thumb|right|Debian Iceweasel 6.0.2  にリストされたIcedTea NPRプラグイン