30億のデバイスで走るJavaとは、Oracle版のJavaをインストールする時に表示される誇大広告キャッチフレーズである。
この記事では、Javaに関する訴訟についても扱う。
30億のデバイスで表示できる概要
原文は"3 Billion Devices Run Java." 直訳すると「30億のデバイスがJavaを実行する。」
2005年にはJavaがインストールされたデバイスは30億を超えていたようであるが、インストール時に表示されるようになったのはOracleがJavaを開発企業のSunごと買収した2010年ごろからのようである[要出典]。2010年における世界の人口は約70億人と言われているから、30億のデバイスというと世界人口の半分近い数と言える[1][2]。
しかし、実際には購入時にプレインストールされているだけでほとんど使用されていないケースも数えられているので、「走る(run)」というのは誇大広告で「住みついている」くらいにしておくべきかもしれない。
30億のデバイスに含まれない環境
Javaといえば、"Write once, run anywhere"というマルチプラットフォームが売りだったが、Javaがサポートされない環境も増えてきている。
リッチ・クライアント(Java Applet)
2000年よりも前までは「リッチ・クライアント」の分野でなんらかの機能をWebページに付加することが「アプレット(Java Applet)」が流行りかけていた。
し かし、マイクロソフトが勝手に改造した件の訴訟(後述)のゴタゴタや、ネットスケープナビゲータでJavaアプレットを表示しようとすると数分間一切操作を受け付けない状態(Java仮想マシンの起動に時間がかかった)になるため露骨に敬遠されるようになった。そうこうしているうちに、こちらの分野は Flash、さらに近年では所謂Ajax(Javascript)やHTML5に奪われてしまった[3]。
ChromeはJavaプラグイン(正確にはプラグインに必要なNPAPI)のサポートをやめる方針であり、実際に2015年2月のバージョン42からNPAPIをデフォルトで無効にしている。また、2015年7月に登場したWindows10のデフォルトブラウザMiccosoft EdgeでもJavaプラグインはサポートされておらず[4]、今後もサポートしない方針であることが表明されている。さらには2015年10月8日、頼みの綱であったFirefoxでさえ2016年末までにNPAPIを削除することを発表した。
そして2016年1月27日、ついにJavaの権利を有するOracleまでもがJava次期バージョンのJava9ではNPAPIをサポートしないことを発表した(もっとも2017年9月のリリース時には、Firefox側でも上記の通りJavaがサポートされなくなっていた)。もはやこの分野ではオワコンであることが確定して死を待つのみになっている。
スマートフォン
Android
近年ではスマートフォンが主力となったことでAndroidアプリの開発用に使われている。言語としての互換性の上ではAndroid環境は一部を除きJava Standard Editionに準拠しているため、「Java Micro Edition」で頻発した「あのライブラリがない」といったことは少ない。
だが、Android に使われている仮想マシン(DalvikVM)はJavaVMと異なるバイトコードで動くため正式には「Java」とはいえない。この点についてはOracleとGoogleで訴訟になっている(後述)。2016年のAndroid 7.0以降はOpenJDKベースになっているが、OracleのJava互換性テストを受けていないので、やはり正式には「Java」とはいえない状況は続いている。
iOS
iPhoneは、Appleの方針としてiOS上に仮想マシンや実行環境をインストールできないようにしている。従ってJavaで開発するのは非現実的な状況で、Androidと両対応したい場合にはJavaは選びづらく、結局C言語とかに流れて行ったりする。
Windows mobile
Windows10 mobileがリリースされ、Universal Windows Platformが提唱され他のスマホOS用のソースコードが流用できると謳われたが、そこで採用されたJavaもAndroid用Javaである。だが、2016年2月25日Microsoftより開発中止が発表された。
32ビットマシン
Oracle版JavaとOpenJDKでは、Java 9から32ビット版がサポート対象外になった。32ビット版のバイナリを提供するケースは存在する。
30億のデバイスをめぐるJavaの訴訟
Sun vs Microsoft
1997年、MicrosoftはSunからライセンスを受けてJava仮想マシンを開発してWindowsに標準搭載した。しかしMicrosoftの実装はSunの要求した仕様を満たしていなかった上に、Windows上でしか動かない独自の拡張が加えられていた。クロスプラットフォーム(OSに依存しない)アプリケーションが普及するとWindowsの優位性が失われるのでMicrosoftがこういった行為に走るのは必然的な流れとも言える。このため同年10月、SunがMicrosoftを提訴。1998年3月に連邦地裁よりMicrosoftへのJavaロゴ使用停止の仮処分命令が下るなど、Sunは訴訟には勝利するが、このことが元となってWindowsにデフォルトでJava仮想マシンが搭載されることはなくなり、ブラウザ上のリッチクライアント競争においてアプレット方式が大きく出遅れるきっかけとなってしまった。
一方、Microsoftの方は2000年以降、自社の.Net Framework技術にシフトしてC#などを発表するのであるが、それはまた別の話。
最終的に両者は2004年4月にMicrosoftがSunに和解金を支払う形で和解に至っている。
Oracle vs Google
Googleはスマートフォン用OSのAndroid向けにDalvik Virtual Machineを開発したが、このDalivik VMがJavaの技術を使いながらもJavaとしての要件を満たしていないとして、2010年8月に訴えを起こされた。訴えたのは、2010年1月にSunを買収してJavaの権利を引き継いだばかりのOracleである。
ハードウェアの制約が厳しいスマートフォンで、Javaの認定を受けるだけのために余計な機能をサポートするわけにはいかなかったかららしいが、実際のところはGoogleがJavaのライセンス料を支払いたくなかっただけなのではないかとみる向きもある。
第一ラウンド: APIに著作権はあるか
争点は色々あったようだが、最終的にはJavaのAPI自体に著作権が認められるかというところに絞られた。もしこれが認められると、(有名なソフトのオープンソースクローンなど)API互換で独自実装することが大きく制約される可能性があり、この件では無関係なはずのMicrosoftなど、ソフトウェア業界全体からも関心を集めた。
一審はGoogleに有利な判決、二審はOracleに有利な判決が出たが、2015年6月にアメリカの最高裁はOracle側の主張を支持する判断をした。
第二ラウンド: API利用はフェア・ユースか
2016年3月30日OracleがGoogleを再提訴して約1兆円相当の賠償請求を開始した。2016年5月26日連邦地方裁判所は、上述のJavaのAPIについて著作権を認める判決を踏まえた上で、GoogleによるAPI利用は「フェア・ユース(著作権者の許諾がいらない公正な利用)」にあたり、著作権料の支払いは必要ないとの判断を示した。
2017年2月10日Oracleはこの判決を不服として連邦巡回区控訴裁判所に上訴し、2018年3月27日同裁判所はOracleの主張を認め、本件はフェア・ユースではないとの判断を下した。
賠償額についての審理が進む中、Googleは2019年1月24日に最高裁に上訴し、APIが著作物であるという判断の見直しを求めた。上訴は受理され、2020年10月に口頭弁論がスタート。2021年4月5日、最高裁はGoogle勝訴の判決を下し、GoogleによるAPI利用はフェア・ユースにあたると認めた。最高裁はこの判決ではAPIが著作物であるかどうかについて明言していないものの、他のソフトウェア開発が同様の訴訟に巻き込まれる可能性は低くなったとみられる。
これにより10年越しの巨大IT訴訟は、判決が二転三転した末に壮大に何も始まらないという結末を迎えた。
30億のデバイスで参照できる関連項目
実際に30億のデバイスが参照したらニコニコ大百科のサーバーが落ちると思われるが、できるというだけで実際に実施されるわけではないのは本項のキャッチフレーズと同じである。
- Java / Java SE / Java EE
- Java仮想マシン / JVM / 仮想マシン / JDK / GraalVM
- JavaFX
- JVM言語
- デファクトスタンダード / リファレンス実装
- Sun / Oracle / OpenJDK
- 32bit / 64 bit
- Windows / macOS / Linux
- Android / iOS
- Write once, run anywhere
- Write once, debug everywhere
脚注
- *JavaをPCにインストールする時に表示されるので、30億というのがPCの台数に見えてしまうが、よく見ると"PCs"や"Machines"ではなく"Devices"となっており、組み込み機器などの非PCデバイスを数に含めるためにこのような表現をしているのかもしれない。
- *Oracleの発表によると2020年現在、世界で510億のJava仮想マシンが動いているという。PCとスマホ2台持ちでも3つにしかならないのに一人あたり6-7台とかおかしいだろJKとか思ってしまうが、サーバーサイドで用いられるものも数えていると思われる。
- *この分野で の復権を目指してJavaの技術を発展させた、Java PluginやJavaFXといったFlashと競合する技術を発表してはいるが、今のところ新規ユーザの獲得には至っていない。またGoogleは Java言語(ただしライブラリの互換性はほとんどなし)からJavaScriptに変換するGWTを公開しているが、これもあまり普及してるとは言い難い状況である。
- *Microsoftの自社技術であるSilverlightやActiveXさえもサポート対象外としており、Javaが問題というよりも先述のようにリッチクライアント技術はセキュリティホールになることが避けられないという認識に基づいた判断のようである。それでもAdobe Flashは切れなかったようだ。
- 5
- 0pt