先日報じられた「AppleとOracle、OpenJDK project for Mac OS Xを発表」というニュースだが、以前に将来Mac OS Xバージョンでの自社のJavaサポート中止を表明しているAppleが、現在のJava技術保持者であるOracleとともに発表した意図はどこにあるのか? これを最新のJavaトレンドを絡めて分析してみたい。
「サポートするリソースを減らしたい」が本音?
分析とは書いてみたものの、Apple側の事情は実にシンプルだ。ここ数年、AppleのMac OS XはJavaサポートに最も熱心なプラットフォームの1つで、JavaをApple自らの手で同OSにポーティングしていたほどだ。これは以前のMicrosoftにもいえたことだが、同社はSun Microsystemsとの裁判を経てJavaをWindowsに独自実装すること(いわゆる「MS Java」)を認められず、以後はSunが提供する「Sun JVM」を通してJavaをサポートする形となった。ある意味でSun Javaは正規品と呼べるものだが、一方でMicrosoftにとってはコードを制御する権利は与えられず、バグや仕様も含めてすべてあるがままに受け入れなければならないという制約もある。この自らの意志が介在できないコードがWindowsの中枢部に存在することを、Microsoftのある社員は以前に「屈辱的なこと」と表現していた。これを現在のAppleとAdobe Flashの関係に当てはめれば、Apple側の思惑の1つは見えてくるだろう。
ビジネス的な側面はとりあえず置いておいて、AppleがFlashを積極的に排除しようとしている理由を考えれば、今回のAppleとOracleの発表は非常に奇妙だ。なぜなら、以前までのAppleは仕様はともかくポーティング作業を通してJavaを自社のプラットフォームへと自ら移植しているわけで、他社のコードをあるがままに受け入れるのとは違う。だがOpenJDK project for Mac OS XはMicrosoftと同じ道を歩むプロジェクトであり、こうした意志の介在できないコード受け入れそのものだからだ。もっとも、Mac OS X自身はオープンソース技術の集合体であり、基幹部分でも多くのオープンソースコードが利用されている。オープンソースコミュニティから提供されるOpenJDKのMac OS Xでの利用は、MicrosoftがSun Javaを受け入れた背景とは少々異なるといえるが。
結論からいえば、Appleがポーティング作業にかかるリソースを減らしたいというのが本音だと考えられる。iPhoneの爆発的ヒットでObjective-CをベースにしたMac OS Xの開発環境が広く利用されるようになり、ここであえてAppleが積極的にJavaをサポートする理由はなくなりつつある。一時期、オープンソース開発者の間ではMacを使うユーザーが爆発的に増加し、LinuxやFreeBSDを使うよりもMac OS X上でソフトウェアの開発や日々の作業を行うことが流行っていたことがある。以前のAppleによるJavaサポート中止表明では「AppleはJavaを排除する」というよりも「Javaに関してAppleを頼らないでくれ」というオープンソース開発者へのメッセージが強いとみられ、OpenJDK移行への布石だったのかもしれない。ただApple標準JavaのMac OS X上でのサポートがJava SE 6にとどまることで、今後クライアント向けJavaプラットフォームとしてのMac OS Xを考えたとき、Javaアプリの拡散プラットフォームとしてどれだけ機能するかは未知数だ。OpenJDKベースの最新JVMが今後のMac OS Xに標準実装されるかは不透明で、これがJava開発者にとってのネックになるかもしれない。
Oracleの動向に注視
Appleの話よりも、むしろ不透明なのはJavaそのものの先行きだ。OracleがSun Microsystemsを買収して以降、その技術ライセンスの権利や知的所有権(IP)はOracleに帰属している。JCP (Java Community Process)を通してJavaの仕様策定や標準化の管理はオープンソースコミュニティに委ねられているが、Javaを使ったビジネスをどう進めていくかはOracle側の判断だ。Oracleは自身の技術基盤にJavaを採用しており、Javaそのものを殺す意図はまったくないと考えられる。だが比較的緩やかだったSunでの運用に比べ、OracleはJavaをいかに利益の源泉とするかを重視しており、先日のOracleによるGoogleへの訴訟にみられるように、ライセンスの範囲を極力拡大していく方向を目指している。
これがはっきりと現れたのが先日のQConでの米OracleのAdam Messinger氏の発言だ。同氏は将来的にJRockit (旧BEA Systemsの技術)とHotSpot (旧Sunの技術)の2つのJVMを統合することを目指しており、さらにアプリケーションサーバのフレームワークであるWebLogic (旧BEA)とGlassFish (旧Sun)のカーネルを共通化し、さらにOpenJDKをベースとしたOracle Javaに無償版と有償版の2種類を用意していくという。これら発言の意図は「極力開発リソースを減らしつつ、さらに利益を得る手段を構築する」ということで、非常にOracleらしいといえばOracleらしい真っ当な判断だといえる。
ただ有償版Oracle Javaの登場など、最近のOracleの動きにオープンソースコミュニティは非常に警戒を強めており、Oracleのビジネス的活動が近い将来にもJavaをはじめとする同社の各種オープンソースプロジェクト(MySQLやOpenOffice.orgなど)の勢いを削ぎ、最終的に殺してしまうのではないか?との疑念を抱いている。これらプロジェクトでの人員離脱が最近になり相次いでいるのも、こうした疑念を背景としたものだ。前述のようにOracleにJavaを殺す意図がないことは明らかだが、一方で一連の活動がJavaの勢いを意図せずして削いでしまう可能性はある。Appleとしては「我関せず」ということで、Javaサポートを丸投げして外部から様子見をすることを決めているだけなのかもしれないが……。