後藤弘茂のWeekly海外ニュース


資料編:Microsoft担当者、Java裁判を語る


フィッツジェラルド氏
 米Sun Microsystems社から提訴を受けたJava裁判について、米Microsoft社のInternet Client & Colaboration DivisionのGroup Program ManagerとしてJavaのインプリメンテーションを担当するチャールズ・フィツジェラルド氏に、同社の立場をうかがった(11月)。ここでは、その概要をまとめてみた。

 前回のこのコラム【12/19】「強硬路線に変わったMicrosoftの対Java戦略」の資料として掲載しているので、そちらも併せてお読みいただきたい。(編集部)


Sunとの争点について

●JFCとJNIについて

 JFC(Java Foundation Classes)はまだ提供されていない。将来の話だ。
 JNI(Java Native Method Interface:Javaプログラムがプラットフォームのネイティブな機能にアクセスするためのインターフェイス)は、技術的ベネフィットを顧客にもたらすのか、(採用する)法的義務があるのか。両方とも答えはノーだ。Javaコードがプラットフォーム固有のコードをコールするAPIがJNIだが、当社は同様の機能を提供するAPI「RNI」をすでに「Internet Explorer 3」で'96年8月に実装している。それに対して、JNIは'97年2月だ。我々の技術のほうが先で、しかも高速だ。

●Java RMIについて

 Java RMI(Remote Method Invocation: Javaコンポーネント同士が分散環境で通信するインターフェイス)も優れた技術ではない。パフォーマンス、スケーラビリティ、セキュリティなどで問題がある。実は、Sun自身もRMIからIIOP(Internet Inter-ORB Protocol)にリプレースするつもりでいる。あまりうまく機能しないうえに将来性のないものをサポートしても意味がないし、法的にも義務がない。

●J/Directについて

 J/Directの方が、サンドボックス内でのJavaよりセキュリティが高い。J/Directではコードが完全に信頼できなければならないし、J/Directコールをするたびにすべてスタックするのでセキュリティは十分だ。

●Sunとの契約について

 当社とSun Microsystemsが交わした契約には、Microsoftが自由にJavaから派生する物を作ったり変更できると明確に書かれている。これはとても重要だ。しかし、SunはMicrosoftに広範な権利を与える合意をしたことを後悔しているようだ。そこで、今は契約合意の解釈を別途に解釈して(提訴して)いる。

●和解はあり得ないのか

 難しい質問だが、和解の線はいまのところ見えていない。この先に和解があるかどうかはまだわからないが、マクネリ会長(Sun Microsystems会長兼CEO)のMicrosoftについての発言を聞くと我々に固定観念を持っているようだ。和解がなければ、判決までには18~22ヶ月くらいかかるだろう。しかし顧客や製品に関係はない。

●訴訟で負けたら市場でも負けることにならないか。負ければJavaのトレードマークなどが使えなくなるが。

 市場でも訴訟でも勝つから大丈夫だ。

(Javaの)トレードマークロゴには気にしていない。カスタマーも開発者も賢明(smart)なので彼らが判断するだろう。

●Sunが採用する義務を主張する技術がよくないというなら、なぜ彼らはその技術にこだわるのか。

 これについては2レベルの見方がある。JNIやRMIなどのスペシフィックな点について、SunがMicrosoftに対してこれらの技術をサポートしていないとして提訴するのは根拠がない。たとえば、「Netscape Navigator」もJNIをサポートしていないが訴えられていない。

 次に一歩下がって大きく考えてみよう。Sunはバーティカルインテグレーションで成功した企業だった。ところが、いまやSunの市場はPCに浸食されつつあり、ワークステーションでもサーバでも市場に占める位置が小さくなりつつある。彼らが持っている資産は、もうJavaしかない。ところが、彼らはJavaの開発でカネを得るわけではない。ハードウェア販売で儲けるわけだが、PCのほうがSunのハードウェアより50倍も安い。つまり、JavaはSunに利益をもたらさない。Sunは市場で勝てないので、法廷の方で勝ちたいのだ。

