InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

Sun社のJDK7、OpenJDK、そしてIcedTea:曖昧さの回避

作者 Dionysios Synodinos , 翻訳者 渡辺 裕之 投稿日 2009年1月19日

セクション
運用/インフラ,
デベロップメント,
設計/アーキテクチャ
トピック
言語 ,
オープンソース ,
Java ,
プログラミング
タグ
Java SE

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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。