2005年 6月 24日 金曜日
JavaOne ネタに関連した話題を一つ。オープンソースに関して思っていることを書いてみたい。
Javaといえば、オープンソースへの道のりが話題になって久しい。
Javaってオープンソースじゃなかったの?という単純な疑問には一筋縄では応えられないほど複雑な事情がある。
Javaの周辺技術は、Struts や Ant など、オープンソースのものは数え切れないほどがあるし、Standard Edition (J2SE) や、Enterprise Edition (J2EE)のような標準プラットフォームに関しても、ライセンス企業/団体がオープンソースで開発している/しはじめている例がある。
そして、そもそも、Java のコアである、JDK のソースコードは、96年のリリース当初よりJavaソースコードが添付されており、VMのネイティブコード部分も98年のSCSL導入後からは無償で公開されている。
J2EE RI (Reference Implementation, または参照実装)も
SCSL の下で当初よりソースコードが公開されている。
オープンソースの議論になる時によく出てくる Bug Fix を世界中の開発者で行うことのメリットだが、これとて、Java プラットフォームには誰でもフィードバックを送れるBug Databaseが用意されている。
なので、オープンソース化を考える際には Java プラットフォーム全体は、既にオープンソースに限りなく近い場所にいる事を認識する必要がある。Sun は、Java プラットフォームの全面オープンソース化に慎重だとよく言われるが、責任を持つ企業としてはある意味当然の姿勢といっていいのではないだろうか。
現状のオープンソースに近い状態で本当に問題があるのか、オープンソース化しした場合に発生するデメリットとメリットは何なのか、見極める必要がある。
特に、Java プラットフォームが他のテクノロジーと違い面倒な点は、Write Once Run Anywhere というスローガンがあらわす Portability を大きな売りにしているということである。
一度書いたプログラムがどこでも動く。これを可能にしているのは、Java の実行環境である Java プラットフォームである。オープンソース化により非互換なプラットフォームを誰かが開発し、世の中に広めてしまう。そうなると Java アプリケーションの大きなアドバンテージが失われてしまうことになる。これは、ユーザにとっても開発者にとっても、害こそあれ利益のないストーリーだ。
だから、Java プラットフォームをオープンソース化するにしても、互換性をいかに保つのかが大きな課題になってくる。性善説に立ちたいのは山々でも、過去の厳しいライセンス形態のもとでさえ、Sun が法廷闘争をせざるを得なかった事実があったことからすれば、何らかの縛りが必要なことは明らかだ。そして既存のオープンソースライセンスでは、このような互換性への縛りを行うことは厳しい。何らかの新しいライセンス形態が必要かとおもえる。
このように、3つ事情が Sun をして Java プラットフォームの即時のオープンソース化に二の足を踏ませる理由であると言っていいだろう。
ただし、将来的には (1ヶ月先か、10年先かはわからないが)Java プラットフォームは全面的にオープンソース化されるだろうと考える向きは少なくない。私も個人としてそのような予想をしている。
Sun が昨年から立て続けに導入したライセンス、JRL,JIUL, JDL は、ライセンス条件が緩和されている。一つの見方として、Sun は徐々にオープンソースに近いライセンス形態をリリースしながら、適切な時期を見極めようとしているとも言ってもよいかと感じる。(JDL くらいまで緩和されると、実質的にオープンソースライセンスと違いはほとんどなくなっている)
その路線の延長上にある発表が今回の JavaOne でもあるだろう。Sun の Application Server の次期バージョン GlassFish が、JRL (研究、調査する機関/部署を対象としたライセンス形態。純粋なオープンソースライセンスではないが、研究・開発をする上ではオープンソースとほぼ同等のメリットが享受できる)の下で開発されることが発表されたが、それ以上の何らかの発表があってもおかしくはない。