J2EEとは,エンタープライズ・システム構築向けのJava技術を整理したもの。今や,ある規模以上のシステム構築ではJ2EE以外の選択肢は考えにくい。この連載では,記者の眼から見たJ2EEの要点を説明していく。

 この連載では,Java技術の最新動向について,Java技術を追いかけている1人の記者の立場から説明していく。

 Java技術は,今では基幹系システムの構築に使われるようになり,その全貌は非常に広く,深い。本来なら,エンジニアや研究者が書くべきテーマかもしれない。その一方で,J2EEという概念は1999年に登場したばかりで,まだ新しい技術でもある。歴史が浅く,しかも範囲が広い。こうした状況では,ジャーナリストによる解説にも,それなりの意味があるのではないだろうか。

J2EEとは

 J2EE(Java2 Platform, Enterprise Edition)とは,「Java技術」という膨大な技術群の中から,エンタープライズ・システム構築向けの技術群を選び,整理したものである。その内容は,Webアプリケーションの構築(サーブレット[用語解説],JSP[用語解説]),ビジネス・ロジックの部品化(EJB[用語解説]),Webサービス(JAX-RPC(関連記事)など,J2EE 1.4から追加),レガシー系を含めたデータ統合のインフラ(J2EE Connector Architecture),非同期メッセージング(JMS[用語解説])など,広範囲にわたる。

 複数のベンダーの製品上で,これだけ広い範囲のシステム構築技術が標準化されているということが,J2EEのインパクトといえる。これは,企業ユーザーにとっては,構築するアプリケーションが幅広い環境で,長い期間にわたってサポート可能となることを意味するし,個々の開発者にとっては,自分の技術スキルが広い範囲,長い期間にわたって適用可能となることを意味する。

J2EEと他のJava技術

 今のJava技術は,大きく3系統に分化して発展している。まとめると,以下のようになる。

J2EE:エンタープライズ向けJava 基幹系での事例が多数出ている。複雑・大規模なシステムに適用可能な実力を持つ。ただし,小規模システム(短納期,高生産性が求められるシステム)では,ライバル技術と比べた優位性を発揮しにくかったが,最近は動きが出てきた。

J2SE:デスクトップ向けJava 残念ながらデスクトップ環境には普及しなかった。Lotus,Corel,ジャストシステムが,Java版オフィス・ソフトを開発するも,大きな成功を収めることはできなかった。Microsoft Windowsに標準で搭載されていないことが大きなネックとなった。ただ,最近は動きが激しくなっているため,デスクトップJava分野のウォッチは続けた方が良い。

J2ME:組み込み/携帯電話向けJava 携帯電話の主要機種は,ことごとくJava搭載となっており,最も台数が出ているJavaプラットフォームといえる。ただ,携帯電話のJava機能は,主にゲーム用との認識が根強い。企業システムとの連携した活用方法などで,今後のチャレンジが出てきそうだ。

 現時点では,Java技術の様々な要素の中で,エンタープライズ向けのJ2EEが突出して成功しているという見方ができる。その一方で,デスクトップや携帯電話のJavaの能力も年々上がってきている。

J2EEは本格的な普及期に入る

 J2EEが成功した理由は何か。一言でいえば,J2EEをサポートするベンダーが,真面目に仕事をしたからである。米BEA Systemsの「WebLogic」や,米IBMの「WebSphere」を始めとするJ2EEアプリケーション・サーバーは,Webベースのシステム開発ニーズの急増に対応しつつ,次世代のシステム・アーキテクチャのための機能増強を続けてきた。今では,J2EEを置き換えるような技術をまったくゼロから作り上げることは考えにくい。

 J2EEは,現代のシステム・アーキテクチャの基礎といえる技術なのである。

 そして,現時点でのJ2EEによるシステム構築のスイート・スポットは何かといえば,ある程度以上に大きく,複雑なシステム,ということになる。逆に,小さなシステムへの対応は,J2EEにとってはチャレンジである(このテーマは,また別の機会に触れる)。

J2EEのポイントは,サーブレット,JSP,EJB

 J2EEを構成するJava APIは多いが,特に重要なのは次の3つ。サーブレット,JSP(JavaServer Pages),EJB(Enterprise JavaBeans)である。

 サーブレットは,HTTPによるリクエストを受け付けて処理するプログラムを作るためのAPIで,Webベースのアプリケーションを作る基盤となる。JSPは,サーブレットを利用するAPIで,Webページ記述とプログラムを結びつける。

 これらの技術がフロントエンド系(Webによるユーザー・インタフェース構築)のためのAPIであるのに対して,EJBはバックエンド系の技術。トランザクション処理を含むビジネス・ロジックをコンポーネント化するためのAPIである。

 大規模なシステム開発では,EJBのようなコンポーネント技術のニーズは強い。ただし,バックエンド系の技術としての性格から,サーブレットやJSPに比べ難易度は高い。分散オブジェクト,トランザクション処理,リソース管理などの知識を得たうえで使いこなした方がよいだろう。

 さらに,最新のJ2EE1.4の仕様には,Webサービスの基本機能が取り込まれている。

重要キーワードは「MVC」

 Java技術は,決して固まったものではなく,徐々に進化を続けている。システム・アーキテクチャに影響を与えるような大きな技術革新がこれからもあるかもしれない。

 もちろん,システムに求められる要件(要求仕様)も,刻々と変化を続けているのが今の情報システムの姿である。こうした状況で求められるのは,「変化に強い」ことである。

 ここで,1つのキーワードを説明したい。「MVC(Model-View-Controller)モデル」である。

 MVCは,プログラムの作り方の「定石」(あるいはデザイン・パターン)の1つ。業務システムを,ビジネス・ロジックを扱う「Model」と,ユーザー・インタフェースを扱うView,その間を取り持つ「Controller」に分割して考える。

 ここで,ViewとControllerに相当する部分で人気が出てきているのが,フレームワークの適用である。人気があるのがStrutsフレームワーク(関連記事)。Apache Jakartaプロジェクト[用語解説]が開発したオープンソースのフレームワークである。

 Strutsのドキュメントによれば,Viewを構成するのはJSPページ群,Controllerを構成するのは特別なサーブレット(ActionServlet),Modelを担当するのは「Actionクラス」ということになる。ただ,Modelに要求される機能(データベース処理の抽象化,トランザクション処理機能など)は範囲外なので,Strutsのカバーする部分は「VとC」である,と考えていい。

Model作りは課題が多い

 「VとC」の作り方はフレームワークの導入でほぼ決まる。「Model」をどう作るかはいぜん問題である。

 もちろん,Modelの部分でも本来はフレームワークのニーズはある(例えば,イーシー・ワンのcFrameworkは,Model部の設計思想に特色がある(関連記事))。ただ,この部分で,大勢のユーザーに認知されたフレームワークはなかなか出てきていないのが現状だ。

 Modelに相当する部分では,先進的な企業は何らかの取り組みをしているものの,そのノウハウは誰にでも利用可能な状態にはなっていない。Modelは,プログラミングの領域の問題ではなく,オブジェクト指向による業務分析と設計を抜きにしては作れない。つまり,適用業務による差が大きい分野であり,汎用的なフレームワークを設計するのはそもそも難しいといえる。

星 暁雄=日経BP Javaプロジェクト