●これはJavaをWindowsに縛り付ける戦略ではないのか。

 違う。我々は、両方のオプションを提供したいと思っている。(Windowsに縛られない)ベーシックJavaで顧客がシステムを構築してもいいが、プラットフォームのパフォーマンスや機能性も最大に活かせるようにもしたい。Windowsが成功しているのはベストバリューで最も機能性が高いからだ。カスタマーはそれを最大限に活用したいと思っている。自分の持っていない他のコンピュータ上でアプリが動くからと言って、パフォーマンスや機能性、インテグレーションなどで劣るようにしたいだろうか。それはカスタマーにとってよい提案ではない。クロスプラットフォームはデベロッパにとっては利点があるが、カスタマには利点がない。


Javaに対する見解

●Javaについて、Microsoftはどう見ているのか。

 何がJavaか、それが重要なクエスチョンだ。なぜならJavaという名前には多くの異なるテクノロジが含まれているからだ。中核になるのはプログラミング言語だが、JavaはまたクラスライブラリのセットやミドルウェアやOSでもある。後者の役割についてはMicrosoftは非常に懐疑的だ。

 Javaの大きな利点は2つだ。(1)デベロッパの生産性を高められること。(2)一度書けばどこでも走ること。我々は、(1)のデベロッパの生産性を高めることには賛成だ。Javaを使えば開発者が速く、良いコードを書けるのは確かだと思う。C++の欠点を取り除いている。しかし、(2)のクロスプラットフォームという点については懐疑的だ。クロスプラットフォームについて、Javaは汚い秘密(dirty secret)を持っている。実際には達成できていないのだ。多くのアナリストが、Javaが主張しているようなクロスプラットフォームが実現されていないといっている。米国である雑誌が行なった分析がなかなか興味深い。彼らは実際に3のJavaアプリを21のJavaVM(バーチャルマシン)上でテストしたが、最善のアプリでも10のVMでしか走らなかった。

 クロスプラットフォームは、目標としては素晴らしいと思うが、到達が難しい。すべてのコンピュータが同じアプリケーションを同じように走らせるというのは非現実的な考えだ。なぜなら、それは技術的に非常に難しく、現在のJavaは達成できていない。また、Javaの実行性能、インテグレーション、機能性を犠牲にするからだ。クロスプラットフォームを実現しようとすると最大公約数的なアプローチになり、機能性や性能、インテグレーションとはトレードオフになってしまうだろう。

●クロスプラットフォームについてJavaが抱える問題は過渡的なもので将来は達成されるとは見ないのか。

 Microsoftはコンバチビリティの問題には経験がある。その我々から見ると、今後は改善されるよりむしろ悪くなるのではないかと思う。Javaがクロスプラットフォームという目標を実現するためには、問題点がいくつかある。1つは、Javaには(ライセンスを受けた各社が実装した)117のコードベースがあり、それぞれの開発者がそれぞれのバグを入れてしまっていることだ。そのため、完全な互換性を取るためには、それぞれのJavaプラットフォーム上でビット対ビット、バグ対バグの修正をしなければならない。しかも、今のままならまだしも、Windows NT 5.0とかWindows 98といった新たなプラットフォームが出てくるわけで、クロスプラットフォーム性を保てるようにJavaが進化し続けるのは難しい。

 また、経済的問題もある。ひとつのプラットフォームでJavaが動くようにするための投資は、他のプラットフォームで動くようにするのと同じくらいの額が必要だ。だが、その見返りは各プラットフォームで違う。たとえばWindowsやMacintoshと、他のプラットフォームで大きなギャップがある。

 それから、クロスプラットフォームであればWindows 3.1でも走るべきなのに、想定条件がWindows 3.1に対応していないことも問題だ。マルチスレッドとかロングファイルネーム、32ビットプラットフォームといったように、Javaは基本的想定条件を限ってしまっている。JDK 1.1と1.0の間に互換性がないなど、Java同士もバージョンによって互換性がない。今後さらにバージョンが上がれば、この問題は悪化する。

 さらに、JavaにはPersonal Java、Embedded Java、Smart Card Javaなどのサブセット、スーパーセットがある。開発者はどれをターゲットにしたらいいかわからない。最後に、これまでにもJava以外にもクロスプラットフォームのミドルウェア、APIなどの開発が試みられたがいずれも成功しなかった。たとえばAppleとIBMのTaligent(タリジェント)も失敗した。

 クロスプラットフォームは目標としては良いが、Javaはソリューションでない。弊社はそれより良いいソリューションがあると考える。それは、HTMLとスクリプティング、つまりDHTML(Dynamic HTML)だ。そもそもHTML自体がJavaよりハイレベルな抽象化をしているからより堅牢だ。またWindows 3.1や古いバージョンのMacintosh OSでも機能する。Javaはプログラム言語としては優れているが、ミドルウェアAPIとしてはJava以外に良い答えがある。

