矛盾を抱えつつ進化する“Java”――黒船となったRuby on Rails(2/2 ページ)

» 2007年08月16日 07時00分 公開
[星 暁雄,コモンズ・メディア]
前のページへ 1|2       

 国産Javaフレームワークとして著名なSeasar2を中核とするソフトウエア群Churaは、やはりRuby on Railsから刺激を受けている。実行時のJavaクラス修正を可能とするHOT Deploy機能や、アプリケーションのひな形を自動生成するEclipseプラグインなどを備えるのだ。Ruby言語による動的な開発スタイルや、Ruby on Railsの自動コード生成機能に対抗したものである。

 これ以外にも、Grails、TrailsなどがRails対抗のJavaフレームワークとして知られている。

 一方、IBMは、JavaベースでありながらJava EEを使わないWeb開発環境Project Zeroを公開している。メインストリームのJavaテクノロジから離れ、独自路線によりフルスタックのWeb開発に対応、高生産性を狙う。この点でRuby on Railsの影響を受けていると見てよいだろう。Project ZeroはJavaで構築してあるが、スクリプト言語GroovyやPHPを組み込み、軽量なWebサービス技術であるRESTを取り入れ、アジャイルな開発スタイルを適用可能としている。IBMの商用製品と位置づけており、オープンソースソフトウェアではないものの、Community Driven Commercial Developmentと呼ぶ開発手法を採用し、IBM外部の開発者や利用者が製品開発プロセスに参加できるようにしている。

 これらのJavaフレームワークとは別のアプローチとして、JRubyがある。JRubyは、JavaによるRuby処理系実装で、もともとオープンソースプロジェクトとして開発が進められていた。コア開発者2名をSunが雇用したことから開発が急ピッチで進み、この2007年6月にリリース1.0を公開したものだ。このJRubyの上でRuby on Railsそのものを動かすことが可能である。現段階では充分な性能が出ていないとの報告があるが、将来は実用的な性能になるものと期待されている。同じJavaアプリケーションサーバ上でJavaとRuby on Railsの両方のアプリケーションを動かす運用が可能となるのだ。

 Javaコミュニティーの才能ある人々の一部はRuby on Railsに流れている。だが、別の才能ある人々がRuby on Railsから刺激を受けてJavaをより良くする仕事に取り組んでいるのである。

成功とオープン化の影で矛盾が生まれた

 Javaのもう一つの矛盾点は、JavaはSunのものでもあり、Sunだけのものだけではない、という特殊事情である。

 Javaテクノロジの技術仕様は、JCP(Javaコミュニティプロセス)が策定する。JCPは、Javaの発達の初期段階で、Java技術の開発に多くのライセンシ企業が協力した経緯を引き継いで発足した。今では、JCPには企業、団体、個人が参加することができる。Javaの仕様策定プロセスは公開されているという意味において、Javaはコミュニティーのものである。

 JCPから生まれた成果物に基づくオープンソースソフトウェアも増えつつある。JavaテクノロジのコアといえるJava SEは、最近OpenJDKとして、GPLバージョン2によりオープンソース化された。

 Sunの立場は「Javaは産業界の共有財産である」というものである。Sunの幹部は「究極的にはすべてのソフトウェアをオープンソースにする」とも発言している。こうした面を見ると、Javaのオープン化は着々と進行しているように思える。

 その一方で、SunはJavaをビジネスの重要な道具として見ている。Javaブランドは商標登録されており、Sun以外のベンダーが「Java」を製品名に使うことには厳しい制約が付く。Java技術仕様の著作権の多くをSunは保有している。そしてSunは、自社の多数の開発者をオープンソースソフトウェアの開発に投入する一方で、社外の開発者コミュニティーのパワーも活用し、オープンソースソフトウエアに基づく競争力あるJava関連プロダクトを育てようとしている。こうした「SunのJava」は着々と存在感を増しているのだ。

 これは営利企業として当然の行動である。また、ソフトウェアの機能が充実する方向にあるため、ユーザーにとってのメリットもある。だが、競合関係にあるオープンソースプロジェクトやベンダー企業から見れば、不公平感が生じやすい。この不安定な状況が、後述する不協和音を生み出している。

