前編 最初にJ2EEの全体像と動向を知ろう


篠塚克利
2002/5/29


 最近では、「J2EE」という言葉も広く行き渡ったようで、さまざまな記事やWebサイトで見掛けるようになりました。その一方で、この言葉が意味するところを具体的に理解し、その技術を使いこなせているエンジニアはまだまだ少ないようです。

 人材が不足する原因は、J2EEがカバーする領域の広さにもあると思われます。J2EEをベースとした開発を行えるようになるには、どんな技術をどのように学んでいけばよいのか、途方に暮れてしまう人は多いかもしれません。

 この連載では、新人SEもしくはVisual Basic(以下VB)などからのスキルチェンジを迫られているエンジニアの方々を対象として、J2EEの学習の道筋を示していきたいと思います。

 

 J2EEとは何か

 J2EEとは、Java2 Platform Enterprise Editionの略で、サン・マイクロシステムズの提唱による企業情報システム向けのJavaプラットフォームの規格です。

 Javaには現在、3種類のプラットフォームが用意されています。基本仕様を提供するJ2SE(Java2 Platform Standard Edition)と、機器組み込み向け仕様のJ2ME(Java2 Platform Micro Edition)、そして企業情報システム向け仕様のJ2EEです(図1)

図1 Javaの3種類のプラットフォームの関係

 J2SEは、主としてエンドユーザーが直接操作するデスクトップ・アプリケーションを構築することを主眼としており、Swing*1などGUIライブラリの充実が目立ちます。

*1:本格的なGUIをJavaで実現するために開発されたライブラリ

 一方、J2MEは携帯端末や各種情報機器への組み込みが対象となっており、少ないメモリとCPUパワーでも快適に動作するよう、各種APIモジュールをプロファイルと呼ばれるパッケージにまとめてコアAPIから切り離し、必要なものだけを組み込んでスリム化できる点が特徴です。

 これに対して、ミッション・クリティカルな企業情報システムの構築を目的としたJ2EEでは、仕様の規模もカバーする範囲も膨大なものとなっています。J2SEによる基本仕様の上に、Webやデータベースへの対応、ERPなどの外部システムとの連携や分散処理が積み重ねられ、幾重にも層をなす構造になっています(図2)*2

図2 J2EEは、J2SEの基本仕様の上に構成されている

*2:J2EEは、J2SEのようにクライアント側にアプリケーションを作るのではなく、サーバ・サイドにアプリケーションを構築する技術のため、サーバ・サイドJavaと表現されることもあります。

 J2EEとは、このような多岐にわたる情報技術の集大成であるともいえます。

●ここまでの理解を助ける参考記事

なぜ、J2EEが必要なのでしょうか?(Java Solution:Java FAQ)
J2EEとデスクトップ用のJavaの環境とはどこが違うのですか?(Java Solution:Java FAQ)

 

 なぜJ2EEなのか

 J2EEの仕様がここまで大規模になっている理由は、今日の企業情報システムに求められているものが単体の業務の処理ではなく、複数のシステムが結び付いた分散処理のネットワーク化である点です。

 ITバブルの崩壊によって、情報システム投資の費用対効果が注目されてきています。より少ない投資で大きな成果を上げるためには、これまで蓄積されてきたデータやシステムを有効活用しなければなりません。そこで、これまではバラバラに作成されていた既存のデータベースやシステムをつなぎ合わせて活用することで、企業全体の生産性を高めていくことが必要となってきます。

 また、そうした企業システムに求められている要素としては、柔軟性、拡張性、信頼性などが挙げられます。

 柔軟性は、仕様変更やハードウェアなどの動作環境の変更への対応のしやすさとなります。生産性を上げるためには、業務の絶え間ない改善が必要です。また、そうした改善の中に顧客の要望を組み入れることができれば、さらに業績の向上が見込めるでしょう。

 しかし、柔軟性の乏しいシステムではそうした改善の要求にこたえられないため、時間とともにだれも使ってくれなくなってしまいます。

 拡張性は、システムの規模が大きくなることへの備えです。システムの仕様が要求にマッチしていれば、利用者の数がどんどん増えていく場合があります。大企業であれば、社内のユーザーだけでかなりの数になるでしょうし、Webで開設したECサイトがヒットすればアクセス数は無制限に増えていきます。

 このような場合に規模の拡大が想定されていないと、せっかくのビジネスチャンスを棒に振るばかりか、思わぬトラブルによって信用をも失いかねません。

 信頼性は、安定したサービスの供給に欠かせない要素です。仮にシステムの一部が機能を停止しても、予備のサーバが処理を代行して運用を続けられるような、冗長構成なども必要となります。

 こうした状況下で、Javaそのものが特定の動作環境に依存しない点がますます重視されてきています。ビジネスの発展に合わせて、自由にハードウェアやOSを入れ替えながら規模を拡張し、システム自体もコンポーネントの追加や交換によって拡張できるためです(図3)

図3 Javaは特定の動作環境に依存しないため、ハードウェアやOSを変更しながら規模を拡張することができる。将来の拡張性に不安がない点でメリットが大きい

 J2EEは、このようにJavaが持つ利点を最大限に引き出せるように設計された規格となっています。

 

 従来のクライアント・サーバとの違い

 J2EEでは、特にWebとデータベース管理システム(DBMS)との連携が重視されています。これもまた、柔軟性や拡張性、費用対効果を目指していることの表れです。

 しかし、従来多く用いられていたクライアント・サーバ構成のシステムでも、DBMSとの連携は行われていました(図4)。読者の中には、VBとRDBMSの組み合わせでこの形式のシステムを手掛けた方もおられるでしょう。