●では、なぜJavaをサポートするのか。

 これはよく聞かれる質問だ。答えは、1つ目はデマンドがあり、我が社が顧客中心だから。2つ目は我が社が市場主導だから。3つ目は、プログラム言語に対して我が社が中立だからだ。すべてのニーズを満たす完璧なプログラム言語がない以上、いろいろな言語をサポートしようと考えている。

 MicrosoftがJavaに投資をするときは他のベンダと哲学が違う。我々は、実際に実現できる技術にだけ投資している。我々は、18ヶ月前にライセンスを受けてから3つの戦略に取り組んできた。(1)WindowsをJavaに最適の場にする(2)よい開発ツールを提供する(3)WindowsアプリケーションをJavaで書きやすいようにする。この3つだ。

 今では、JavaVMでも開発ツールでもMicrosoftのものがいちばん売れている。たとえば1週間あたりのJavaVM出荷台数ではSunより当社のほうが上回っている。「Visual J++」(MicrosoftのJava開発ツール)も50%以上のシェアを取っている。さらに、我々はMicrosoft版のVMやクラスライブラリをいろいろなOS上に走るようにしている。市場にあるJavaの中ではもっとも機能性が高く、高速で互換性の高いものを提供していると信じている。Javaは遅すぎると顧客はよく言うが、ベンチマークを見れば、弊社がいちばん早いJavaを提供しているることがわかる。NavigatorはIE 3より遅い。JDKはそれより少し早いが、IE 4.0はさらに速い。

 また、インテグレーションでは、Java言語の生産性とWindowsのパワーをかみあわせた。J/Directで、Javaが直接Windowsやハードにアクセスできるようにした。J/Directのベネフィットは大きい。また、イノベーションでもリーダーシップをとっている。AFC(Application Foundation Classes)、エンハンスドセキュリティ、バージョニングやローカルストーレジのためのパッケージマネジメントなどを提供している。

 まとめると、Javaは卓越した開発言語で、われわれはそれに対して多大な投資をしている。だが、ミドルウェアOSや宗教には投資していない。我々は強力で実利的なアプローチを信じているのだ。顧客を成功させるために。


●Interviewer's Note

 フィツジェラルド氏の言葉は非常に強いトーンで、自社の主張に自信を持っており、Sunとの妥協の余地はないという印象を受けた。もちろん、和解はありえないと明言したわけではないが、Javaの基本理念であるクロスプラットフォームを完全に否定しており、Sunとの対立姿勢は非常に鮮明だ。もっとも、このインタビュー自体は11月の時点のMicrosoftの主張であり、事態は流動的であることからこの先急変する可能性もないわけではない。

 Microsoftの主張には、Javaにとって耳の痛い部分もある。例えば、JavaVMの互換性などは、Microsoft以外からも何度も指摘されている。見方が分かれるのは、それがJavaが完成するまでの過渡期のものなのか、それともJavaの本質的な問題なのかという点だ。Microsoftとしては、自社のプラットフォームの存在理由を揺るがすJavaのクロスプラットフォームを100%認めることができないという事情もあるのだろうが、将来的にもJavaがクロスプラットフォームを完成できないと見ていることは印象的だった。

□関連記事
後藤弘茂のWeekly海外ニュース
【12/19】強硬路線に変わったMicrosoftの対Java戦略
http://pc.watch.impress.co.jp/docs/article/971219/kaigai01.htm

('97/12/22)


[Text by 後藤貴子]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当 pc-watch-info@impress.co.jp