Apache Harmony PMC は今週初め,コードベースを Apache Attic に移動して PMC を解散するプロセスの開始を問う 投票を行った。賛成18票に対して反対2票というその結果によって Apache Harmony プロジェクトは終了し,将来のために Attic に置かれることになる。
Apache Harmony はオープンソースの JDK クリーンルーム実装である。Apache ライセンスの下でリリースされたが,Sun が JSPA の供与を拒んだため,Java 互換を称することができなかった。JSPA は,実装に Java という名称を用いるための前提条件である,互換性テストキット (Testing Compatibility Kit / TCK) へのアクセスを許可するものだ。Apache は 2007年4月10日に Sun への公開書簡 で,この件について明確にするよう求めたが,Sun からの回答は得られなかった。
Apache Harmony プロジェクトの主要スポンサー企業は IBM である。同社は標準の JDK よりも制約の少ない非GPLライセンスの JDK バージョン開発を期待して,このプロジェクトを創設したのだ。しかし Oracle が Sun を買収したことで,JSPA が重視されなくなることが確実になったため,Apache としては 2010年12月に JCP を脱退 せざるを得なくなった。
IBM は OpenJDK に参加 したときから,2つの JDK 実装に対して関与を続ける意思があるのかどうか,すでに疑問が持たれていた。IBM の新技術担当副社長である Rod Smith 氏は当時,次のようなことを言っている。
… 一方で IBM がまた,開発目標を Apache Harmony から OpenJDK にシフトさせていることも明らかになりました。その一環として Smith 氏は,IBM がイノベーションのいくつかを Harmony プロジェクトから Java SE リファレンス実装に移行するかも知れない,と述べています。
このことが後に,Apache Harmony の PMC であった Tim Ellison 氏の 職務辞任 につながった。Apache Harmony に参加して目的を継続するチャンスはコミュニティにも,商用スポンサーにもあった。しかしこの問題に対して Oracle が取った強硬な態度からは,Java を称する目標が達成できるとはとても思えなかった。Apache Harmony コードベースの最大の受益者は Google だ。同社は Android のランタイムを提供するためにそのコードを (Dalvik 仮想マシン向けにコンパイルダウンされてはいるが) 使用している。しかしながら Google は現在 Oracle との争議 に関与しているため,Apache Harmony プロジェクトと関係を持つことを避けていた。
PMC が存在せず,活発なコミッタも存在しないことから,元 PMC の Tim Ellison 氏はメーリングリストを通じて Apache Harmony の Attic への移動を提案した。Attic に移ったソースコードは参照専用のバージョンとして公開は続けられるが,それ以降の開発作業は行われない。将来において別のプロジェクトのもとに実行される作業の可能性までは排除されないが,これまでの例から判断する限り,それが現実になる可能性は低い。代わりとして Google が注目しているのは Go や Dart など新プログラミング言語である。いずれも Oracle との訴訟が不利な状況になった場合には,Android の将来バージョンにおいて採用される可能性がある。
Apache Harmony はクリーンルームで開発された JDK と JVM の非GPL実装を提供するだけではなく,OpenJDK が達成できていない方法でモジュール性を提供するための努力もなされている。パッケージをモジュール化して別々のユニットに分割することで,例えば java.io
と java.net
を必要とするアプリケーションに,java.awt
を除いたバンドルをすることが可能になる。このようなサブセットは完全な Java 実装にはならない反面,メモリ制約のある多くのデバイスでは,不要なクラスのロードを回避することによるスタートアップの高速化という恩恵を受けられるだろう。また java.beans
と java.applet
,さらには Jigsaw の調査開始よりかなり前の java.awt
に関する循環参照の問題なども,これによって解決する。
しかし Apache Harmony の JVM が持つメリットも,OpenJDK の Hotspot あるいは他の JIT 改良によるパフォーマンスのメリットには追い付けなかったため,結果としてパフォーマンスクリティカルなシステムにはほとんど使われていない。また Eclipse を起動することはできたのだが,それもデモンストレーションの範囲を越えて広く使用されるには至らなかった。
Apache Harmony の言語ライブラリは,そこから分岐した Google Android コードベースのリポジトリに現在も存在している。