JDK7 (リンク)、OpenJDK(リンク)、そしてIcedTea(リンク)の三者が並行して開発されているために各々のプロジェクトがどのように依存し合っているのか混乱することがある。David Herron氏はOpenJDKの品質リーダーで、勘違いを正し(リンク)、なぜJDK7の開発にこれほど時間がかかっているのかを説明している。
まずDavid氏はOpenJDK 6とJDK 6の違いに関する説明から始めている。
OpenJDK 6の開発はOpenJDK 7から分岐して始まりました。開発チームはJCK 6のテスト・スイートによる検証を通りJava6との互換性を保てるようになるまでOpenJDK 7からコードを剥ぎ取っていったのです。
要するにOpenJDK 6がとてもよく出来ているということです。いくつかのLinuxディストリビューションがOpenJDKをJDKとして採用していますし、JCK6bのテスト・スイートをパスするようにビルドすることも出来ますので、OpenJDK 6を使って仕様に準拠したJDKをビルドすることが出来るということです。そして残念なことに私たちはこのよく出来た支線(OpenJDK 6)を比較的短命に終わらせようとしているのです。目的は達成したのです。つまり、Java6と互換性のある完全にオープンなOpenJDKを手にすることが出来たのです。
続けてDavid氏はOpenJDKとIcedTeaの関係について説明している。
環境変数を設定するよりも"./configure"とタイプして"make"を実行する方を好む人がいるようです。IcedTeaプロジェクトは元々OpenJDKの(不要なコードによって生じる差異を原因とする)不完全性への対応と完全にオープン・ソースかされたツール類とコード・ベースを望むコミュニティからの要望から始まったものです。IcedTeaは長らく、前述した"./configure"ベースのビルドシステムと共に歩んできた、OpenJDKに適用するためのパッチのセットでした。
OpenJDKに含まれる不要なコードは除去しましたので既にこのような差異はなくなっていると思います。この結果IcedTeaプロジェクトに含まれるパッチの数が減少したと確信しています。IcedTeaの設定用スクリプトによってZero Assemblerを使ってx86/sparcチップセット以外に向けたコンパイルが出来るようにOpenJDKをいろいろなモードでビルドすることが出来るというのはよい点の一つだと思います。
java-web-startプラグイン基盤はIcedTeaが提供する大きなピースのひとつです。プラグインのソースを公開することは出来ませんでしたので、勿論6u10向けにプラグインを作り直しました。新しいプラグインのソースをOpenJDKの一部として公開できるようにすることが望まれますが、私の知る限りではその(公開するという)決断は予定されていません。
David氏はJDK7とOpenJDK7が(ほぼ)同一のコード・ベースに基づいていることを示している。
…OpenJDK7/JDK7はほぼ同じコード・ベースから始める計画です。分岐したものを保守していくのはとても大変だというのは明らかです。そしてもしJDK7がOpenJDK7から大きく乖離することになれば、2つのことが起こります。a)(乖離を埋めるのが)とても高くつくことになるb)オープン・ソースの世界における私達の努力が水の泡となる。
ただ"ほぼ同じ"というのは同時に、ある程度の違いはあるということを意味しています。
不要なコードによる差異を覚えていますか?このような差異のいくつかは2007年5月の時点で私たちがオープン・ソースに出来なかったコードでしたが既にオープン・ソース化しています。他の差異については引き続き承認を得る(例えばSNMP)必要がありますが、未だに私達がクローズド・ソースのコードを使っている部分についても代替となるオープン・ソースのコードが存在しているものもあります。これはフォントやグラフィックのラスタ化に関する部分で顕著です。古いクローズド・ソースのラスタ化コードは、不要なものとなりましたが、10年以上にも及ぶバグ・フィックスとチューニングなどが施されてきました。従って製品化されるJDKでそれを追い出すことになるオープン・ソースは既存のクローズド・ソースのコードと同等以上の処理速度と品質となる必要があるでしょう。
JDK7(のリリースに)こんなにも長い時間が掛かるのはOpenJDKのソースのリリース、JavaFXへの対応そして何よりリソース不足が原因であるとDavid氏は述べている。
通常のリリース・パターンに従えばJDK7は既に出荷されている頃です。つまりJava6は2006年12月に出荷され、通常のパターンではメジャー・リリースは18-24ヶ月置きに行われるのでJDK7は2-5ヶ月前にはローンチされていたということです。何があったのでしょうか?いろいろな面でリソースが食い潰されていたというのが実情です。
2007年5月にほぼ完全な状態のOpenJDKソースをリリースさせるために多くの人が労力を費やしました。ところが2007年5月にはJavaONEである発表も行われました。(JavaFXと呼ばれるちょっとしたものですが)これによって(誰かがこれはお前の父ちゃんが知ってるJavaとは違うよと言ったように)Javaを再考する必要が発生し、完成のために作らなければ大きなピースが増えたのです。
言い換えるとJDK7に取り掛かる代わりにJDK6u10とJavaFXを仕上げたのです。
JavaFXによってプラットフォームの進化のスピードが遅くなったという同様の主張はJava Developers JournalにあるJoe Winchester氏の最近の論説でも行われている。その中でJoe氏はJavaが動的言語やJavaVXのような技術を採用することを90年代にSmalltalkチームが自分たちのVM(Universal VMと呼ばれた)上でJavaを実行させようとした試みと比較している。著者はSmalltalkの場合と同様に、“肥大化させたり掘り返したりしてJVMを多芸は無芸という状態にしてしまうより”Javaそのものに注力するべきだと述べている。
OpenJDK運営委員会(OpenJDK Governing Board)の寿命が終わり近づくに連れ、Neal Gafter氏のように新体制について気にかけている人もいるということに注意する必要がある(リンク)。
OpenJDK運営委員会は1年毎に延長されてきましたが、Sun社以外の2つのメンバが決まらないまま、あと4ヶ月ほどで解散される予定です。最後に公開された議事録は2008年4月のもので、GB(運営委員会)が2008年末までに組織体制のドラフトを練り上げるという合意がなされています。
運営委員会の7人のメンバは誰なのでしょうか。4月以降の議事録を公開し、体制に関する進捗状況を知らせてもらえないでしょうか。
Sun社のJDK(参考記事リンク)とオープン・ソースJava(参考記事リンク)の将来についてあなたはどう思いますか?
原文はこちらです:http://www.infoq.com/news/2009/01/jdk-openjdk-icedtea