« いじめに思う、自分へのハロー | トップページ | 京都、マンガミュージアムのオープンと、再び建築規制の強化へ »

2006.11.24

Javaのオープンソース化に想う

久々に電脳関連の話題を。
といっても、Intel Core 2 Duo化したMac Book Pro、MacBookのことじゃない。

11/13(日本では11/14)、Sun Microsystems(以下Sun)はJavaをオープンソース化した、と発表した。

Sunのプレスリリースはこちら

また、ITmediaによるWall Street Journal記事の翻訳はこちら(11/13)。

CNET Japanによる記事はこちら(11/13)。

Javaを生み出したSunがこれまで拒んできたオープンソース化は、今年に入ってからトーンが変化していたので、予想はされていた。
ただ、オープンソース化のライセンスをGPLにするとは。
やるな。

***

Sun以外の、たとえばIBMなどは盛んにオープンソース化を要求してきたが、それは自らVMや基本クラスライブラリに手を加えて(自らの目的に応じた)改良をしつつ、開発環境とのより密接な連携を図ることも念頭にあったろう。JCP(Java Community Process)で議論の末に仕様が決まるとしても、参考実装やJavaOneなどを通じてJavaコミュニティに与えるSunの影響は大きい。オープンソース化されれば、エンタープライズ分野で実装を通じて、他社が踏み込んだ行動をとれる。
一方Sunは、Javaの実装が枝分かれしてしまい、互換性にさらなる問題が生じる可能性があることなどに触れて、オープンソース化に応じないできた。(実際、ある席でApple ComputerによるJavaの改良は隠されてしまっており、Javaコミュニティにフィードバックがない、これは大変困ったことだ、という発言もあった。2002〜2003年頃のこと。)

GPLならば、変更部分をGPLに基づいて開示しなければならない。Sunはソースコードを開示する代わりに、変更は共有していくことで、極端な分岐が起きにくいようにする腹積もりだろう。
(もちろんクラスパス例外があり、アプリケーションなどが完全にソースを公開しなければならないわけではない。また、商用ライセンスも残すため、従来のラインセンシーは法的な保証のある開発を継続することも出来る。)

***

この件でよく話題に上るのが「Sunはコンピュータやソフトウェアのサービスで儲かっているから、オープンソース化に踏み切ったんだろう」ということ。
でも、もうちょっと広い理由がありそうに思う。

むしろJavaが拡散しつつあり、立ち位置が変化してきているからだ、と考えている。

Javaが誕生した1995年当時、一つのソフトウェア実行環境を通じて、あらゆるマシン上で同じコードが動作する、というのがうたい文句だった。いわゆる "Write once, run anywhere." だ。
もちろん、組込みからPC、サーバや大規模サービス、数値計算向けスーパーコンピュータのすべて、同じソフトウェアというわけには、現実にはいかなかった。ほどなくPC向けのJava SE (Standard Edition)、エンタープライズ向けのJava EE (Enterprise Edition)、組込み向けのJava ME (Micro Edition)の3つに分かれた。
EEはSEのスーパーセットだが、MEは他と比べると、VMもクラスライブラリも異なる。ただし、開発言語は一つだし、動作原理も同じであるため、アプリケーションの内容を理解することは可能(であるはず)だ。

21世紀に入り、Javaはエンタープライズ分野で大きく躍進した。大規模なショッピングサイト、ホテルや航空券の予約などの背後で、ユーザの入力を受け付けると、気付かぬうちにJavaが処理を行い、結果をWebページとしてユーザに送っている。
これにつられるように、PCにもJava実行環境がバンドルされるケースが増えた。(2004年、MicrosoftとSunが長年の争いに終止符を打ち、技術提携をしたことも記憶に残っている人が多いはずだ。当サイトではここここ。)
また、携帯電話のための追加ソフトウェア実行環境としても躍進した。特に日本はその先陣を切り、ゲームだけでなく、関数電卓やPCメールのチェックなど、ちょっと便利なソフトもたくさん提供されている。

