この項目では、Javaのフリーソフトウェア実装について説明しています。アイスティーについては「紅茶 」をご覧ください。
IcedTea for OpenJDK 8 開発元
GNU Classpath
最新版
3.7.0
[ 1]
/
2018年2月28日 (6年前) (2018-02-28 ) リポジトリ
プログラミング 言語
C 、C++ およびJava 対応OS
GNU /Linux , *BSD , macOS , Windows , Solaris プラットフォーム
IA-32 , x86-64 , ARM , AArch64, SPARC , SPARC64, ppc , ppc64, ppc64le, s390 , s390x 種別
Java仮想マシン とJavaライブラリ ライセンス
GNU GPL + リンク例外 公式サイト
icedtea .classpath .org テンプレートを表示
IcedTea for OpenJDK 6 開発元
レッドハット & GNU Classpath
最新版
リポジトリ
プログラミング 言語
C、C++およびJava 対応OS
GNU/Linux, *BSD, macOS, Windows, Solaris プラットフォーム
IA-32, x86-64, ARM, sparc, sparc64, ppc, ppc64, s390, s390x 種別
Java仮想マシンとJavaライブラリ ライセンス
GNU GPL + リンク例外 公式サイト
icedtea .classpath .org テンプレートを表示
IcedTea とは2007年6月にレッドハット が開始したOpenJDK 用のビルド およびシステム統合 プロジェクトである[ 2] 。IcedTea-Web とはJava Web Start およびJava ウェブブラウザ プラグイン のフリーソフトウェア 実装である。IcedTea-Sound とはJavaサウンドサブシステム用プラグインのコレクションである。以前はIcedTeaに含まれていたPulseAudio プロバイダもこのコレクションの一部である。フリーソフトウェア財団 は全てのJavaプログラマ に開発環境としてIcedTeaを使うことを推奨している[ 3] 。
歴史的にIcedTeaプロジェクトの最初の目標は、2007年にサン・マイクロシステムズ がフリーソフトウェアとしてリリースしたOpenJDK ソフトウェアを一切プロプライエタリソフトウェア を必要とせずに利用可能とすることであった。それゆえにフリーソフトウェアを強いるFedora などのLinuxディストリビューション にOpenJDKの追加が可能となった。この目標は達成され、OpenJDKをベースとしたIcedTeaのバージョンは2007年11月にFedora 8にパッケージされた。2008年8月には新しい派生であるIcedTea6の最初のリリースが行われた[ 4] 。IcedTea6はOpenJDK6のサンのビルドドロップをベースとしており、既存のJDK6との互換性 確保を目標としたOpenJDKのフォーク である。OpenJDK6は2008年5月、Ubuntu とFedoraにリリースされた。これらのディストリビューションのIcedTeaパッケージは、OpenJDK商標通知を利用してOpenJDKに改名されている。Fedoraのビルドはサンの厳しいTCK (英語版 ) による、x86 とx86-64 におけるテストをパスしている[ 5] 。OpenJDK 7をベースとした最初のバージョンであるIcedTea 2が2011年10月にリリースされた[ 6] 。OpenJDK 8をベースとした最初のバージョンであるIcedTea 3は2016年8月にリリースされた[ 7] 。IcedTea 1のサポートは2017年1月に打ち切られた[ 8] 。
現在はGitHubより最新版が入手可能である。
IcedTea-Web
歴史
サンは2006年11月にHotSpot 仮想マシン とJavaコンパイラ を、そして2007年5月にクラスライブラリ のソースコード の大半をオープンソースライセンスの下でリリースしたが、本プロジェクトはその後に作られた。ただしフォントレンダリング、カラーマネジメントやサウンドサポートなどのクラスライブラリの一部は、プロプライエタリなバイナリプラグインしか提供されなかった。なぜならサンではなくサードパーティー がこれらのプラグインのソースコードの著作権を所有していたためである[ 9] [ 10] 。 リリースされた部分はフリーソフトウェアライセンス であるGNU General Public License の条項の下で発行された。
これらの欠落したコンポーネントのため、フリーソフトウェア コンポーネントのみを搭載するOpenJDKをビルドすることは不可能であった。サンはこのコードをフリーソフトウェアライセンスの下でリリースできるようにライセンス所有者と交渉し、もし失敗した場合はこれらのプロプライエタリな要素を代替実装へ置き換えることを目指した。プラグインを置き換えれば、クラスライブラリは完全にフリーとなる。サンはこれら公認バイナリリリースにプロプライエタリなコードを使い続けていた[ 11] 。
アナウンスの後にIcedTeaプロジェクトが開始され、GNU Classpath チームが提供したビルドリポジトリを伴い2007年6月7日に正式にアナウンスされた[ 12] 。GNU Classpathチームはこれらのソフトウェア製品を "OpenJDK" と呼ばなかった。なぜならOpenJDKはサンが所有する商標であったためである。GNU Classpathチームは代わりに仮の名前である "IcedTea" の使用を決定した[ 13] 。
2007年11月5日、レッドハットはSun Contributor Agreementとthe OpenJDK Community TCK Licenseの双方に署名した。プレスリリースには、これがIcedTeaプロジェクトの利益になることを示唆していた[ 14] 。Simon Phipps はIcedTeaがopenjdk.java.netにホストされる可能性を示唆し[ 15] 、Mark Reinholdは、レッドハットが著作権譲渡に署名したことで、IcedTeaの一部をサンに寄付してメインストリームであるJDKに含んでもらうことが可能となったことについて言及した[ 16] [ 17] 。
それ以来、IcedTeaから多くのパッチがOpenJDKに譲渡された[ 18] [ 19] 。
2008年6月、(Fedora 9上のOpenJDKのパッケージバージョンとしての)IcedTea6がTechnology Compatibility KitテストをパスしたためJava 6実装と完全な互換性があると主張できるようになった[ 20] 。このプロジェクトはOpenJDK 6、OpenJDK 7、そしてOpenJDK 8の開発をそれぞれ別々のリポジトリにトレースし続けており、さら可能であればパッチを上流へと逆移植 することに貢献している[ 21] 。IcedTea wikiでは各IcedTeaパッチの現在の状態を保存している。
目標
IcedTeaプロジェクトは以下の2つを狙いとして開始された:
GNU Compiler for Java でOpenJDKのコードをコンパイル可能にするため。OpenJDKはそれ自体がJavaで書かれているため、「鶏が先か、卵が先か 」という問題を引き起こしていた。このため、開発者はOpenJDKをビルドするため既に動作しているJavaコンパイラとランタイムを必要としていた。元々は既存のプロプライエタリなサンのJDKのみがその要求を満たしていた。Fedoraのようなフリーディストリビューションではパッケージのビルドをプロプライエタリなツールに依存できないため、IcedTeaプロジェクトはフリーソフトウェアを使ってコードをコンパイルできるようにする必要があった。これがなされた場合、得られたOpenJDKのIcedTeaバージョンは自分自身のコンパイルに使うことができるので、将来のコンパイルでフリーではないソフトウェアを使う必要がなくなる[ 12] [ 22] 。
サンが全てのソースコードをリリースできないので、OpenJDKに存在するバイナリプラグインとのフリーな同等物を提供するため。2008年3月の時点で既に、IcedTea6にフリーではないバイナリプラグインは必要なくなったが、これはフリーではないバイナリプラグインがなくともOpenJDK 6のビルドドロップをビルドできるようになったからである。プロプライエタリなサウンドのサポートを、Gervillプロジェクトからのサウンドのサポートに置き換えたb10のリリース[ 23] により、フリーではないバイナリプラグインを使わずにJava 1.6の完全な実装をビルドできるようになった。残ったただ1つのフリーではないバイナリプラグはSNMP 用である。これはオプションであるJMX アーキテクチャ用プロバイダであり、仕様の一部ではない。2009年4月におけるb53より[ 24] 、OpenJDK 7でもOpenJDK 6と同様になった。OpenJDKのコアの外で(前述されたコアプラグインとは異なる)ブラウザプラグインを使って動作するJava Web Startアプレットを利用するためには、依然としてフリーではないバイナリプラグインが必要である。2013年の時点で、この目標を達成できる可能性があるソースコードはIcedTea-Webプロジェクトのみである。
他の利点
IcedTeaはGNU Autotools を使ったOpenJDKのmakefileラッパーを提供することで、より身近なビルドシステムも提供する。これにより、ビルドを設定するための様々な環境変数を覚える必要がなくなる(現在のIcedTeaビルドは、基盤であるOpenJDKビルド用であるビルド設定環境変数を約40個セットする)。また、Gervill[ 25] のように、最終的にメインのOpenJDKビルドにお目見えすることになる機能における、初期作業や他のプラットフォーム移植の場を提供する。
IcedTea-Web
Debian Iceweasel 6.0.2 (Knoppix 6.7.1) にリストされたIcedTea NPRプラグイン(IcedTea6ベース IcedTeaは、フリーソフトウェア であるJavaウェブブラウザプラグインを提供する。このプラグインは、後にサンのプロプライエタリなJREが提供することになったある機能を64ビット Linuxにおける64ビットブラウザで処理したものが最初であり[ 26] 、64ビット版Mozilla Firefox でJavaアプレットのサポートを可能とするためにはふさわしいものである。IcedTeaはフリーなJava Network Launching Protocol 実装も提供する。サンはOpenJDKの一部としてこれらのプラグインとJava Web Startの実装をリリースすることを約束したが、コミュニティからの圧力にもかかわらず[ 27] 、これまでのところ行われていない[ 28] 。IcedTeaプラグインの開発はFirefoxに加え、Google のChromium をサポートしている次世代プラグインの最新バージョンで続けられている[ 29] 。2011年以来、開発はIcedTeaから分離されたIcedTea-Webプロジェクトで行われている[ 30] 。2013年4月の時点で、オラクル はOpenJDKのそれ以外の部分とは対照的に、Javaプラグインのコードベースを完全なプロプライエタリとし続けている[ 31] 。
進化と有用性
2007年6月から、IcedTeaは自分自身をビルドできるようになり、GNU Classpath のテストスイートであるMauve (英語版 ) の重要な部分をパスしている[ 32] 。2008年5月、サンのjtreg (英語版 ) リグレッションテストを動作するためのサポートがIcedTeaに追加された[ 33] 。いくつかのWindows エディションにおける利用では、未だに不安定で非公式である。
IcedTeaは、以下のようにLinuxディストリビューション用のパッケージメンテナの間で人気となっている。2012年4月現在の状況を示す:
Ark Linux[ 34] およびArch Linux [ 35] では、IcedTeaがデフォルトのJVMである。
Debian ではIcedTeaのビルドおよび動作が可能である[ 36] 。パッケージは2008年6月12日に不安定版になった。
Fedora 8でIcedTea[7]が利用可能となり、Fedora 9から17までIcedTea6はjava-1.6.0-openjdkと表示されていた[ 37] 。Fedora 16で初めて、ビルドシステムを除いたIcedTea 2.x OpenJDK forestを使用するjava-1.7.0-openjdkパッケージが登場した[ 38] 。
Gentoo Linux ではIcedTea6とIcedTea 2.x用のバイナリおよびソースパッケージを公式リポジトリから利用可能である。デフォルトでJavaアプリケーションをインストールすると、sun-jdkの代わりにIcedTea6が選択されるが、これはユーザーが追加作業をせずにインストールが可能なためである。ユーザーがsun-jdkをダウンロードするためには、オラクルのEULA に手動で同意しなければならない。
Ubuntu 7.10 (Gutsy Gibbon) ではIcedTeaが "universe" リポジトリから利用可能であり[ 39] 、Ubuntu 8.04 (Hardy Heron) ではIcedTea6が利用可能である[ 40] 。Ubuntu 11.04以降ではIcedTeaのみが利用可能である。
アーキテクチャ
OpenJDK には(2007年5月のリリースで)単にバイナリプラグインとしてパッケージされるだけの邪魔なコードが約4%含まれている[ 13] 。これらのプラグインはJDKのビルドと使用のために必要であった。OpenJDK 6は邪魔なコードを1%のみ搭載してリリースされ、邪魔なサウンドサポートも置き換えられている。IcedTea6はOpenJDK 6リリースをベースとしている。IcedTeaは固有のウェブブラウザプラグインとWeb Startのサポートを未だに提供しているが、これらのサンの実装が未だにプロプライエタリなためである。
IcedTea 1.xおよび2.xは、GCJ などのGNU Classpath ベースのソリューションを使ってOpenJDKをコンパイルでき、さらにそのソリューションでビルドしたHotSpot 仮想マシン やjavac コンパイラ を使ってブートストラップ することもできる[ 41] 。現状では、IcedTea 3.xのビルドにはIcedTea 2.xか3.x、または別のソースとしてOpenJDK 7か8のビルドを使う必要がある。
プラットフォームサポート
HotSpot (OpenJDKのJava仮想マシン)のクロスアーキテクチャ移植 は、コードにC++ のコアに加えてアセンブリ言語 が含まれているため困難である[ 42] 。IcedTeaプロジェクトはzero-assembler Hotspot (またはzero )と呼ばれる、アセンブリ言語をほとんど含まない[ 43] [ 44] HotSpotインタプリタ のジェネリック移植を開発している[ 45] 。この移植により、HotSpotのインタプリタ移植を任意のLinux プロセッサアーキテクチャに適合させることがとても容易になる[ 46] 。zero-assembler Hotspot のコードは、IcedTea7のバージョン1.6よりHotSpotのx86 以外の移植(PPC 、IA-64 、S390 およびARM )の全てに使われていた[ 47] [ 48] [ 49] 。
IcedTeaプロジェクトはまたHotSpot用にShark と呼ばれるプラットフォーム非依存な 実行時コンパイラ も開発している。これはLLVM を使いZero を補完するものである[ 44] [ 50] 。Sharkは2010年8月に上流であるOpenJDKに含まれた[ 51] 。ARM32用のJITは1.6.0[ 52] と2.1.1[ 53] に最初に含まれた。レッドハットによるAArch64 へのネイティブ移植[ 54] は2.4.6で登場し[ 55] 、SAP/IBMからのネイティブPPC64移植[ 56] は2.5.0に含まれる予定である[ 57] 。PPC/AIX移植はバージョン8u20からOpenJDKの上流に含まれており[ 58] 、AArch64移植はバージョン9から含まれる予定である[ 59] 。
関連項目
脚注
^ “[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日 閲覧。
外部リンク