| 開発者 | Apache ソフトウェア財団 | ||||
|---|---|---|---|---|---|
| 最終リリース |
| ||||
| リポジトリ |
| ||||
| 書かれた | C、Java | ||||
| オペレーティング·システム | Linux、Windows | ||||
| タイプ | Java 仮想マシン、Javaライブラリ | ||||
| ライセンス | Apache ライセンス 2.0 | ||||
| Webサイト | ハーモニー | ||||
Apache Harmony は、Apache Software Foundationによって開発された、廃止されたオープンソースの無料 Java 実装です。[1] 2005 年 5 月初旬に発表され、2006 年 10 月 25 日、取締役会は Apache Harmony をトップレベル プロジェクトにすることを決議しました。Harmony プロジェクトは (2011 年 2 月時点で) J2SE 5.0 で 99%、Java SE 6 で 97% の完成度を達成しました。[2] Androidオペレーティングシステムは歴史的にHarmony の主要なユーザーでしたが、Android Nougat以降はOpenJDKライブラリへの依存度が高まっています。[3]
2011年10月29日、プロジェクトリーダーのティム・エリソンはプロジェクトを廃止するかどうかの投票を開始した。結果は賛成20票、反対2票で[4]、プロジェクトは2011年11月16日に廃止された。[5] [6]
歴史
開始
Harmony プロジェクトは当初、フリー Java 実装のすべての開発者を団結させる取り組みとして構想されました。多くの開発者は、このプロジェクトが GNU、Apache、その他のコミュニティよりも優れたものになると予想していました。GNU開発者は、最初の準備計画に招かれ、参加しました。[7]その後、Apache は、Harmony を Apache License v2 で利用できるようにしたかったため、GNU Classpathのコードを使用しないことを決定しました。 [8] Apache 開発者は、必要なクラスをゼロから作成し、ソフトウェア企業から必要な大量のコードの寄付を期待します。プロジェクト開始時のさまざまな誤解や、IBMなどの大手企業からの大量の既存コードの寄付の提案により、フリー Java コミュニティの一部の人々は、このプロジェクトを Apache プロジェクトではなく企業コンソーシアムと見なすようになりました。[9]
GNU ClasspathプロジェクトとApache Harmonyプロジェクト間の大きな非互換性の1つの点は、ライセンスの非互換性でした。ClasspathのGNU General Public Licenseとリンク例外に対して、HarmonyのApache Licenseです。[9]
SunからのTCKライセンス取得の難しさ
2007 年 4 月 10 日、Apache Software Foundation は、Sun Microsystems のCEO であるJonathan Schwartzに、 Java SE 5のテクノロジ互換性キット(TCK) の適切なライセンスを取得できないことに関する公開書簡を送りました。TCK は、 Java SE 5 のSun仕様ライセンスで要求されているように、Java SE 5 仕様との互換性を実証するためにプロジェクトに必要なテスト キットです。[10] ASFにとってこのライセンスが受け入れられないのは、Harmony のユーザーが利用できる「使用分野」を制限することで権利制限を課しており、 Java Community Process のルールに準拠していないためです。[11]
Sunは自社ブログ[12] [13]で、TCKを含むGPLの下でJavaプラットフォームのオープンソース実装を作成するつもりだが、できるだけ早くGPLの下でLinuxコミュニティがJavaプラットフォームにアクセスできるようにすることを優先していると回答した。
この回答は、 Sunが公開書簡に対して「十分にオープンな態度で」回答しなかったとして批判する反応を引き起こした。 [14]あるいはむしろApache Software Foundationを批判する反応もあった。特にクラスライブラリの公開までの時間的スケールを考慮すると、Sunからもっと外交的に交渉すれば得られたはずのものをASFが積極的に要求したのは賢明ではなかったと考える者もいる。[15] [16]
Sunは2007年5月にOpenJDKをリリースしましたが、同時にOpenJDKから大幅に派生したGPL実装に対して、TCKをOpenJDKのコンテキストで実行できるようにする特定のライセンスもリリースしました。 [17]これはGPLライセンスではないApache Harmonyには適用されません。2010年12月9日、Apache Software Foundationは、Harmonyプロジェクトで使用するためにApacheが受け入れ可能なライセンスを取得するのが難しいことに抗議して、Java Community Process Executive Committeeを脱退しました。 [ 18 ] [19]
Android SDKでの使用
GoogleのAndroidプラットフォームで使用されている仮想マシン(バージョン4.4までのDalvikとその後継のAndroid Runtime (ART))は、クラスライブラリのコアにHarmonyのサブセットを使用しています。[20] [21]ただし、DalvikはJava SEやJava ME クラスライブラリプロファイルに準拠していません(たとえば、 J2MEクラス、AWT、Swingはサポートされていません)。
Android 7.0「Nougat」ではHarmonyがOpenJDKに置き換えられました。[3]
プロジェクトの終了
2010年10月11日、これまで同プロジェクトで圧倒的に最大の参加者であったIBMは、 OracleのOpenJDKプロジェクトに参加することを決定し、実質的にHarmonyからOracleリファレンス実装へと取り組みを移行した。[22] [23] IBMのLinuxおよびオープンソース責任者であるボブ・スーターは、「IBMは開発活動をApacheプロジェクトHarmonyからOpenJDKに移行する」とブログに投稿した。[24] 2011年3月、IBMのティム・エリソンはHarmonyのプロジェクト管理委員長を辞任したことを発表した。[25] [26] IBMの離脱後、プロジェクトの活動レベルは大幅に低下した。[27]
2011年10月29日、プロジェクトリーダーのティム・エリソンが、プロジェクトを廃止するかどうかの投票をharmony-devメーリングリストで開始した。11月3日の結果は、廃止が20対2で賛成だった。[4] 2011年11月16日、Apache Software Foundationの取締役会は、プロジェクトを終了する動議を可決した。[28]ディレクターの一人であるラリー・ローゼンは、提案のメリットではなくタイミングに基づいて「反対」票を投じたが、それ以外は全会一致だった。[28]プロジェクトは2011年11月16日に廃止された。[5]
開発チーム
当初、Apache Harmony はいくつかの企業から大量のコード提供を受けました。開発に関する議論は公開メーリング リストで行われました。その後、Apache Software Foundation のメンターは開発プロセスを「Apache 流」に近づけるために多大な努力を注ぎました。[29] [30]そして、その努力は成功したようです。
最終開発状況
Apache Harmony は、2006 年 10 月 29 日に公式 Apache プロジェクトとして承認されました。
建築
動的ランタイム レイヤー仮想マシンは、次のコンポーネントで構成されます。
- VM コア:そのサブコンポーネントには、JVM 制御機能のほとんどが集中しています。
- 移植層: プラットフォーム固有の詳細を単一のインターフェースの背後にある他の VM コンポーネントから隠し、Apache Portable Runtime層に基づいています。
- ガベージコレクター: ヒープメモリにJavaオブジェクトを割り当て、さまざまなアルゴリズムを使用して到達不可能なオブジェクトを再利用します。
- 実行マネージャー: メソッドをコンパイルするための実行エンジンを選択し、プロファイルと動的再コンパイル ロジックを処理します。
- クラス ライブラリ: Java 標準ライブラリです。
- オペレーティングシステムのスレッドを処理するスレッドマネージャ
- 実行エンジン:次の要素で構成されます。
- メソッド コードのコンパイルと実行のためのジャストインタイム コンパイラ。
- デバッグを容易にするインタープリター。
サポートプラットフォームとオペレーティングシステム
このプロジェクトは、多くのプラットフォームやオペレーティングシステムでの開発を容易にする移植可能な実装を提供しました。主な焦点は、x86およびx86-64アーキテクチャ上のWindowsおよびLinuxオペレーティングシステムでした。 [31]
クラスライブラリの範囲
ソフトウェア企業からの期待された寄付は実際に受け取られました。Apache Harmony には現在、 Intelが寄贈したSwing、AWT、Java 2Dコードを含む実用的なコードが含まれています。
2011年2月現在[アップデート]、HarmonyプロジェクトはJDK 5.0で99%の完成度を達成し、Java SE 6では97%の完成度を達成しました。[2]
Apache Harmonyプロジェクトの進捗状況は、J2SE 1.4およびJava SE 5.0と比較して追跡できます。[32]また、Java SE 6.0向けに開発中のHarmony v6.0のブランチもあります。
Apache Harmony の開発者は、目標 (車輪の再発明ではない) を達成するために、既存のフィールドテスト済みのオープンソース プロジェクトをいくつか統合します。これらのプロジェクトの多くは成熟しており、よく知られていますが、ライブラリの他の部分はゼロから作成する必要がありました。
これは、Apache Harmony プロジェクトで使用されている既存のオープン ソース コンポーネントのリストです。これらのコンポーネントの一部は、プロジェクトの開始前から使用されていました。
ドキュメント
Harmony は、代替となるフリーの Java 実装に比べてドキュメント化が進んでいません。たとえば、GNU Classpath では、中心となるCORBAクラス (ORB) のすべてのメソッドについて、標準の抽象 API クラス[33]と実装[34]の両方に説明コメントがあります。Harmony が使用する Yoko プロジェクト[35 ]では、標準の宣言[36]と実装クラス[37]の両方のほとんどのメソッドが、2006 年 10 月末の時点ではドキュメント化されていませんでした。また、GNU Classpath は、古い CORBA 機能と新しい CORBA 機能の両方をサポートしていました (Sun の実装と同じ)。一方、Harmony では、古い標準 ( ) の中心となるメソッドがORB.connect(Object)完全に未実装のままになっています。
ツール
Javaプラットフォームの完全な実装には、Javaソースコードをバイトコードに変換するコンパイラ、 JARファイルを管理するプログラム、デバッガ、アプレットビューアとWebブラウザプラグインなども必要です。Harmonyには、コンパイラ、アプレットビューア、jarsigner、javah、javap、keytool、policytool、unpack200があります。[38]
仮想マシンのサポート
Harmony には、Harmony クラス ライブラリを実行する 7 つの仮想マシン実装があり、それらはすべて外部グループからの寄贈です。
- JC Harmony Edition VM、「JCHEVM」は、作者 Archie Cobbs が提供したJCVM のインタープリタに基づいています。
- BootJVM は、Daniel Lydick が寄稿したシンプルなブートストラップ仮想マシンです。
- SableVM は、Sable Research Group の著者によって提供された、高度でポータブルなインタープリターであり、動的ランタイム レイヤー仮想マシンです。
- DRLVM は、Intelが提供したジャストインタイム コンパイラです。
- BEAはApache Harmonyクラスライブラリを実行するJRockit VMの評価版の提供を発表しました。[39]
- JikesRVMは、 Apache Harmonyクラスライブラリを使用するオープンソースのメタ循環JVMです。 [40]
- Ja.NET SEは、 .NET Framework CLR上で動作するJava 5 JDK(クラスライブラリ、ツールなど)を提供するオープンソースプロジェクトです。Ja.NET SEはApache Harmonyクラスライブラリに基づいています。[41]
2006 年 11 月末時点では、これらの仮想マシンが提供する言語サポートはまだ不完全であり、ビルド手順では、クラス ライブラリ テスト スイートを実行するためにIBM独自のJ9 を使用することを推奨していました。ただし、これはもう必要ありません (2007 年 7 月現在)。
プロジェクトの残りの部分については、DRLVM仮想マシンの開発は現在停滞している(2011年5月現在)。[42]
申請状況
Harmonyは、その構想以来、非自明なJavaアプリケーションを実行する能力を成長させてきました。[43] 2007年7月現在[アップデート]、サポートされているアプリケーションは次のとおりです。
- Eclipse:36000リファレンス実装(RI)テストの99.3%がHarmonyのDRLVM +クラスライブラリに合格しました。[44]
- Apache Tomcat : RIテストは100%合格。[45]
- JUnit : RIテストは100%合格。[46]
- Apache Ant : RIテストの97%が合格。[47]
- Apache Derby、Apache Axis、Log4j、Apache Velocity、Apache Cocoon、jEdit、Apache Commonsなどの他のアプリケーションも高い合格率で合格しています。
しかし、Harmony のライブラリが不完全だったため、他のアプリケーションを起動することができませんでした。
- ArgoUML : Java アプレットの実装が必要であり、これは Harmony ではまだ利用できないためです。
- Apache GeronimoはApache Harmony上で動作しますが、いくつかの問題と回避策があります。[48]
- 実装されていないセキュリティ クラスのため、Vuze (旧 Azureus)。
参照
参考文献
- ^ 「プロジェクト開始時のオリジナルの FAQ 質問」。 harmony.apache.org 。 2011 年2 月 27 日閲覧。
ライセンスでオープン ソース実装が許可された最初の Java SE バージョンである Java SE 5 から開始しますが、Java SE 6 およびそれ以降のバージョンも継続します。
- ^ ab 「クラス ライブラリ コンポーネントのステータス」。 harmony.apache.org 。 2011 年2 月 27 日閲覧。
- ^ ab Amadeo, Ron (2016 年 1 月 7 日)。「Android N が OpenJDK に切り替え、Google は Oracle に GPL で保護されていると伝える」。Ars Technica。Condé Nast。2016年7 月 1 日閲覧。
- ^ ab Ellison, Tim (2011 年 11 月 3 日). 「Move Apache Harmony to the Attic (updated)」. org.apache.harmony.dev. 2013 年 12 月 14 日時点のオリジナルよりアーカイブ。代替 URL 2013 年 2 月 7 日にWayback Machineにアーカイブされました
- ^ ab Ellison, Tim (2011 年 11 月 16 日). 「Board accepted attic resolution」. org.apache.harmony.dev. 2013 年 12 月 14 日時点のオリジナルよりアーカイブ。2011年11 月 27 日閲覧。代替 URL 2013 年 3 月 14 日にWayback Machineにアーカイブされました
- ^ 「(アパッチ)ハーモニーの終焉」The H. 2011年11月4日。
- ^ Mark Wielaard (2005 年 5 月 9 日)。「Harmony!」。2008 年 5 月 16 日のオリジナルからアーカイブ。2010年10 月 21 日取得。Apache
は、完全に無料の j2se 実装に関する議論の提案を作成しました。彼らはこれを「Harmony」と呼んでいます。これは (現時点では) コードに関するものではなく、そのような優れたものを実現するための方向性を見つけることに関するものです。Dalibor、Tom、Jeroen、そして私には、その議論を支援し、適切なアーキテクチャを設定する方法を示すよう依頼されました。
- ^ Geir Magnusson Jr. (2006 年 5 月 24 日)。「フリー Java 実装の提案」Apache。
- ^ ab Mark Wielaard (2006 年 5 月 24 日)。「フリー Java に向けて」。LWN.net。
これらすべては、Intel から寄贈されたコードがいくつか利用可能になったにもかかわらず、Harmony を支えていた元のフリー ソフトウェア プロジェクトと、現在 Apache Harmony として知られているプロジェクトとの間に実質的な協力関係がないことを意味します。これらすべてにより、一部の人々は Harmony を完全なコミュニティ プロジェクトではなく、ASF プロジェクトを装った企業コンソーシアムであると考えました。
- ^ 「Sun Microsystems への公開書簡 - JCK」。apache.org。
- ^ ASF によれば、1) 仕様リーダーは、ライセンシーがそのような独立実装を作成または配布する権利を制限または制約する契約条件または契約条項を課すことはできません(セクション 5.C.III)。また、2)仕様リーダーは、仕様の互換性のある実装に対して、必要なすべての IP をロイヤリティフリーでライセンスする必要があります(セクション 5.B)。
- ^ 「On the Record」。2007年4月21日時点のオリジナルよりアーカイブ。
- ^ 「Sun から Apache へ: 「オープンソース プロセスは旅」 - Java IoT」。2008 年 7 月 9 日時点のオリジナルよりアーカイブ。2007 年4 月 14 日閲覧。
- ^ 「The Silence from an Open Sun」イアン・スケレット2007年4月16日。
- ^ 「Mark J. Wielaard » Blog Archive » OpenJCK」。2023年8月27日閲覧。
- ^ Gilbert, Dave (2007 年 4 月 16 日)。「Apache がその公開書簡を後悔する 5 つの理由」。2007 年 4 月 18 日時点のオリジナルよりアーカイブ。2008年3 月 8 日閲覧。
- ^ 「OpenJDK Community TCK ライセンス契約 V 1.1」(PDF)。Sun Microsystems 。 2008 年3 月 8 日閲覧。
ライセンシー実装が OpenJDK コードから大幅に派生していること、およびそのような実装が第三者に配布されている、または配布される予定がある場合は GPL ライセンスに基づいて配布されることを条件として、Sun は、TCK における Sun の知的財産権の範囲内で、ライセンシー実装の開発およびテストの目的に限り、TCK を社内で使用するための世界的、個人的、非独占的、譲渡不可、限定的なライセンスをライセンシーに付与します。
- ^ 「ASF が JCP 実行委員会を辞任」Apache Software Foundation。2010 年 12 月 9 日。
- ^ 「Apache、Oracle の不正使用に抗議して Java ガバナンス グループを脱退」 Ars Technica、2010 年 12 月 9 日。
- ^ 「Google の Android SDK は Java ME をバイパスし、Java Lite と Apache Harmon を採用」。infoq.com。2007 年 11 月 12 日。2009年5 月 31 日閲覧。Java
SE または Java ME の完全版を提供する代わりに、Google は 2 つの面で方向転換しました。まず、コア Java パッケージの限定されたサブセットが提供されます。(...) この方法を採用することで、Android は開発言語として Java を使用するものの、完全な JDK をサポートしない別の Google プロジェクト GWT の足跡をたどっています。
- ^ 「Package Index」。Open Handset Alliance。2009年6月27日時点のオリジナルよりアーカイブ。2009年5月31日閲覧。
- ^ 「Oracle と IBM が OpenJDK を通じて Java イノベーションを加速するために協力」Oracle Corporation。2010 年 10 月 14 日時点のオリジナルよりアーカイブ。2010年10 月 22 日閲覧。
- ^ Ryan Paul (2010 年 10 月 13 日)。「Java 戦争: IBM が OpenJDK に参加、Oracle は Apache Harmony を回避」。Ars Technica。2010年 10 月 19 日時点のオリジナルよりアーカイブ。2010年10 月 22 日閲覧。
- ^ Bob Sutor。「IBM が OpenJDK コミュニティに参加し、オープン ソース Java の取り組みの統一を支援」。2010 年 10 月 18 日のオリジナルからアーカイブ。2010年10 月 22 日閲覧。IBM
は、開発作業を Apache Project Harmony から OpenJDK に移行します。同じことを希望する他の開発者のために、移行が可能な限り容易になるように協力します。IBM は、他の Apache プロジェクトにも引き続き積極的に関与します。
- ^ Tim Ellison (2011年3月14日). 「Harmonyプロジェクトの再起動」. 2011年3月20日閲覧。
- ^ 「Apache Harmony の将来はどうなるのか?」。infoq.com。2011 年 3 月 14 日。2011年3 月 20 日閲覧。
- ^ 「メーリングリストアーカイブ: dev@harmony.apache.org」。apache.org 。 2011年9月11日閲覧。
- ^ ab 「取締役会議事録」。Apache Software Foundation。2011 年 11 月 16 日。2012年8 月 8 日閲覧。Larry
は、解雇に反対しているのではなく、単にメッセージングに取り組む時間がもっと欲しかっただけだということを指摘してもらいたいと考えています。
- ^ Leo Simons (2006 年 7 月 24 日)。「私たちはすべての開発がここで行われることを望んでいます」。2007 年 9 月 29 日時点のオリジナルよりアーカイブ。2006 年7 月 28 日閲覧。
- ^ 「The Apache Way」。2006年8月21日時点のオリジナルよりアーカイブ。2006年7月28日閲覧。
- ^ Harmony ドキュメント チーム。「Apache Harmony - サポートされているプラットフォーム」。harmony.apache.org。
- ^ 「JDK_5.0とHarmony_5.0の比較結果」。people.apache.org 。 2023年8月27日閲覧。
- ^ クラスパス[永久リンク切れ ]
- ^ クラスパス[永久リンク切れ ]
- ^ 「Harmony は最新の Yoko jar を使用しています...」 2006 年 9 月 27 日。
- ^ “ライセンス”. apache.org . 2023年8月27日閲覧。
- ^ “ライセンス”. apache.org . 2023年8月27日閲覧。
- ^ 「Apache Harmony - プロジェクトロードマップ」。harmony.apache.org 。2023年8月27日閲覧。
- ^ 「[一般] Harmony クラス ライブラリ用の JRockit H27.2.1 がリリースされました」。
- ^ 「Jikes RVM 3.0 + Apache Harmony を発表!」
- ^ 「ジャネット・デヴ」。
- ^ 「Subversion Commits」. harmony.apache.org . 2011 年5 月 28 日閲覧。
- ^ "Application_Status". apache.org. 2007年8月10日時点のオリジナルよりアーカイブ。2006年11月4日閲覧。
- ^ 「Eclipse Unit Tests Pass on DRLVM - Harmony Wiki」。2007年2月8日時点のオリジナルよりアーカイブ。2006年11月4日閲覧。
- ^ "Apache_Tomcat". apache.org. 2007年2月10日時点のオリジナルよりアーカイブ。2006年11月4日閲覧。
- ^ 「JUnit」. apache.org.
- ^ 「Apache_Ant」。apache.org。2007年2月10日時点のオリジナルよりアーカイブ。2006年11月4日閲覧。
- ^ 「Apache Harmony」. apache.org.
外部リンク
- 公式サイト
- Apache Harmony に関するよくある質問
- Apache Harmony ソースコードリポジトリ
- JavaOne 2006 オンライン ハーモニー セッション
- JavaOne 2007 オンライン ハーモニー セッション
- JavaPolis 2006 での Geir Magnusson Jr による Apache Harmony
- Javaオープンソース論争 - 議論のよい要約
- Apache Harmony の将来はどうなるのでしょうか?
- Apache Harmony がプロジェクト マネージャーを失う
