●すべては'95年の12月8日(米国12月7日)に始まった
'95年の12月8日、パシフィコ横浜のメインホールは熱気につつまれていた。ここを会場としたJava開発者向けセミナー「Java Day Winter '95」の冒頭で、Sun Microsystemsから「素晴らしいニュースがある、数時間前にMicrosoftがJavaをサポートすると発表した」とアナウンスされたのだ。その瞬間の会場のどよめきは、Javaコミュニティにとっていかにその衝撃が大きかったかを物語っていた。
なぜ、MicrosoftのJavaサポートがそれほど劇的だったのか。それは、言うまでもなく、JavaがMicrosoftの市場支配を崩壊させると見られていたからだ。OSやプロセッサなどプラットフォームに縛られないJavaによって、Windowsプラットフォームに開発者とユーザーを囲い込んでいるMicrosoftの戦略が破綻する。このシナリオは、'95年の秋にもっともホットな話題となっていた。そして、MicrosoftはWindowsプラットフォームを守るために、Javaは何としても排除すると見られていた。
しかし、Microsoftは急転直下、Javaサポートを宣言した。これは、Javaが革新的なプラットフォームとして人気を掴んでしまったため、Microsoftも無視することができなくなったためだと、この時は受け止められた。つまり、Javaの明確な勝利の証拠として歓迎されたのだ。「Microsoftも、乗り遅れる前にJava列車の最後尾に乗れてよかったね」というわけだ。
しかし、それがJavaの覇権を巡っての激しい戦いの始まりになった。そして、あれから1年10ヶ月しかたたないうちに、Sun MicrosystemsはMicrosoftをJavaに対する契約違反で提訴することになった。
●Javaの理念を揺るがすIE 4.0
Sunが今回問題にしているのは、Microsoftが配布を始めたInternet Explorer 4.0と、Microsoft SDK for Java2.0が、SunとMicrosoftの交わしたJava実装に関する契約の義務に違反しているという点だ。特に問題としているのは、Sunの定めた「JNI(Java Native Method Interface)」(Javaプログラムがプラットフォームのネイティブな機能にアクセスするためのインターフェイス)と「Java RMI(Remote Method Invocation)」(Javaコンポーネント同士が分散環境で通信するインターフェイス)の2つのAPIセットを採用していない点。そして、ユーザーインターフェイス回りのクラスライブラリである「JFC(Java Foundation Classes)」を採用せず、Microsoft独自のクラスライブラリ「AFC(Application Foundation Classes)」だけを採用したことなどだ。
そのため、Sunのリリースによれば、Microsoftのツールで開発したJavaアプリケーションは、Windows以外のOSやIE 4.0以外のWebブラウザで走らない可能性があるという。つまり、ユーザーがJavaに期待している「Write Once Run Anywhere(Javaで書いたプログラムはどのプラットフォームでも走る)」やJavaのセキュリティモデルといった特性が、守られなくなってしまうというわけだ。ことは、Javaの本質に関わるだけに重大で、Sunとしては、どうしてもMicrosoftによるJava分断化の動きは阻止しないとならないと、訴訟に踏み切ったわけだろう。
●SunとMicrosoftがJavaワールドでレースを展開
じつは、ここに至るまでの数ヶ月で、緊張はかなり高まっていた。もっとも、MicrosoftがJavaのライセンスを受けた当初は、事態はまだそれなりに平穏に見えた。Microsoftは、打って変わってJavaに注力、Java開発ツールの「Visual J++」をともかくスピーディにリリースし、高速なJavaバーチャルマシン(VM)を作りと、Java戦略を進めた。実際、Visual J++はとりあえず使っているというユーザーも含めればかなりのシェアを占めるようになったし、MicrosoftのJavaVMを載せたInternet ExplorerもNetscapeのシェアにかなり食い込んだ。MicrosoftはJavaを渋々サポートしただけで、打つ手はすべて後手後手に回るだろうという、当初の予想は大きく外れることになった。この段階でのMicrosoftの戦略目標、Javaとインターネット/イントラネットの世界での強力な位置を確保することだったようだ。
一方、その間にSunはJavaのプラットフォームの整備と拡張を進めていた。昨年のJava開発者向けカンファレンス「JavaOne」ではJavaのAPIのロードマップやJavaOS、Javaのコンポーネントモデル「JavaBeans」などを発表、今年4月のJavaOneでは、ユーザーインターフェイスのライブラリJFCなどを発表した。このほかSunは、Javaコンポー ネントで分散オブジェクトを実現するJava RMIも開発した。
JFCは、JavaアプリケーションのLOOK & FEELを統一して、本格的なアプリを容易に構築できるするもの。いわば、OSのGUIレイヤーそのものだと言ってもいい。ラフに言ってしまうと、これに、JavaBeansとJava RMIが揃うと、どのプラットフォームの上でも同じ操作性でJavaアプリが使えて、それが再利用可能なJavaコンポーネントで構成され、サーバー側のオブジェクトも呼び出せるようになる。つまり、Javaで完結した世界を作ろうという、当初の目標を達成する環境がいよいよ整うわけだ。このように、Javaも第2ステップに入り始めた。
だが、そうしたJavaの整備が進むに連れて、MicrosoftのJava戦略も、異なる方向を目指すことが明確になり始めた。その戦略は、Javaを開発言語のひとつとしてWindows環境に縛り付けることといっていいのではないだろうか。96年中もそうした兆候は見えたが、97年に入ってからは、その方向性がどんどん明確化してきたように見える。
まず、JFCに先駆けて、MicrosoftのクラスライブラリAFCを発表した。これは、Javaの世界での主導権を、Sunから取ろうという動きとして業界では受け止められた。さらに、Win32 APIをJavaプログラムからダイレクトにアクセスできるようにした機能拡張「J/Direct」を6月に発表した。J/Directを活用するJavaプログラムは、Windows環境に縛られるわけで、完全にJavaのクロスプラットフォーム路線とは対立したカタチになった。
こうして、Javaの主導権を握り、Windows環境に依存する方向にJavaを導こうというMicrosoftは、クロスプラットフォームを実現しようとする「100% Pure Java」キャンペーンを推進するSunと対立が深まっていった。Microsoftの強味は、Javaがまだ真に力を発揮できる土台が整っていないことだ。Javaがクロスプラットフォームといっても、まだ各プラットフォームのJavaVMの互換性が完全ではなく、パフォーマンスにも疑問が指摘されていた。そこで、Sunではこうした問題を解決するため、IBMやNetscapeとJavaのパフォーマンス向上とインプリメンテーションの統一を行う「Java Porting and Tuning Center」の設立を発表した。このようにSunはJava環境の整備をMicrosoftとの急展開のレースの中で進めながら、IE 4.0をどう迎え撃つかを検討していたというわけだ。
●Javaをパラノイア的に警戒するMicrosoft
こうした流れを振り返ると、Microsoftという企業が、Javaに対してかなりの警戒心を持っているのがわかる。Javaをサポートはするが、ひさしを貸して母屋を取られるようなマネはすまいと、手を打っているように見える。たとえば、米Microsoft社が先週開催した開発者向けカンファレンスPDC(Professional Developers Conference)では、Microsoftのグループ副社長のポール・マリッツ氏がJavaサポートについて明確に線引きしている。それによると、Javaには3つの側面があるという。ひとつは開発言語としてのJavaで、これはサポートする。また、コンポーネント指向のソフトウェアを作るベースとしてのJavaはCOM+に取り込む。しかし、JFCなどはOSの上にOSを作るようなものでオーバーヘッドが大きく、認めることはできないという姿勢を示した。
このようなMicrosoft幹部のスピーチや製品から、同社のJava戦略を総括すると、おそらくつぎのようになるのではないだろうか。Javaは自社のプラットフォームにとって潜在的に危険だ。しかし、Javaを無視していると、自分と違うところで大きな流れができて、一気にWindowsが押し流されてしまう危険がある。少なくとも、そういう期待が高まると、開発者がどんどんJavaへと流れてしまう可能性がある。それを防ぐには、あえてJavaの流れに飛び込んで、そこに力を注ぎ地歩を築いてしまうことだ。そのあとで、Javaの流れをじょじょに変えて、Windows環境の開発言語のひとつとして取り込む流れに導けばいい。 もっとも、Sunにしても当然その危険には気づいていたはずだ。選択枝としては、Microsoftを排除しておいて、Netscapeなどの手によってJavaをWindowsプラットフォームにもたらし、その上で乗っ取るという方法を取ることもできたはずだ。しかし、そうはしなかったのは、オープンスタンダードというJavaの理念だけでなく、Windows環境にJavaを普及させるには、Microsoftも引き入れた方が手っ取り早いという思惑があったのではないだろうか。そして、Javaの勢いと業界の支持があれば、十分Microsoftの動きも押さえ込めると踏んだのではないだろうか。
●業界をゆるがす裁判の行方は?
それでは、その思惑がうまく行かなかったので、Sunは怒ってMicrosoftをJavaコミュニティから追い出そうと提訴したのか? いや、Sunはそんな短絡的な思考をする企業ではない。実際、Sunはリリースのなかで、Microsoftを告訴したのは、Javaのライセンスを取り消すことが目的ではなく、Microsoftに完全にフルコンパチなインプリメンテーションを行うという契約上の義務を守らせるためだと言っている。つまり、訴訟はあくまでMicrosoftの譲歩を引き出すための道具であり、Microsoftを追い出すことが目的ではない。もし合意ができない場合は、Javaのロゴを使えなくし、今後のJava技術をMicrosoftに提供しないという脅しをかけて、妥協点を見いだそうとしているようだ。
米国ビジネス界では、結構トップが派手なパフォーマンスを行い、相手を非難し合うので、誤解されることが多いが、米国企業のエグゼクティブというのは、極度にリアリスティックでタフネゴシエーターだ。感情ではなく、損得だけで動くように見える。おそらく、相手を攻撃するアジテーションの水面下では、現実的な交渉が続けられている。このまま、激突が続くということはないだろう。
では、この交渉はどこに行き着くのか。Sunのリリースを読むと、Microsoftが強硬姿勢でいることがうかがえるが、Microsoftにしても米国でこれだけ勢いがついてしまったJavaから離れることはできない。本当にSunと対立して、Javaのロゴなどを失ってしまうのは危険過ぎるだろう。Javaからはつかず離れずでいて、Javaのクロスプラットフォームを部分的には認めつつ、それでもJavaがWindowsに危険を及ぼさないように牙を抜こうとしたいはずだ。そうなると、どこかでSunとの妥協点を探ることになる可能性が高い。駆け引きになるわけだが、たとえば、一部のAPIはサポートするとか、なんらかの譲歩はするのではないだろうか。
しかし、そうなったとしても、それはまだJavaをめぐる駆け引きの序曲に過ぎないだろう。おそらく、今後もSunとMicrosoftの、Java綱引きは続く。両者の利害はまったく一致しないのだから。
('97/10/9)
[Reported by 後藤 弘茂]