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

インターネット全盛以前に誕生したJava。アプリケーション開発の形態が変化していく中で、Javaもまたいろいろな刺激を受けてきている。これまでのJavaと今後のJava、業界キーマンがコラムで語る。

» 2007年08月16日 07時00分 公開
[星 暁雄,コモンズ・メディア]

 ある年のJavaOneカンファレンスでのことである。筆者は、あるパネルディスカッションを聴いていた。ビル・ジョイ氏がパネリストとして参加していたからである。

 ビル・ジョイ氏といえば、UNIXの世界にTCP/IPとページング仮想記憶をもたらした4.2BSDの開発者であり、Sun Microsystems社の創業者の一人であり、そしてジェームズ・ゴスリング氏の上司としてJavaの誕生を後押しした人物でだ。もしビル・ジョイ氏がゴスリング氏の研究開発を認めていなかったら、Javaは(当時は違う名前だったが)失敗プロジェクトの一つとして忘れ去られていただろう。

 そのほかならぬビル・ジョイ氏が、会場を埋めた数千人のJava開発者達に向かって次のように語ったのだ。

 「Javaは、決して最後のプログラミング言語ではない。10年後、ここにいる皆さんの多くは、より現代的なプログラミング言語を使っているだろう。しかしJavaは、それらのプログラミング言語に対してオブジェクト群を提供するインフラとなるだろう」(ビル氏)

 Java言語はいずれ古びていくが、膨大な開発投資が注ぎ込まれたクラスライブラリ(Java API群)とJava仮想マシン(JVM)は末永く使われるだろう、という予言である。

 それから何年かが経過した。今では、このビル・ジョイ氏の言葉はかなり良くJavaの未来を説明しているように思われる。2007年のJavaOneで中心的な話題だったJRubyやJavaFXは、まさにJavaとは別の言語でJavaのオブジェクト群を利用する技術といえるからだ。

Javaが抱える2つの矛盾

 現在のJavaの姿は複雑である。矛盾を抱えこんでいるからだ。

 Javaが普及に成功した結果として、古い技術との整合性を取りながらイノベーションを継続しなければならないという矛盾が生まれた。その成長とオープン化の過程で、Javaは開発者コミュニティーの共有財産であると同時にSunの企業戦略に組み込まれた技術でもあるという矛盾が生まれた。以下、この2つの矛盾に注目してJavaの「今」を見ていきたい。

レガシーなJavaと、イノベーション素材としてのJava

 Javaが登場してから2007年現在で12年が経過している。開発者としてのキャリアを開始した時点ですでにJavaが存在していた読者も多いだろう。Javaに対して「レガシー」な技術という印象を持っている読者もいるかもしれない。

 だがJavaは、もともとシステム開発技術にイノベーションをもたらす存在として注目された技術である。Javaが登場した1995年の時点では、オブジェクト指向言語がエンタープライズシステム開発のメインストリームになることはないと思われていた。そんな中で登場したJavaはイノベーティブな開発者を引きつけ、Javaはブームになったのである。

 2007年の現在では、Javaにもレガシーとしての側面が出てきたことは否めない。後方互換性を意識しながら新しい機能を次々と取り入れていったため、Javaテクノロジは複雑化、肥大化する傾向にある。特にエンタープライズ分野のJavaには様々な批判がある。これとは別に、諸般の事情で古いバージョンのJavaテクノロジを使い続ける開発現場も数多い。

 こうしたJavaのレガシー化の状況を知るには、最近話題になった書籍『JavaからRubyへ』を読むとよい。

 著者であるブルース・テイト氏は、もともとJavaの専門家として著名だった。2004年に最近のエンタープライズJavaの肥大化を警告した『軽快なJava』、2005年にはその続編である『Beyond Java』(翻訳書は未発行)を書き、その過程でRubyに走ったのである。

 テイト氏の一連の著作が訴えていることは、メインストリームのエンタープライズJavaテクノロジは複雑になりすぎており、より軽量な新しいテクノロジを採用した方が適切な場合が多い、ということである。『軽快なJava』では、エンタープライズJavaが複雑すぎるという問題を解決するため、SpringやHibernateなどメインストリームのエンタープライズJavaとは異なるオープンソースフレームワークを紹介している。だが、『JavaからRubyへ』では、テイト氏はJavaのフレームワーク群は種類が多すぎて選択が困難であり、習得コストも高くつく、と切り捨てている。

 Ruby on Railsには、Javaを捨てさせるほどの魅力があったのである。

Javaにとっても「黒船」だったRuby on Rails

 Ruby on Railsは2004年に登場した。Ruby言語で記述されたオープンソースのWebアプリケーション開発フレームワークである。Javaとは無縁のテクノロジとコミュニティから生まれたにも関わらず、多くのJava開発者がRuby on Railsに注目した。

 前出のブルース・テイト氏は、Javaの専門家でありながらRuby on Railsによる開発プロジェクトを手がけ、その経験から『JavaからRubyへ』を書いた。日本でも、多くのJava開発者がRuby on Railsを試した。開発案件に適用した事例も出始めている。

 Ruby on Railsは、従来型のエンタープライズJavaと比べると、多くの点で正反対のアプローチを取っている。エンタープライズ分野のほとんどのJavaフレームワークは多層アーキテクチャを採用しており、層(レイヤー)ごとに細分化、専門化している。だがRuby on Railsは「フルスタック」、つまり1つのフレームワークだけでWebアプリケーション開発をこなす。洗練された自動コード生成機能scaffold、テスト機能の内蔵、 設定ファイルの排除などの特徴を備え、開発プロセス全体にわたり開発者を支援する。こうした特徴が、多くの開発者から支持されている。

 一方、Ruby on Railsに刺激を受けて、Javaで作られたフレームワークにRuby on Railsの良い部分を取り入れようとする試みが幾つも登場している。

Javaの世界にRailsの影響が

 Ruby on Railsの影響が見られるJavaテクノロジとしてよく話題となるのがJBoss Seamである。JBoss Seamは、EJB3.0とJSFという異なる層を結ぶフレームワークである。フルスタックで自動コード生成ツールを備える点で、Ruby on Railsへの対抗意識がうかがえる。また、JCPではJBoss Seamをベースとする技術仕様JSR 299 Web Beansの策定が進んでおり、これはJava EE6に取り入れられる予定である。つまり、メインストリームのエンタープライズJava技術にRuby on Railsが影響を与えるという構図である。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