Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その2)。JJUGナイトセミナー
2016年5月、GoogleとOracleがJava APIを巡って争っていた裁判に最初の陪審員による評決がくだりました。結果は、GoogleがJava APIをAndroidに流用したことはフェアユースにあたる、というものです。
この評決にはどのような背景があり、IT業界にどんな影響を与えるものなのか。このことをテーマに2016年7月に行われた日本Javaユーザーグループ主催の「JJUGセミナー」の内容を紹介しましょう。
記事は全部で4本(その1、その2、その3、その4)。いまお読みの記事は「その2」です。
ライセンスで揉めるJava実装のオープンソース化
そこで2005年に、後にいろんな波紋を引き起こすProject HarmonyがApache Software Foundationで提案されることになります。これはApache Software License 2.0で提供されるJ2SE 5の実装をみんなで作りましょう、というプロジェクトでした。
しかもモジュラー構造にすることで、プロファイルを切りなおして必要なものだけを使いましょうというEclipseで成功したモデルをやろうとしていました。
でもそれだと困る人がいるわけです。Javaの認定プログラムを提供していたサン・マイクロシステムズです。
このときサン・マイクロシステムズがJ2SEをOSS化しようと言い始めます。後のOpenJDKです。ポイントは、ライセンスがGPLv2になるということ。これは改変した場合などにコードの公開義務があるライセンスです。するとベンダにとっては独自性がどこまで出せるかというと微妙なわけです。
そこで2006年にApache HarmonyがJavaの認定を受けさせろと、サン・マイクロシステムズに要求するんですね。
しかしJ2SEでJavaの標準を認定するためのTest Compativility Kit(TCK)には利用制限があって、テスト対象となるJavaVMの実装が組み込み端末にも適用するのは認めないとなっていました。
この当時、すでに組み込み系のマシンパワーではJavaが走るのは当たり前でした。Apache Harmonyの実装もその分野を狙っていたわけです。
2007年に、サン・マイクロシステムズはTCKを公開します。そしてテストを受ける費用も無償にしましたが、ただしGPLv2に準拠しなければだめですという条件を付けます。
これはどうみてもOpenJDK専用のTCKであり、Apache HarmonyにTCKを適用する気がないのは見え見えです。サン・マイクロシステムズにとって、ベンダが商用製品で使うJavaVMををOSSベースにするのが困るわけです。
そこでApacheは抗議活動を展開。JCPでのJSR認証、つまりJavaの新しい仕様策定にすべて反対するんですね。
これ、どうみてもサン・マイクロシステムズとそれ以外のベンダがけんかをしている状態です。
Androidが登場
こういう時代の中でAndroidが出てきます。
Androidは2005年ごろからアイデアがあったと言われています。これはGoogleとOracleの裁判の過程で資料が公開されていて、そこから拾っています。
Googleはこの時点ではAndroidにMozillaライセンスを使おうと考えていたそうです。これはGPLに近いライセンスで、当初はJ2ME JavaVMのOSS実装という位置づけとして考えていたようです。
つまりApache HarmonyがJava SEのOSS実装だとしたら、AndroidがJ2MEのOSS実装としてなんとかならないかとGoogleは考えていたと。みんな考えることは一緒でした。
この頃、Androidを作ったアンディ・ルービンはサン・マイクロシステムズへの批判文書をGoogle社内で書いていて、JavaをOSS化したといっても独自実装を含むならば認定を受けるためにロイヤリティを払わないといけないと。つまりJavaをOSS化したというのは、囲い込むためだったのではないかと批判していました。
とはいえGoogleも当初は認定をとらなくてはいけないと考えてました。しかしAndroidはApache Harmonyをベースに開発していたので、認定の話は進まないわけです。
そこで仕方なく独自のJavaVMであるDalvikを作り、そこにApahe Harmonyのクラスライブラリから必要な部分をもってきて、2008年にはApache License 2.0でOSS化しました。
これをサン・マイクロシステムズは「Javaの分断を招く」と激しく非難しています。
結果として分断は生まれ、OracleがGoogleを提訴へ
その後、Androidが大きく普及していくのはみなさんご存じのとおりです。
ハードウェアメーカーや通信キャリアからすると、無料かつ好きなだけ改変できるOSがAndroidでした。しかもサン・マイクロシステムズに認定料を払わなくていいというメリットもありました
Googleにとっては、ソフトウェアの対価を求める気は最初からなく、スマートフォンに何億人ものユーザーがついて、それを手に入れるのならAndroidを作るのは安いくらいだと考えていました。
そしてAndroidが普及し、結果としてJavaの分断が生まれました。
その後、サン・マイクロシステムズのOSS戦略も成功せず、結局ハードウェアビジネスしかできずに苦労した結果、Oracleに買収されてしまったというのが歴史的な流れです。
その後、AndroidをめぐってOracleがGoogleを提訴。
2010年にはIBMがApache HarmonyからOpenJDKに転び、Apache Harmonyは活動を停止するのですが、コミュニティからは大きな異論もなくOpenJDKに一本化されていきます。
Javaの分断は避けられなかったか
まとめます。歴史的経緯では、Javaはベンダによる標準化と各社による実装というエコシステムを作ったのは素晴らしかったのですが、その後にOSSによる実装の共有と各社の追加実装という世界が始まりました。
しかしサン・マイクロシステムズはその流れに乗れず、AndroidはOSS化で同じことを考えた結果、奇跡的に成功したと。
ここからは個人的な見解です。
GoogleがJavaを分断したという見方は正しいと思います。ただ、サンがそもそもOSSを戦略的に利用したビジネスをうまくできなかったことも問題だと思っています。
サンがGPLにこだわったのは、認定による上納金を確保するためだったわけで、そこにこだわったために分断してしまったという見方もできなくはないのですが、これはサンが悪かったというより、急激にサーバや携帯電話などが広がるなかで、OSSを戦略的に利用することはそもそも困難だったともいえます。
一方で、JavaをOSS化していなくても分断は避けられなかったとも思いますし、Apache License 2.0でOSS化していたらサン自体がもっとはやくつぶれていたかもしれませんから、サンとしては苦渋の決断でGPLにしたのだと思います。
なぜOracleがGoogleを訴えたのかというと、JavaMEで得られていたはずのライセンス費がAndroidのせいで失われたという論理なのかなと。だからといってGoogleを訴えるのはどうかと思います。
OracleはOpenSolarisやHudosonなど、いろいろやらかしていて、Oracleはなんなんだ、という議論もあったわけです。
最後はIBMがすげーなと。Apache Harmonyを始めたのも終わらせたのもIBMなのに、IBMの名前はほとんど出てこなくて暗躍している状態。とはいえOSSを戦略的にやっていてすごいなと思います。
こうしていままでいろいろあったんですよ、ということを知りつつ、次の講演を見ていただければと思います。
あわせて読みたい
Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その3)。JJUGナイトセミナー
≪前の記事
Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー