JRuby開発者 Charles Nutter がオラクル対グーグル Java訴訟について語る

http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html

ポストは丁寧にまず自己紹介から始まる。読者に著者のバイアスを知ってもらう為だ。

Java開発者、オープンソースデベロッパー、JRuby貢献者、Rubyファン

大学時代1996からずっとJavaの開発者。 「塹壕開発者」からアーキテクトまで。その間、ほぼJavaスタックに満足。

オープンソースデベロッパーでもある。LiteStepというウインドーズの代用OS?のプロジェクトに貢献。Cも使う。あとHack-Itという非公開win32 APIを利用可能にするプロジェクトなどにも参加。

JRubyの開発者。2004年にJRubyを発見。JRubyを単なる「面白いプロジェクト」からトップのRuby実装に育てあげたうちの一人と自負している。クレイジーで斬新なことをするRubyコミュニティーとその威張った態度も好きだ。だからRubyJVMにもってきたかった。しかし、一方JVMが優れたプラットフォームだという事実を、それを否定する連中に証明してやりたいとう意地があったのも事実だ。

俺(原文著者CHARLES NUTTER)によると事実はこうだ

Javaはデカい。とてつもなく巨大だ。

Javaの各種の実装を紹介。ちょっとしたJavaの歴史だ。関心のある方は原文を。

Javaのオープンでないところ

OpenJDKはGPLで公開されたので、永遠にしっかりしたJava6の実装が確保された。
しかし、Javaは完全にオープンなプットフォームではない。今回の特許訴訟で明かになったように。あとJCP quagmireによってなかなか進化しない各種規格も問題だ。

しかし一番の問題はSunの「Java test kit」だ。実装が規格に準じているかどうかを定めるテストがオープンソースで提供されていない。フルに規格に準じた実装を作ろうとする開発者の手を縛っている。

つまり、非公開のツールを使わないとOpenJDKの規格に準じてGPLの対象になる実装を作れないということになる。

Javaのオープンなところ

Javaに対する憎悪

Java嫌い」の根源とJavaのかかえる問題をよく分析している。

1 広く使われ憎まれているプラットフォームとしてはJavaマイクロソフトのに次いで二位だ。
90年代にまだ健在だったSunのPRにJavaがいいと信じこまされた管理者たちは開発者にJavaを無理矢理飲込ませようとした。PerlC++SmallTalkなどで自由に開発していた者が色々な制限で縛られたJavaを、それがまだ使いないような分野で使用を余儀なくされたのだ。これを体験した開発者達はそれ以来Javaに関する全てを憎しみ、Javaが宇宙に放り出されない限り満足しなようになってしまった。

2 そのころから現在までのJavaの進化をふりかえっている。Javaの歴史の簡潔なまとめになっているが、割愛させてもらう。Javaが憎まれる理由その2は、初期のJavaの記憶があるからだとしている。

3 この数年、色々な理由でJavaの進化が滞っている。

  • Sunの衰退
  • JCPメンバーの調和のなさ
  • ラクルによる買収

新しいもに好きのヒップスターには死んだも同然。

GoogleJavaを救う?

Javaの問題を考えるとgoogleが独自路線に走ったことに理解を示すようなことを書いている。それどころか、JVMの問題に直面したJRubyの開発者の体験から自分でもそうしたいと言っている。つまり、進化が止った正式Javaを捨て、独自Javaを開発したいということだ。
改善点は:

  • 「小便のように駄目な」プロセス管理API
  • 使い難いネィティブインターフェース
  • ダイナミック言語のサポートを頑なに拒む態度

OpenJDKを「正しい」方向もっていく会社があるべきだ。そしてそれに参加したい。しかし、そういうベンチャーは利益が望めなく、資金力とエンジニアリング力がいる。プラットフォームの開発コストを吸収でき、Javaに対する強いコミットメントを持ち、優秀なエンジニアの軍隊を持っているような会社が必要だ。グーグルのような…

何故Androidか。

JavaMEはメーカーからライセンス料を取れる数少いJavaテクノロジーだった。Sunとしては当然これをひどく失敗させた。(金になる商品は駄目にするSunの実績を皮肉っている)

しばらくしてやっとgoogleがモバイルに目覚めた。重要なモバイルプラットフォームを
proprietaryなものに任せてはおきたくない。JavaMEはよさそな技術だったけど、
Sunは収益に困っている。(弱者のプラットフォームに依存したくないってことだろう)
SunはJavaMEをGoogleの満足のいくようなものにするつもりはない。

ここからが面白い。
グーグルは強行作戦を開始。
二つのベストプラットフォームを選択: LinuxJavaだ。しかしJavaには問題があった。多様な特許、著作権、規格に制約されていた。一番オープンなOpenSDKでさえ、GPLによりメーカーがカスタマイズしてバイナリとして出荷することは許されない。

そこで、新規にVMを開発し、制約の緩いコアライブラリを使うことにより著作権や特許から解放された世界を作った。それがAndroidだ。

1 DalvikはJVMではない。JVMバイトコードは実行しない。Dalvikで走らせるためにはツールでトランスレートしなければならない。IKVMが.NETで動くのと似ている。

2 コアライブラリ。AndroidはJava1.5をほぼ網羅するラフなサブセットをサポートしている。サブセットと言っても充実していて、JRubyが基本的に変更なしに動かせるぐらいのものだ。数少ない制約はあるが。例えば、JVMを生成できない(というかしても使えない?)のでランタイムの最適化は現在できない。

Sunやその他ベンダーのライセンスに制約をうけないように、googleは「完全ではないが、かなり近い」Apache Harmony class librariesを選んだ。これは「Java compatibility kits」でテストされていない。この話には裏があるらしい、、

つまりgoogleはJavaVMでないVMを作り、Sunのものでないクラスライブラリを使うことによって、ライセンスを得ていない非公式モバイルJava(もどき)を構築した。これにより、訴えられることを避け(万一とうなった時にはそのダメージをやわらげ)ながら、開発者が求めるオープンなモバイルJavaプラットフォームを完成させた。
これにはNutter氏はこのやり方にかなり肯定的だ。

Sunの反応

Sunは面白くないと思った。社員の開発者がAndroidに関心を持つと、止めろと命じだ。経営陣は将来攻撃することになるかもしれないプラットフォームに社員が関与しいたら恥ずかしいことになるだろうと感じだに違いない。
さらに、Sunが押していたJava環境よりもAndroidに関心が高まっていたこにも恥を感じていた。Androidは優れたプラットフォームでライブラリをよくサポートしたものだった。初めて自分たちがコントロールしていないJavaの競争相手が出現したのだ。
メーカーはJavaMEを捨て、Androidにむらがった。これにより、少々のライセンス料も枯れてしまった。

ここでSunを讃えなければいけないポイントがある。かれらはオラクルがやっていることをやろうとしなかった。James Goslingが言ったように「特許訴訟はSunの血統には入っていなかった」のだ。

こりゃ長い… 次回「The Mantle of Java Passes to Oracle」から。