Apache Harmonyとは
Apache Harmony(アパッチ・ハーモニー)は、オープンソースで開発された
Javaの代替実装プロジェクトです。
Java SE 5および6をベースにしており、
Apache License Version 2の下で提供されていました。
2005年5月に開発が開始され、
2006年10月にはApache財団のトップレベルプロジェクトに昇格しましたが、最終的には
OpenJDKという別のオープンソース実装に集約される形で、2011年11月3日に開発が終了しました。
SDKやJREも配布され、仮想マシンにはDRLVM、
コンパイラにはEclipse
Java Compilerを使用していました。
歴史
プロジェクトの立ち上げ
Harmonyプロジェクトは、フリーな
Java実装の開発者たちをまとめようとする動きの中で誕生しました。多くの開発者は、この動きがApacheやGNUなどのプロジェクトとして結実することを期待していました。当初、GNUの開発者がプロジェクトの立ち上げ準備に関わりましたが、
ライセンス互換性の問題から、HarmonyではGNU Classpathのコードを利用しないことが決定されました。この決定は、Harmonyと他のプロジェクト間でのコード共有を困難にする可能性がありました。
そのため、Apacheの開発者たちは必要なクラスをゼロから書き始め、ソフトウェア会社からのコード寄贈を募るという手段を取りました。
スクラッチからの書き直し
GNU ClasspathとApacheプロジェクトが袂を分けた背景には、GPLとApache
ライセンスの相違があります。多くの組織や個人が、派生物に公開義務がないApache
ライセンスの適用を望んだことが、この決断の大きな要因となりました。GNU Classpathは独占的なソフトウェアとのリンクは可能ですが、非公開の派生物を作成することは法的に困難だったためです。
しかし、一部のフリー
ソフトウェア開発者は、
ライセンスやコミュニティの哲学の違いは別個に実装を行うまでもなく、妥協点を探せるのではないかと異議を唱えていました。それでも、プロジェクトに対する反対意見が広く支持されることはなく、「より多くのフリーソフトウェアは問題ではない」というシンプルな言葉で否定されていました。
2007年4月10日、Apache財団(ASF)は
サン・マイクロシステムズ(サン)のCEOであるジョナサン・シュワルツ宛に、
Java SE 5のTechnology Compatibility Kit(TCK)に関する公開書簡を送りました。ASFは、TCKの
ライセンスがHarmonyユーザーの利用範囲を制限し、JCPのルールに反すると主張し、受け入れられないと表明しました。
TCKは、
Java SE5仕様への実装が準拠しているかどうかを検証するためのテストキットであり、Sunが
Javaの仕様
ライセンスの中で規定していました。サンはブログで、TCKを含め
Javaのオープンソース実装プラットフォームをGPLで提供したいが、まずはGNU/Linuxコミュニティへの提供を優先すると回答しました。
このやり取りは、一部からオープンな方法ではないと批判されましたが、クラスライブラリの開示スケジュールを考慮すると、サンからのより多くの提供を受けるために、ASFは強硬な姿勢を示したと解釈する人もいました。
開発チーム
プロジェクトは立ち上げ当初から、複数の企業から大規模なコードの寄贈を受け、開発を加速させました。メーリングリスト上での議論は常に公開されており、透明性の高い開発が行われました。
その後、プロジェクトにはASFの管理者がアパッチ流の開発方式を導入したことで、大きく成功したと言えます。
2006年11月時点で、プロジェクトチームは16人の開発者と、
IBMと
インテルの16の開発チームで構成されていました。
プロジェクト終了前の状況
2006年10月、Apache Harmonyプロジェクトは、Apache財団の公式プロジェクト(Top Level Projects)に昇格しました。
ライブラリの実装状況
当初の期待通り、ソフトウェア会社からのコード寄贈が実現し、Apache Harmonyの作業コードには、Intelから寄贈された
Swing, AWT,
Java 2Dのコードが組み込まれました。
クラスの実装に関しては、2010年9月20日の時点で、
Java SE 5の99.00%、
Java SE 6の97.54%が実装されていました(クラス・メソッド・フィールドとして存在)。また、Harmonyのテストスイートは、GNU Classpathと比較してより厳密なものでした(
2006年10月時点で、GNU Classpathが20,000件のテストに対し、Harmonyは50,000件のテストを実施していました)。Harmonyプロジェクトの進捗は、J2SE 1.4と
Java SE 5.0を追いかける形で進められ、Harmony v6.0は
Java SE 6.0の別ブランチと見なすことができるほどでした。
ドキュメント
ドキュメントに関しては、Harmonyは他のフリーの
Java実装と比較して整備が遅れていました。例えば、GNU Classpathでは、中心的なCORBAクラス(ORB)の各メソッドについて、抽象APIクラスと実装クラスに関する説明コメントが付いていましたが、Harmonyで使用されていたYokoプロジェクトでは、ほとんどのメソッドについて標準の宣言と実装クラスのドキュメント化がされていませんでした(
2006年10月時点)。また、GNU Classpathは、Sunの実装と同様に、CORBAの機能について古いものと現在のものの両方をサポートしていましたが、Harmonyでは古い規格に基づく代表的なメソッド(ORB.connect(Object))が実装されていませんでした。
ツール
Javaプラットフォームの完全な実装には、
Javaソースコードを
バイトコードに変換する
コンパイラ、JARファイルを管理するプログラム、
デバッガ、アプレットビューアー、Webブラウザ
プラグインなどが必要です。Harmonyでは、
コンパイラのみが実現されていました。
仮想マシンのサポート
Harmonyは、外部からの寄贈によって4種類の
Java VM実装をサポートしていました。
JC Harmony Edition VM, "JCHEVM," は、JCVM'sインタプリタをベースにしており、Archie Cobbsによって寄贈されました。
BootJVMは、Daniel Lydickによって寄贈されたシンプルなブートストラップ可能な仮想マシンです。
SableVMは、Sable Research GroupおよびDynamic Runtime Layer Virtual Machineの作者たちによって寄贈された、高度でポータブルなインタプリタです。
BEAは、Apache Harmonyクラスライブラリが動作するJRockit VMの評価版が利用可能であることを発表しました。
2006年11月時点で、これらの仮想マシンによる言語のサポートは完全ではなかったため、クラスライブラリのテストを実行するためのビルド手順として、
IBMのプロプライエタリなVMであるJ9の使用が推奨されていましたが、2007年7月時点ではJ9は不要となりました。DRLVM仮想マシンの開発が積極的に進められ、今後の進展が期待されていました(
2006年7月時点)。
実行可能なアプリケーションの状況
当初から、Harmonyは重要な
Javaアプリケーションを実行する能力を着実に向上させてきました。2007年7月の時点で、以下のアプリケーションがサポートされていました。
Eclipse: 36,000件のリファレンス実装テストのうち、99.3%がHarmonyのDRLVMとクラスライブラリで合格しました。
Apache Tomcat: リファレンス実装テストが100%合格しました。
JUnit: リファレンス実装テストが100%合格しました。
Apache Ant: リファレンス実装テストが97%合格しました。
Apache Derby、
Apache Axis、Log4j、Apache Velocity、Apache Cocoon、jEdit、Apache Commonsなどのアプリケーションも高い合格率を示しました。しかし、Harmonyのライブラリ実装が不完全であったため、実行できないアプリケーションもありました。
ArgoUML: Harmonyでは利用できないJavaアプレットの実装が必要でした。
Apache Geronimo: 若干の修正により(問題も残っていましたが)Apache Harmony上で動作しました。
Azureus: セキュリティ関連のクラスが未実装でした。
関連項目
GNU Classpath
OpenJDK
Javaクラスライブラリ
Dalvik仮想マシン
外部リンク
Apache Harmony Web Page (英語)