図4 従来のクライアント・サーバの構成

 では、J2EEはどのあたりが違うのかを見てみましょう。

 クライアント・サーバの単純な2層構造では、処理が複雑になっていくとどちらかに処理が集中してしまいがちです。これは、どちらに集中しても問題を招きます。

 VBなどで作られたクライアント・アプリケーションに処理が集中すると、複雑で大きなアプリケーションをすべてのユーザーのマシンにインストールしなければならなくなります。そのため、メンテナンスのコストが膨大なものになります。また、社外に開かれたサービスでは、そもそもこうしたアプリケーションの配布自体が困難です。

 一方、DBMSサーバに処理を集中させることも問題を引き起こします。どんなに高性能なサーバであっても、あらゆる処理を1台で賄うことは不可能です。しかし、DBMSは本来、データの一元管理を行うためのシステムです。そのため、簡単に台数を増やして処理を分担させるわけにもいきません。

 このように、従来の構成には柔軟性や拡張性に問題がありました(図5)。これを克服するために考えられたのが、3階層以上の構成による多階層アーキテクチャです(図6)。J2EEは、こうした多層構成を積極的にサポートしています。

図5 2層構造では、端末のメンテナンスコスト、拡張性の点でデメリットがあった


図6 J2EEは3層以上の多階層アーキテクチャを実現する

 J2EEを利用したアプリケーションでは、ユーザーが直接操作するのはWebブラウザだけというのが一般的です。これによって、膨大な数のクライアント・アプリケーションをメンテナンスするコストがまず省略できます。

 そこで、まずユーザーとのインターフェイスとなるのがWebサーバとなります。ここではユーザーからの要求にこたえてWeb画面を用意して提示する必要があります。これを担当するのがServletとJSP(Java Server Pages)です。これらはWebサーバ上で動作するJavaベースのコンポーネントです。

 ただし、Webサーバは1台で多数のユーザーの相手をしなければならないので、入力や表示に限った軽い処理だけにとどめる必要があります。そこで、複雑で重い処理を分担してこなせる中間層のアプリケーション・サーバが必要になります。この上で動作するのがEJB(Enterprise Java Beans)と呼ばれるコンポーネントです。

 J2EEに対応したアプリケーション・サーバは、複数台を用意して処理を分担できるのが特徴です。また、個々の単純な処理単位をEJBによってコンポーネントとしてまとめ、これらを自在に組み合わせることで複雑な処理を実現することができます。つまり、柔軟性と拡張性を兼ね備えているわけです。

 そしてデータの管理をつかさどるDBMSサーバがあります。しかし、ここで終わるわけではありません。さらにその背後にさまざまな社内システムがあり、また最近では社外にある多様な情報システムとも連携していく必要が生じてきています。

●ここまでの理解を助ける参考記事

Servlet(サーブレット)とは何ですか?(Java Solution:Java FAQ)
JSPとは何ですか?(Java Solution:Java FAQ)
Webアプリケーションにおけるサーバ・サイドJavaの効果的な利用(Java Solution)

 

 Webサービス、BtoBへの適用

 しばらく前に、「BtoB」という言葉がはやりました。Business to Businessの略で、企業間システム連携とも訳されることがあります。製造・流通業などで以前から使われている電子受発注システムが代表的ですが、これまでは接続のための技術的・経済的なコストが高すぎて普及しているとはいい難い状況でした。

 しかし、Webインターフェイスを企業間のシステム連携に応用することで、コストの問題が大きく改善されました。そのきっかけとなったのが、汎用データ記述言語のXMLであり、動作環境を選ばずにXMLを処理できるプラットフォームとしてのJavaです。

 こうして出来上がったのが、Webサービスと呼ばれる概念です。従来のWebといえば、ユーザー・インターフェイスの1つという位置付けでした。つまり、人間がWebブラウザでインターネット上のWebサーバにつなぎ、人間の入力に応じてさまざまな処理が行われるわけです。

 しかし、WebサービスではWebブラウザも人間も介在しません。正確にいえば、最初のリクエストはPCの前に座るあなたの入力かもしれませんが、そのリクエストをアプリケーション・サーバが受け取ったところから、Webサービスは始まります。

 図7にあるように、サーバ同士がWebインターフェイスによってネットワーク状に結び合わされ、互いに処理を分担し合うのがWebサービスです。EJBで実現された処理の分散と統合が、HTTPというより共通化されたプロトコルと、汎用的なデータ記述言語のXMLによってさらに広げられていくわけです。

図7 HTTPとXMLによってインターフェイスが構築され、互いに処理を分散しあうWebサービス

 これが企業間をまたがった連携システムに役立つことから、BtoBの分野で非常に注目されています。もはや、情報システムを単一のアプリケーションや単一のサーバで構築するのではなく、それどころか企業という枠も飛び越えて、インターネットという世界的規模の分散システムを構築する時代に入ったわけです。

 その入り口となるのが、J2EEだということもできるでしょう。

●ここまでの理解を助ける参考記事

技術者のためのXML再入門(XML eXpert eXchange)
Webサービス(ICD)

オピニオン いまなぜWebサービスか?(XML eXpert eXchange)

 前編では、個別の技術的なテーマには深く立ち入らず、J2EEの全体像と、その背景として広がる情報技術の動向を中心に話を進めてきました。いわば、J2EEを学ぶためのラフデザインといったものを目指してみました。

 後編では、今回名前の出てきた個々の技術トピックについて解説していきたいと思います。特に、それらがどのように関係し、どれから順番に学べばよいか、また学ぶことでどのような開発ができるようになるかを理解することが目標です。

 INDEX  J2EE学習ガイダンス

前編 最初にJ2EE全体の概要と動向を知ろう  
後編 Webアプリケーション実現の本質を知ろう

 

連載記事一覧






Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間