Google App EngineのJava対応は「無責任」と、サンのオープンソース責任者が批判
先週、グーグルの開発者向けクラウド「Google App Engine」がJavaのサポートを開始するという大きなニュースがありました。しかし、サン・マイクロシステムズでChief Open Source OfficerをしているSimon Phipps氏は自分のブログ「SunMink」で、Javaの互換性を軽視したグーグルの実装を批判しています。Computerworldが「Sun exec slams Google over App Engine's Java support」で伝えています(日本語記事)。
Phipps氏はグーグルに対してどんな批判をしているのでしょうか? 彼のエントリ「Lump of Links for April 11 [on Simon Phipps, SunMink]」から、その部分を引用してみましょう。
Whether you agree with Sun policing it or not, Java compatibility has served us all very well for over a decade. That includes being sure as a developer that all core classes are present on all platforms. Creating sub-sets of the core classes in the Java platform was forbidden for a really good reason, and it's wanton and irresponsible to casually flaunt the rules.
要するに、「Javaがこれまで互換性を維持してきたのは、コアクラスのサブセットを作るようなことを禁止していたからなのに、グーグルはそれを守らず無責任だ」と彼は言っているのです。
グーグルがApp Engine上で実装したJavaに非互換性があるため、それを非難しているのです。
僕が想像するに、クラウド上で分散処理に対応したJavaVMを従来のJavaVMと完全に互換で作るのは相当に困難な作業で、公開したばかりの現時点で多少の問題が生じるのは仕方のないことではないかと思います。
また、そもそもクラウドのような分散環境のうえにJavaVMを実装することなど想定されていなかったはずなので、実装にあたっては何らかの制限なり変更がでてくるのも避けられないのではないでしょうか。
これを「無責任(irresponsible)」とまでいうのはちょっと言い過ぎのように思います。
グーグルも積極的にテストしてほしいと開発者に呼びかけているわけですし。
サン・マイクロシテムズも、Google App Engineとはかなりアプローチは異なりますが「Project Caroline」でJavaをクラウドに乗せようとしています。マイクロソフトでさえ、Windows AzureにJavaを乗せようと検討していると言われています。
この流れの中で、Javaがクラウド上にいろんな形で実装されるのは避けられないはずです。
だとすれば、クラウド上のJavaとはどうあるべきなのか、あるいは非互換が発生している原因は何なのか? よりよいクラウド対応の言語として発展させる方向で両者が協力して正式なプロセスで標準化する、という動きになってくれると、Javaデベロッパーにとってはずっと建設的になるのではないでしょうか。