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のビルドはサンの厳しいTCK（英語版）による、x86とx86-64におけるテストをパスしている。OpenJDK 7をベースとした最初のバージョンであるIcedTea 2が2011年10月にリリースされた。OpenJDK 8をベースとした最初のバージョンであるIcedTea 3は2016年8月にリリースされた。IcedTea 1のサポートは2017年1月に打ち切られた。 現在はGitHubより最新版が入手可能である。 IcedTea-Web サンは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月、（Fedora 9上のOpenJDKのパッケージバージョンとしての）IcedTea6がTechnology Compatibility KitテストをパスしたためJava 6実装と完全な互換性があると主張できるようになった。このプロジェクトはOpenJDK 6、OpenJDK 7、そしてOpenJDK 8の開発をそれぞれ別々のリポジトリにトレースし続けており、さら可能であればパッチを上流へと逆移植することに貢献している。IcedTea wikiでは各IcedTeaパッチの現在の状態を保存している。 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プロジェクトのみである。 IcedTeaはGNU Autotoolsを使ったOpenJDKのmakefileラッパーを提供することで、より身近なビルドシステムも提供する。これにより、ビルドを設定するための様々な環境変数を覚える必要がなくなる（現在のIcedTeaビルドは、基盤であるOpenJDKビルド用であるビルド設定環境変数を約40個セットする）。また、Gervillのように、最終的にメインのOpenJDKビルドにお目見えすることになる機能における、初期作業や他のプラットフォーム移植の場を提供する。 IcedTeaは、フリーソフトウェアであるJavaウェブブラウザプラグインを提供する。このプラグインは、後にサンのプロプライエタリなJREが提供することになったある機能を64ビットLinuxにおける64ビットブラウザで処理したものが最初であり、64ビット版Mozilla FirefoxでJavaアプレットのサポートを可能とするためにはふさわしいものである。IcedTeaはフリーなJava Network Launching Protocol実装も提供する。サンはOpenJDKの一部としてこれらのプラグインとJava Web Startの実装をリリースすることを約束したが、コミュニティからの圧力にもかかわらず、これまでのところ行われていない。IcedTeaプラグインの開発はFirefoxに加え、GoogleのChromiumをサポートしている次世代プラグインの最新バージョンで続けられている。2011年以来、開発はIcedTeaから分離されたIcedTea-Webプロジェクトで行われている。2013年4月の時点で、オラクルはOpenJDKのそれ以外の部分とは対照的に、Javaプラグインのコードベースを完全なプロプライエタリとし続けている。 2007年6月から、IcedTeaは自分自身をビルドできるようになり、GNU ClasspathのテストスイートであるMauve（英語版）の重要な部分をパスしている。2008年5月、サンのjtreg（英語版）リグレッションテストを動作するためのサポートがIcedTeaに追加された。いくつかのWindowsエディションにおける利用では、未だに不安定で非公式である。 IcedTeaは、以下のようにLinuxディストリビューション用のパッケージメンテナの間で人気となっている。2012年4月現在の状況を示す: Ark LinuxおよびArch Linuxでは、IcedTeaがデフォルトのJVMである。 DebianではIcedTeaのビルドおよび動作が可能である。パッケージは2008年6月12日に不安定版になった。 Fedora 8でIcedTea[7]が利用可能となり、Fedora 9から17までIcedTea6はjava-1.6.0-openjdkと表示されていた。Fedora 16で初めて、ビルドシステムを除いたIcedTea 2.x OpenJDK forestを使用するjava-1.7.0-openjdkパッケージが登場した。 Gentoo LinuxではIcedTea6とIcedTea 2.x用のバイナリおよびソースパッケージを公式リポジトリから利用可能である。デフォルトでJavaアプリケーションをインストールすると、sun-jdkの代わりにIcedTea6が選択されるが、これはユーザーが追加作業をせずにインストールが可能なためである。ユーザーがsun-jdkをダウンロードするためには、オラクルのEULAに手動で同意しなければならない。 Ubuntu 7.10 (Gutsy Gibbon) ではIcedTeaが "universe" リポジトリから利用可能であり、Ubuntu 8.04 (Hardy Heron) ではIcedTea6が利用可能である。Ubuntu 11.04以降ではIcedTeaのみが利用可能である。 OpenJDKには（2007年5月のリリースで）単にバイナリプラグインとしてパッケージされるだけの邪魔なコードが約4%含まれている。これらのプラグインはJDKのビルドと使用のために必要であった。OpenJDK 6は邪魔なコードを1%のみ搭載してリリースされ、邪魔なサウンドサポートも置き換えられている。IcedTea6はOpenJDK 6リリースをベースとしている。IcedTeaは固有のウェブブラウザプラグインとWeb Startのサポートを未だに提供しているが、これらのサンの実装が未だにプロプライエタリなためである。 IcedTea 1.xおよび2.xは、GCJなどのGNU Classpathベースのソリューションを使ってOpenJDKをコンパイルでき、さらにそのソリューションでビルドしたHotSpot仮想マシンやjavacコンパイラを使ってブートストラップすることもできる。現状では、IcedTea 3.xのビルドにはIcedTea 2.xか3.x、または別のソースとしてOpenJDK 7か8のビルドを使う必要がある。 HotSpot（OpenJDKのJava仮想マシン）のクロスアーキテクチャ移植は、コードにC++のコアに加えてアセンブリ言語が含まれているため困難である。IcedTeaプロジェクトはzero-assembler Hotspot（またはzero）と呼ばれる、アセンブリ言語をほとんど含まないHotSpotインタプリタのジェネリック移植を開発している。この移植により、HotSpotのインタプリタ移植を任意のLinuxプロセッサアーキテクチャに適合させることがとても容易になる。zero-assembler Hotspotのコードは、IcedTea7のバージョン1.6よりHotSpotのx86以外の移植（PPC、IA-64、S390およびARM）の全てに使われていた。 IcedTeaプロジェクトはまたHotSpot用にSharkと呼ばれるプラットフォーム非依存な実行時コンパイラも開発している。これはLLVMを使いZeroを補完するものである。Sharkは2010年8月に上流であるOpenJDKに含まれた。ARM32用のJITは1.6.0と2.1.1に最初に含まれた。レッドハットによるAArch64へのネイティブ移植は2.4.6で登場し、SAP/IBMからのネイティブPPC64移植は2.5.0に含まれる予定である。PPC/AIX移植はバージョン8u20からOpenJDKの上流に含まれており、AArch64移植はバージョン9から含まれる予定である。 ポータル FLOSS フリーなJava実装（英語版） GNU Classpath Javaクラスライブラリ OpenJDK Apache Harmony ^ “［SECURITY］ IcedTea 3.7.0 for OpenJDK 8 Released!”. (2018年3月2日). http://blog.fuseyism.com/index.php/2018/03/02/security-icedtea-3-7-0-for-openjdk-8-released/ 2018年3月5日閲覧。  ^ Fitzsimmons, Thomas (2007年6月8日). “Credits”. 2007年6月8日閲覧。 ^ “Free but Shackled – The Java Trap- GNU Project – Free Software Foundation”. 2017年6月19日閲覧。 ^ Angel, Lillian (2008年4月4日). “IcedTea6 1.1 Released”. 2008年7月12日閲覧。 ^ Sharples, Rich (2008年6月19日). “Java is finally Free and Open”. 2008年6月19日閲覧。 ^ Hughes, Andrew John (2011年10月19日). “IcedTea 2.0 Released!”. 2012年1月31日閲覧。 ^ Hughes, Andrew John (2016年4月10日). “IcedTea 3.0 Released!”. 2016年4月12日閲覧。 ^ Hughes, Andrew John (2017年1月11日). “Discontinuation of Support for IcedTea 1.x”. 2017年1月12日閲覧。 ^ “Open JDK is here!”. Sun Microsystems (2007年5月8日). 2007年5月9日閲覧。 ^ Javaクラスライブラリのライセンスを参照。 ^ “Sun's OpenJDK FAQ”. 2009年10月7日時点のオリジナルよりアーカイブ。2017年6月19日閲覧。 “Now Sun is open sourcing most of the remaining components of the JDK, with the exception of a few encumbered components that we hope, with the community's help, can be re-implemented so that 100% of the OpenJDK code commons is available as free software... Sun will continue to use that code in commercial releases until it's replaced by fully-functional open-source alternatives” ^ a b Haley, Andrew (2007年6月7日). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。 ^ a b Fitzsimmons, Thomas (2007年5月18日). “Plans for OpenJDK”. 2007年5月22日閲覧。 ^ “Red Hat and Sun Collaborate to Advance Open Source Java Technology”. レッドハット (2007年11月5日). 2007年11月6日閲覧。 ^ Phipps, Simon (November 5, 2007). “Red Hat Joins OpenJDK”. 2007年11月14日閲覧。 ^ Reinhold, Mark (2007年11月5日). “Welcome, Red Hat!”. 2007年11月14日閲覧。 ^ Haley, Andrew (May 16, 2008). “Open source project: OpenJDK”. 2008年10月10日時点のオリジナルよりアーカイブ。2017年6月19日閲覧。 ^ “Bug ID 6523403: OSS CMM: Need to provide lcms library with PYCC and LINEAR_RGB OS ICC profiles”. 2008年7月12日閲覧。 ^ “Bug ID 6604044 java crashes talking to second X screen”. 2008年7月12日閲覧。 ^ Sharples, Rich (2008年6月19日). “Java is finally Free and Open”. 2008年6月20日時点のオリジナルよりアーカイブ。2017年6月19日閲覧。 ^ Haley, Andrew (2009年4月1日). “New project: getting rid of IcedTea local patches”. 2009年9月5日閲覧。 ^ Wielaard, Mark (2007年6月7日). “Experimental Build Repository at icedtea.classpath.org”. 2007年6月9日閲覧。 ^ Wielaard, Mark (2007年5月30日). “OpenJDK6 b10 source posted”. 2008年7月12日閲覧。 ^ “Changes in OpenJDK7 b53” (2009年4月2日). 2009年9月5日閲覧。 ^ “Gervill: Wiki: Home — Project Kenai”. 2016年3月29日時点のオリジナルよりアーカイブ。2017年6月19日閲覧。 ^ Java SE 6 Update 12 Release Notes. Java.sun.com. Retrieved on 2013-07-18. ^ Hughes, Andrew John (2009年8月21日). “Opensource plugin&webstart – when?”. 2009年9月5日閲覧。 ^ Darcy, Joe (2009年6月8日). “OpenJDK and the new plugin”. 2009年9月5日閲覧。 ^ Bhole, Deepak (2009年8月26日). “IcedTea Java plugin with Chromium and Firefox 3.6A1”. 2009年9月5日閲覧。 ^ Bhole, Deepak (2011年2月2日). “First release of IcedTea-Web!”. 2011年4月4日閲覧。 ^ “Where to find the source of the closed-source browser plugin?”. 2017年6月19日閲覧。 ^ Kung, Francis (2007年6月12日). “Mauve test run results”. 2007年6月12日閲覧。 ^ Wielaard, Mark. “jtreg testing integrated”. 2008年7月12日閲覧。 ^ “Ark Linux packages”. Ark Linux. 2008年2月23日閲覧。 ^ “JRE and JDK Moved to Community”. Arch Linux. 2009年7月30日閲覧。 ^ “Debian Building Instructions”. IcedTea Wiki. 2008年5月21日閲覧。 ^ “java-1.6.0-openjdk.git”. 2014年3月28日閲覧。 ^ “java-1.7.0-openjdk.git”. 2014年3月28日閲覧。 ^ “Ubuntu – Details of icedtea-java7-jre in gutsy”. Ubuntu Packages. 2007年10月26日閲覧。 ^ “Ubuntu – Details of package openjdk-6-jre in hardy”. Ubuntu Packages. 2008年7月12日閲覧。 ^ Wielaard, Mark (2007年6月7日). “IcedTea”. 2007年6月9日閲覧。 ^ Benson, Gary (2007年11月6日). “Gary's guide to porting IcedTea”. 2012年7月12日時点のオリジナルよりアーカイブ。2008年1月26日閲覧。 ^ “ZeroSharkFaq”. icedtea.classpath.org. 2009年5月30日閲覧。 ^ a b Benson, Gary (2008年5月28日). “28 May 2008”. レッドハット. 2008年5月30日閲覧。 “Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we've been using” ^ “Zero-Assembler Project”. 2008年8月22日閲覧。 ^ Benson, Gary (2009年5月21日). “Zero and Shark: a Zero-Assembly Port of OpenJDK”. java.net. 2009年5月30日閲覧。 “We started an experimental port of OpenJDK without assembly language, using free software libraries to bridge the gaps. This experiment evolved to become the zero-assembly port of OpenJDK – Zero – and its just-in-time compiler Shark.” ^ Benson, Gary (2008年2月1日). “1st February 2008”. 2012年7月10日時点のオリジナルよりアーカイブ。2008年2月3日閲覧。 ^ Haley, Andrew (2008年1月31日). “Making zero-assembler the default on ppc”. 2008年2月3日閲覧。 ^ Angel, Lillian (2008年2月13日). “IcedTea 1.6 Released with Zero-assembler and JNLP support!”. レッドハット. 2008年2月13日閲覧。 ^ Benson, Gary (2008年3月31日). “31 March 2008”. レッドハット. 2008年5月30日閲覧。 ^ “6976186: integrate Shark HotSpot changes”. hg.openjdk.java.net. 2014年3月28日閲覧。 ^ Haley, Andrew (2009年9月9日). “IcedTea6 1.6 Released!”. 2014年3月28日閲覧。 ^ Hughes, Andrew (2012年6月13日). “[SECURITY IcedTea 2.1.1 & 2.2.1 Released!]”. 2014年3月28日閲覧。 ^ “AArch64 Port Project”. 2014年3月28日閲覧。 ^ Hughes, Andrew (2014年3月28日). “IcedTea 2.3.14 & 2.4.6: Considered ARMful Released!”. 2014年3月28日閲覧。 ^ “OpenJDK PowerPC/AIX Port”. 2014年3月28日閲覧。 ^ Hughes, Andrew (2014年1月23日). “PPC Port Available in IcedTea 2.x HEAD”. 2014年3月28日閲覧。 ^ Simonis, Volker (2015年9月25日). “JEP 175: PowerPC/AIX Port”. 2016年4月13日閲覧。 ^ Haley, Andrew (2015年12月16日). “JEP 237: Linux/AArch64 Port”. 2016年4月13日閲覧。 公式ウェブサイト IcedTea announcement Classpath mailing list announcement Thomas Fitzsimmons（レッドハットの開発者）のIcedTeaについてのブログエントリ Guide to porting IcedTea