JavaOneは「SunのJava」を強調

 最近のSunは、以前よりも戦略的にJavaテクノロジをビジネスに活用しようとしているように見える。2007年5月に開催されたJavaOne 2007でも、そうした印象を受けた。

 以前のJavaOneでは、Sunの社員による基調講演のスライドなのに、Sunの製品名がいっさい入っていないという徹底ぶりを見せていた時期もある。Javaテクノロジーは産業界の共有財産であり、JavaOneはSunというよりJavaコミュニティーのカンファレンスである、という趣旨からである。だが2007年には、こうした配慮はまったく消えていた。

 JavaOne 207の基調講演は、Sunの製品や、Sun主導のオープンソースフレームワークの宣伝に終始していた。基調講演でSunが強調したのは、OpenJDK、JavaFX、JRubyなど、Sunに由来するソフトウェアである。特に、JavaFXはJCPを経由しておらず、オープンソースでもなく(今後オープンソース化を予定)、Sunのソフトウェア製品として開発が進められてきたものである。

 さらに、Sunが推進するオープンソースソフトウェアであるNetBeansやGlassFishを盛んに売り込んだ。NetBeansにはEclipseというライバルが存在し、GlassFishにもJBossを始めとするライバルが多数存在する。

 つまり、JavaOne 2007の基調講演で強調されたものは、コミュニティーのJavaというより「SunのJava」であった。

Javaテクノロジーの仕様策定で不協和音が

 従来から、Sunと開発者コミュニティーとの関係はギクシャクする場合が多かった。最近では互換性テスト・キットのライセンスをめぐり、ASF(Apache Software Foundation)とSunの間で問題が起きている。

 2007年4月、ASFが推進するApache Harmonyプロジェクトのバイスプレジデントを務めるゲイル・マグナッソン氏が、Sunの最高経営責任者(CEO)であるジョナサン・シュワルツ氏に公開書簡を送った。オープンソースのJava SE実装であるApache Harmonyプロジェクトのため、ASFが互換性テストキットJCKを利用できるようSunに求めたが、受け入れられなかったためである。JCKは膨大なJavaテクノロジーの機能をカバーするテスト群を含んでおり、これを活用できるか否かでソフトウェア品質に大きな差が付く。

 この公開書簡に記された問題は、JCPによる仕様策定プロセスの場で政治問題として持ち込まれている。Java EEの次期バージョンであるJava EE6は、当初JCPで「JSR 313」として提出されたが、当初の仕様案は2007年4月の投票の結果、棄却されてしまった。仕様を策定するエキスパートグループの中で、テストキットなどのライセンス条件に関する合意が取れなかったことが理由である。その後、SunはJava EE6仕様案の文言を手直しして「JSR 316」として再提出し、7月の投票で採択、仕様策定プロセスが始まった。ただし、Java EE6エキスパートグループのメンバーの中で、ASFだけは反対票を投じた。公開書簡に記載した問題が解決されていないとして、ASFはJCPへの新たな仕様案の提案に関する投票ではすべて反対票を投じている。

 一方Sunは、ライセンス条件を変更してテストキットはOpenJDKコミュニティに対しては自由に利用できるようにする、と2007年8月に発表したが、この条件ではASFとの合意は難しそうだ。なお、OpenJDKはオープンソース化したが、テストキットをオープンソースにする予定はないという。

 Javaはオープンな仕様策定プロセスを持ち、その実装のオープンソース化が進んでいる。それにも関わらず、ほかのベンダーやコミュニティーとの不協和音は収まらない。ベンダー発の技術を、完全にオープンなテクノロジに育て上げることが難しいことを、Javaの事例は示しているといえる。

イノベーションは続く

 このような矛盾を含みつつも、Javaは依然として多くの人々を引きつけ、イノベーションを起こす土台としてのポテンシャルを持っている。Java仮想マシン(JVM)や膨大なJavaクラス・ライブラリ(Java API)は多額の開発投資が注ぎ込まれたインフラであり、技術として成熟している。

 例えば、最近話題となっているソフトウエアの一つにJavaによるGoogleクローンであるHadoopがある。Hadoopは、GoogleのGFS(Google File System)相当の分散ファイルシステムと分散プログラミング手法MapReduceをJavaで実装したものである。米Yahooが開発パワーを提供している。Yahoo社内では、サーバ1万台規模でHadoopを稼働させる研究プロジェクトが進められているという。

 このように、Google対抗技術がオープンソースで登場するといった懐の深さをJavaコミュニティーは持っているのだ。ちなみに、Google社内ではJavaはC++、Pythonと並ぶメインストリーム言語の一つとの位置づけであり、AdWordsやGmailの実装などに使われているという。

関連キーワード

Java | Ruby | オープンソース


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.