アプリケーション・サーバーは,Web型3階層システムのミッドティアを構成するミドルウエアである。データベース・サーバーとWebサーバーの間に入る。実装としてはJava EE環境が主流であり,ServletコンテナとEJBコンテナを中核とする。最近では,Web Service機構や業務プロセス処理など,Javaアプリケーションとして書かれたSOAのための各種ミドルウエアが充実してきた。(日川 佳三=ITpro

 「WebブラウザからWebサーバーにアクセスし,Webサーバーのバックエンドで動作するデータベースを検索して結果を返してもらい,Webブラウザに表示する」---。このように,Webサーバーをインタフェースに用いた一連の業務処理を実行するための基盤ミドルウエアを,アプリケーション・サーバーと呼ぶ。現在では,Webブラウザから明示的に使う業務システムの構築基盤としてだけでなく,SOA(サービス指向アーキテクチャ)の代表的な基盤ソフトの実装として,重要性が増している。

 アプリケーション・サーバーは,業務システムの構築手段として一般的な3階層システムにおけるミッドティアに属するソフトウエアである(図1)。3階層とは,データを格納する(1)データベース・サーバー(バックエンド),データベースにアクセスするなどの業務ロジックを担当したり,一連の業務プロセスを実行するといった(2)アプリケーション・サーバー(ミッドティア),画面表示や外部インタフェースを司る(3)Webサーバー/Webブラウザ(フロントエンド),という3階層である。

図1●アプリケーション・サーバーは3階層システムの構成要素
図1●アプリケーション・サーバーは3階層システムの構成要素
アプリケーション・サーバーは,3階層システムのミッドティア(真ん中)に属する。アプリケーション・サーバーが画面表示フロントエンドであるWebサーバーを兼ねる場合もある。

Web連携機構と画面テンプレートから利用が始まった

 Webサーバー・ソフトはもともと,CERN_httpdのCGI(Common Gateway Interface)や米Netscape CommunicationsのNSAPI,米MicrosoftのISAPIといったWeb連携インタフェースを持っていた。従来,ユーザーはこうしたインタフェースを用いてC言語やPerl,シェル・スクリプト,Visual BasicなどでWeb連携アプリケーションを開発してきた。当時からPHPなどのようなWebアプリ開発を目的としたスクリプト言語もあったが,初期のWeb開発では画面とロジックの分離が難しいなど,ソフトウエア開発のためのソフトウエア部品(フレームワーク)がそろっていなかった。

 その後,米Sun MicrosystemsのJava言語環境や米MicrosoftのCOM(Component Object Model)といった,Webに向いたアプリケーション開発/実行環境が整備されていき,業務ロジックとHTML画面の分離などを狙ったソフトウエア基盤が次々に登場する。米Microsoftは,ASP(Active Server Pages)と呼ぶISAPIの背後で用いる画面作成機構を開発。JavaはServlet(サーブレット)と呼ぶWeb連携機構と,Servletの上位に位置する画面テンプレート機構であるJSP(Java Server Pages)を実装した。MicrosoftやJava以外にも,独自の言語で画面テンプレート・エンジンなどを製品化したベンダーも多い。

J2EE(現Java EE 5)規格でAPサーバーの基盤固まる

 アプリケーション・サーバーという言葉が定着し,現在の形を成すようになったのは,企業情報システム構築向けのJavaの規格であるJ2EE(Java 2 Platform, Enterprise Edition)の登場による。J2EEは,Web連携のServlet/JSP,業務ロジック実行のEJB(Enterprise JavaBeans),メッセージ・キューのJMS(Java Message Service)など各種の企業向け規格で成り立つ。Java RMI(Remote Method Invocation)やCORBA IIOP(Internet Inter-ORB Protocol)を用いた分散処理も可能である。現在のバージョンは,Java Platform, Enterprise Edition 5(Java EE 5)と呼ばれる。

 Java EE規格に則ったソフトウエアは,特にJavaアプリケーション・サーバーと呼ばれ,アプリケーション・サーバーの主流を成している。ベンダー各社が製品化/出荷している。アプリケーション・サーバー専業のソフトウエア・ベンダーのほか,データベース・サーバー・ベンダー,SIベンダー,EAI(エンタープライズ・アプリケーション統合)ベンダーなどが自社ブランドのJavaアプリケーション・サーバーを出荷している。

 アプリケーション・サーバー・ベンダー各社はまた,オープン・ソースの流行というトレンドに乗って,技術のブラッシュ・アップや製品拡充を図ってきている。例えば,Apache Jakarta Projectと呼ぶオープン・ソース開発コミュニティに参加するといった具合だ。Apache Jakarta Projectの成果物としては,代表的なところで,後述するServletコンテナ型アプリケーション・サーバーのTomcatや,Servletを前提に画面遷移の管理機構を汎用部品化したMVC(Model-View-Controller)フレームワークのStrutsなどがある。