この特集のトップページへ
Chapter 1:クライアント/サーバーアプリケーションの仕組み

  COLUMN   Javaを使ったN階層アプリケーションモデル

 N階層アプリケーションを構築するための技術を提供しているのは,何もMicrosoft社だけではない。特に,Java環境は,Microsoft社の環境に劣らない技術を提供している。本連載を呼んでいる読者でJava環境とWindows環境の二者択一を迫られている開発者はほとんどいないと思われるが,異なるアプローチに立脚する開発思想を理解することは,自分の扱う開発手法の長所と短所を理解し,最適なシステム開発を進めるためにも有意義と思われる。また,進んでゆく技術動向の趨勢を見極めるためにも,重要なことといえる。そこで,ここではJava環境における開発手法についても簡単に説明しておこう。

 JavaでN階層アプリケーションの構築を支援するモデルは,Java 2 Platform Enterprise Edition(J2EE)と呼ばれる。J2EEでは,Fig.1-15に示す機能を提供する。

Fig.1-15 J2EEのアーキテクチャ
fig.1-15

注意 Fig.1-15で示したテクノロジは,本稿執筆時点ですべてが提供されているわけではない。一部のテクノロジは仕様こそ決まっているものの,まだ実際に利用できる製品が提供されていないこともある。

 J2EEで提供される主なテクノロジには,次のようなものがある。

Applet
Webブラウザ上で動作するJavaのプログラム。
JavaBeans
コンポーネント化されたJavaのプログラム。Windows DNAでいうところのCOMコンポーネントに相当する。
Java IDL(Java Interface Definition Language)
Javaで作られたオブジェクトのインタフェースを定義する言語。CORBA(Common Object Request Broker Architecture)にも対応し,Javaで作ったオブジェクトをCORBA準拠のアプリケーションから呼び出すことができるほか,逆にCORBA準拠のオブジェクトをJavaで作ったアプリケーションから呼び出すこともできる。
Java RMI(Java Remote Method Invocation)
リモートに置かれたJavaのプログラムを呼び出すためのテクノロジ。Java RMIとCORBAで使われているネットワークプロトコルであるIIOP(Internet Inter-Orb Protocol)とを相互変換するRMI over IIOPというテクノロジも提供されており,Java RMIを使っているアプリケーションとCORBA準拠のアプリケーションも相互に利用できるようになっている。
JDBC(Java DataBase Connectivity)
データベースにアクセスするためのAPI。JDBC-ODBCブリッジと呼ばれる機能(dllファイルとして提供されるデバイスドライバ)を使うと,WindowsのODBCに対応しているデータベースをJavaから利用することもできる。
JNDI(Java Naming and Directory Interface)
ディレクトリサービスに接続するためのAPI。
EJB(Enterprise JavaBeans)
ビジネスロジックとして動作するJavaBeansを特にこう呼ぶ。Enterprise JavaBeansコンテナのなかに含まれ,サーバー側で動作する。Enterprise JavaBeansコンテナは,Windows DNAでいうところのMTSおよびCOM+に相当する。
JSP(JavaServer Pages)
JavaBeansを呼び出して,動的なWebページを作成するためのWebサーバーテクノロジ。Windows DNAにおけるActive Server Pages(ASP)に相当する。特別なタグ(“<%”と“>”で囲まれたもの)を含むHTMLドキュメントをJSPに与えると,そのタグで囲まれた部分がJSP側で解析され,適当なJavaBeansを呼び出して,その結果をWebページ内に埋め込むことができる。たとえば,JDBCを使ってデータベースを参照するようなJavaBeansを作り,それを呼び出すHTMLドキュメントを置けば,データベースの内容を埋め込んだWebページをユーザーに返すことができる。
 最近では,JSPからServletを呼び出し,さらにそのServletからEJBを呼び出す,という開発手法も推奨されている。この場合,JSPには主にページのコンテンツとデザインを,Servletには入力処理の制御を,EJBには業務処理の実体を,それぞれ実装する。このようにすると,JSPの開発はWebコンテンツを美しく作成する「コンテンツデザイナ」に,Servletの開発はWebの仕組みをよく知っている「インフラ技術者」に,EJBの開発は業務内容に精通した「アプリケーション技術者」に,それぞれ任せることができ,生産性の向上に貢献する。
Servlet
Webサーバー上から,Javaで作成されたアプリケーションを呼び出すために定義されたAPI。本稿の執筆時点において,Webサーバー上でクライアントの要求を処理するプログラム(CGI:Common Gateway Interface)は,PerlやC言語などで書かれているものが多い。Servletは,CGIをJavaで記述できるようにするものである。
JMS(Java Message Service)
アプリケーション間のメッセージ交換機能を提供するAPI。メッセージをキュー(待ち行列)に入れて通信するような非同期の通信機能などが提供される。Windows DNAにおけるMSMQに相当する。
JavaMail
Javaで電子メールを送受信するためのAPI。IMAP(Internet Message Access Protocol)やSMTP(Simple Mail Transfer Protocol)のほか,アドインとしてPOP3(Post Office Protocol Version 3)もサポートされる。
JTA(Java Transaction API)
Javaのデータベース処理においてトランザクション処理を実装するためのAPI。
JTS(Java Transaction Service)
Javaのデータベース処理においてトランザクション処理をするためのサービス。JTAを隠蔽したコンポーネントであり,データベースエンジンの種別を気にすることなく統一化された手法でトランザクション処理を実現する。

 J2EEのテクノロジを使うと,たとえばFig.1-16に示す構成のN階層アプリケーションを構築することができる。

Fig.1-16 J2EEを使ったアプリケーションの構築例
fig.1-16

 Fig.1-16に示すアプリケーションの構築例をWindows DNAで置き換えてみると,Fig.1-17のようになる。

Fig.1-17 Windows DNAによるN階層モデル
fig.1-17

 Javaを使ったN階層アプリケーションを構築する一番のメリットは,JavaがOSに依存しない言語であるため,さまざまなOSで動作するアプリケーションを提供できるという点にある。

 また,J2EEでは,Java IDLという言語でオブジェクト内のメソッドやプロパティを定義(これをインタフェースと呼ぶ)することにより,(Java以外の言語で書かれた)CORBA準拠のほかのアプリケーションと連携して利用できるようになる。

 CORBAとは,オブジェクト管理グループ(OMG:Object Management Group)が策定した,分散環境でオブジェクトを呼び出す仕様のことである。本稿の執筆時点でOMGに参加している企業や団体などは600を超え,CORBAに準拠した製品同士の相互接続実験などを試みている。そのため,アプリケーションがCORBAを正しくサポートしているということは,ほかのさまざまなシステムと連携して利用できる可能性があるということを意味する。

 そういった意味から,さまざまなプラットフォームが混在する環境や,Windowsプラットフォーム以外の既存システムと連携して動作するアプリケーションを構築しなければならない場合には,Windows DNAではなく,Java,そしてCORBAの利用を検討するのもよいだろう。

prev Chapter 1 11/11