Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー
2016年5月、GoogleとOracleがJava APIを巡って争っていた裁判に最初の陪審員による評決がくだりました。結果は、GoogleがJava APIをAndroidに流用したことはフェアユースにあたる、というものです。
この評決にはどのような背景があり、IT業界にどんな影響を与えるものなのか。このことをテーマに2016年7月に行われた日本Javaユーザーグループ主催の「JJUGセミナー」の内容を紹介しましょう。
記事は全部で4本(その1、その2、その3、その4)。いまお読みの記事は「その1」です。
日本マイクロソフトで開催したJJUGナイトセミナー
日本Javaユーザーグループ会長 鈴木雄介氏。
今日の前半では私から、JavaとAndroidとOSS(Open Source Software)の話をしたいと思います。
Javaがどういう考え方で仕様策定などが行われ、やがてオープンソースなどが戦略的に活用されるようになった流れや、JavaとOSSとの関係、そしてAndroidとの関係といったものを説明したいと思います。そして後半は栗原さんから、今回の評決の背景や意味などを解説していただきます。
JavaとOSSとAndroid
登場当初のJavaが魅力的だったのは、Javaの標準仕様を策定し、実装は各社ごとにそれぞれ行うというように、仕様と実装が分かれていたことです。
標準仕様をオープンに策定するための団体Java Commpnity Process(JCP)は1998年に設立され、JCPを通じて各社が意見を言ってJava標準APIを作ります。
当時のJCPはサン・マイクロシステムズを中心にベンダーが集まっていました。企業しかJCPに入れず、ベンダのための標準化団体だったのです。2011年にはJava Users Group(JUG)を介して個人も参加できるようになりました。
この標準のうえで、各社がそれぞれJavaを実装した製品を販売できる、ということでした。
こうすることでベンダ独自のロックインが回避できるという考え方が支持されていました。当時はベンダ独自の実装にロックインされることに極端な拒否感があった時代で、そのベンダ独自実装でロックインする代表的なベンダがマイクロソフトだったのです。
それが今日は、この場所(日本マイクロソフトのセミナールーム)でこの話をしているというのは感慨深いものがあります。
とはいえJavaのベンダも独自実装をしないと差別化にならないので、WebLogicやWebSphereなどそれぞれ独自実装の機能がありましたが、それを使わなければ標準仕様に沿ったものでした。
ただし、Javaの標準仕様に従っていると認定されるかどうかはサン・マイクロシステムズによるテスト(Test Compativility Kit)が用意されていて、そのテストをパスするとJavaのコーヒーマークの認定ロゴを表示することができました。この認定ロゴを取得するにはお金がかかります。
これはよくできたエコシステムでしたと。
当時、Javaは肥大化していく時代でした。J2SE 1.2では1500くらいのクラスでしたが、5.0のころにはそれが2倍以上になっていました。
当時のJavaは部分的な実装を認めていなかったため、実装されたJavaVMも大きくなっていました。各社がコストをかけて大きなJavaVMを作り、しかもサン・マイクロシステムズにお金を払って認定ロゴをもらうのは、本当にペイするものなのか、各社の課題になっていました。
一方その頃、オープンソースソフトウェア(OSS)が大きな流れを生み出します。
高まるオープンソースの存在感
OSS普及の大きなきっかけとなったのは、Apache Software Foundationが1999年に設立されたことです。もともとApache HTTP Serverの開発支援のために設立されましたが、そのあといろんなOSSを受け入れていくことになります。
2002年にはStrutsが、2004年にはTomcatが生まれて急成長する中で、オープンソースを使って商用コードを書くことが世の中で急激に進んでいく時代になっていきます。
それを支えたのがApache License 2.0でした。このライセンスのコードは商用製品やクローズド製品にも利用可能で、コードを書き換えたとしてもそれを公開しなくていいという考え方でした。これが魅力となってOSSが商用製品にもばんばん使われていきます。
そうしたOSSのエコシステムの中で、IBMはWebSphereのServletコンテナにTomcatの一部を取り込み、HTTPサーバはApacheベースにするなど、Apache Software Foundationの成果物をとてもうまく利用していきます。
当時の雰囲気からすると、Tomcatは最先端の実装を試していて、それをコミュニティで揉んで、うまくいったらWebSphereに取り込んでいったのではないかなあ、と見える節がありました。
こうしたことはIBMにとってLinuxの成功体験があったからだと思います。IBM自身はLinuxのディストリビューションは出していませんが、24時間サポートなどLinuxの周辺ビジネスはしていました。
もう1つIBMが大成功させたのがEclipseです。IBMがEclipseをOSS化し、2004年にはEclipse Foundationを結成しました。
これは戦略的な話で、OSSを用いて「実質的な標準化」を行うということです。APIの標準ではなく、実装そのものをオープンソースとして共有することでスピード感をもって進めていきましょう、ということです。
これが大成功して、2004年にはTomcatがJ2EEのReference Implementation(RI:参照実装)になります。TomcatがJavaの標準的なものとして認められ、各社がそれぞれ実装するのではなくTomcatをみんなで実装すればRIになるので、そのうえに必要なら機能を追加していけばいいと。
こうしてOSSベースの開発がすごく進んで、コミュニティ発のイノベーションがどんどん起きていきました。Java EEの世界では、OSSをベースに実装をみんなで共有しながらどんどんやっていくことが盛り上がっていくわけです。
ところがJava SEではこうなっていませんでした。
仕様が肥大化していったJava SEでもTomcatのようにRIを作ってみんなで実装を共有できなのかと、当然に考えられるわけです。OSSのJavaVMの実装を各社で共有し、そこに独自に追加機能や改変などをしていけばいいよねと。
≫その2に続く:Javaのオープンソース化をめぐってベンダが揉め始めるなか、GoogleからAndroidが登場します。
あわせて読みたい
Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その2)。JJUGナイトセミナー
≪前の記事
Dockerが「InfraKit」をオープンソースで公開。Docker用のクラウド環境を自動構築、自動修復