ただし、それぞれの分野での成長が始まると、エンタープライズ分野のクラスライブラリやツールは独自の成長を遂げていく。組込み向けも、その業界や機器に特化した形で成長と変化を続けていく。
Javaは一つの技術基盤として周知のものとされ、その上で展開される応用技術に関心と焦点が当たるようになる。Javaは当たり前のものになってしまい、その上で動くクラスライブラリの構造と実装に関心が向かっていく。

2004年、Java SEの新しい言語仕様をまとめていたJames Goslingは、JavaOneなどで「新しい言語仕様に関する要求よりも、ライブラリに関する要求のほうがはるかに大きかった」と語っていた。
2005年頃にはもう、EE(エンタープライズ)と、ME(組込み)は、それぞれの変化が加速していて、それぞれの技術内容を理解するためのハードルが、以前より多くなっていたかもしれない(ハードル自体は同じJavaを基盤にしているはずだから、そう高くはないはず)。
つまり、Javaは技術基盤として後景に退き、前景にはより応用に近い技術が出てきて、Javaという世界は分野ごとに分かれてきている。

とはいえ、Javaはコンピュータサイエンスの成果をバランスよく盛り込んで、大規模開発の主流技術、組込み分野の必須技術である。

***

一方、Linuxの動作するマシン上で、PerlやPHPによってサービスを提供する機会も非常に多くなっている。RubyやPythonも人気がある。

Javaは、設計の肝を知っている技術者が、クラス構造から実装まで面倒をみてやることで、効力を発揮する。よくも悪くも、ある程度はかっちり作る必要がある(それでもC言語やCOBOLなどに比べるとはるかに柔軟だが)。
逆にいえば、技術者にとっての敷居はやや高くなる。

しかし、Perlなどに代表されるスクリプト言語は、そこまで肩肘張って開発しなくても、まず動くものを開発し、暫時改良を加えながら、徐々にまっとうなシステムにしていくスタイルをとりやすい。優秀な開発者なら、すでに書いたコードをあっさり捨てて、新しいコードを書くのも苦にならないかもしれない。
技術者にとって、最初の一歩の敷居は低いし、経験を積むうちに慣れていくため、特に不自由を感じないまま、スクリプト言語とともに歩んでいくケースも多い。

こうしたスクリプト言語の多くはオープンソースであり、熱心なファンが議論や改良を行う。その成果がファンや他のユーザに吸収されて、さらなる発展を遂げる。
長い目で見れば、Javaにとって最大の脅威は、こうしたスクリプト言語による開発のファンだろう。彼らはSolaris + Java + Oracleのように、企業が開発したソフトウェアによるかっちりした環境には流れ込んで来ないだろうから。

Java VMの上で動作するスクリプトエンジンを搭載し、通常のJavaアプリケーションの開発だけでなく、スクリプト言語による開発も並行して行えるようにする。この方向がJava SE 5の次のバージョン(コードネームMustang)に取り入れられることは、既に有名だ。

オープンソース化することで改良を加速し、しかもそれが極端な分岐をたくさん生まず、コミュニティで共有しやすい状況にする。その上で、新たなファンも獲得する。そして、Javaの人口を(いましばらくは)減らさない。
おそらくこのことが、Sunの大きな目的の一つに入っているだろう。
目論見通りにいかなかったとしても、オープンソース化を進めることで、新たな関心を引き寄せれば、そのこと自体は決して負の方向には作用しない、という読みもあると思われる。

***

誕生から10年を経てJavaは主流技術となったが、そうなった頃には分野別の拡散が始まっており、さらに「そんなでかいシステム、かったるくてイヤ、スクリプトで作らせて」という人々もいる世の中になってる。
ほんと、世の中はわからんもんだ。

|

« いじめに思う、自分へのハロー | トップページ | 京都、マンガミュージアムのオープンと、再び建築規制の強化へ »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/16751/12801228

この記事へのトラックバック一覧です: Javaのオープンソース化に想う:

« いじめに思う、自分へのハロー | トップページ | 京都、マンガミュージアムのオープンと、再び建築規制の強化へ »