Java EE プラットフォームについて

2. JavaEE プラットフォームについて

この章では、企業向けアプリケーション開発の背後にある基本的な概念について説明し、
アプリケーションサーバーがJavaEEコンテナの積算であることを例を挙げて説明します。

2.1 企業向けアプリケーションの概要

この節では、企業向けアプリケーションとその設計方法について説明します。

上記のとおり、JavaEE プラットフォームは、開発者が大規模で多層的で拡張性が高く
信頼性の高い、セキュアなネットワークアプリケーションを作成できるように設計されています。

そのようなアプリケーションの略称は、大企業が直面する問題を解決するために設計された「エンタープライズアプリケーション」です。

エンタープライズアプリケーション(企業向けアプリケーション)は、大企業、代理店、および政府機関には便利です。

しかしながら、エンタープライズアプリケーションの利点は、近年ますますネットワーク化された世界中の個々の開発者や小規模組織にとっても役に立ちます。

セキュリティと高い信頼性の兼ね備えた強力な企業向けのアプリケーションの機能は、複雑になることがよくあります。

JavaEEプラットフォームでは、開発モデル、API、および実行環境を提供することで、開発者が機能作成に集中できるように、企業向けのアプリケーション開発の煩雑さを軽減します。

2.1.1 階層型アプリケーション

多層アプリケーションでは、アプリケーションの機能を階層と呼ばれる独立した機能領域に分けます。

通常、多層アプリケーションには、クライアント層、中間層、およびデータ層(エンタープライズ情報システム層と呼ばれることもある)があります。

クライアント層は、中間層に要求を行うクライアントプログラムで構成されています。

中間層は、Web層とビジネス層に分割され、クライアント要求を処理してアプリケーションデータを処理し、データ層の永続データストアに格納します。

JavaEEアプリケーション開発では、中間層に集中して、企業向けアプリケーション開発をより簡単に、より堅牢に、そしてよりセキュアにします。

2.1.1.1 クライアント層

クライアント層は、JavaEEサーバーにアクセスするアプリケーションクライアントで構成されます。

通常はサーバーとは異なるマシンに配置されます。

クライアントはサーバーに要求を投げます。
サーバーは要求を処理し、クライアントに応答を返します。
多くの異なる種類のアプリケーションがJavaEEクライアントになることができ、常にJavaアプリケーションであるとは限りません。

クライアントは、ウェブブラウザ、スタンドアローンアプリケーション、または他のサーバーでもよく、JavaEEサーバーとは異なるマシン上で動作します。

2.1.1.2 Web層

Web層は、クライアントとビジネス層の相互座用を処理するコンポーネントで構成されています。

主なタスクは次のとおりです。

  • クライアントの様々なフォーマットのコンテンツを動的に生成する。
  • クライアントインタフェースから、ユーザーの入力を収集し、ビジネス層のコンポーネントから適切な結果を戻す。
  • クライアント上の画面またはページの遷移を制御する。
  • ユーザーのセッションのデータの状態を維持する。
  • いくつかの基本ロジックを実行し、マネージドBeanに一時的にデータを保持する。

表2-1 に、JavaEE アプリケーションのWeb層で使用される主要なJavaEEテクノロジの一部を示します。

表2-1 Web層のJavaEEテクノロジ

技術 目的
JavaServer Facesテクノロジ Faceletsページと呼ばれるXHTMLページにUIコンポーネント(フィールドやボタンなど)を含めることができるWebアプリケーション用のユーザーインタフェースコンポーネントフレームワーク。UIコンポーネントのデータを変換して検証します。UIコンポーネントのデータをサーバー側のデータストアに保存します。コンポーネントの状態を維持する。
EL式 FaceletsページでJavaEEコンポーネントを参照するために使用される標準タグのセット
Servlet リクエストを動的に処理し、通常はHTMLページ用のレスポンスを生成するJavaプログラミング言語のクラス
JavaEEのコンテキストと依存性の注入 開発者がエンタープライズBeanをJavaServerFacesテクノロジと共にWebアプリケーションで使用を容易にする一種のコンテキストサービス
2.1.1.3 ビジネス層

ビジネス層は、アプリケーションのビジネスロジックを提供するコンポーネントで構成さてている。ビジネスロジックは、金融業界やECサイトなどの特定のビジネスドメインに機能を提供するコードです。適切に設計されたエンタープライズアプリケーションでは、ビジネス層コンポーネントに中核的な機能が存在します。

次のJavaEEテクノロジは、JavaEEアプリケーションのビジネス層で使用されるテクノロジの一種です。

2.1.1.4 エンタープライズ情報システム層

エンタープライズ情報システム層(EIS)は、データベースサーバー、エンタープライズリソースプランニングシステム、およびメインフレームなどの他のレガシーデータソースで構成されています。

これらのリソースは、通常JavaEEサーバーとは別のマシンに配置され、ビジネス層のコンポーネントによってアクセスされます。

JavaEEアプリケーションでは、次のJavaEEテクノロジを使用して、EIS層にアクセスします。

2.2 JavaEEサーバーとコンテナ

JavaEEサーバーは、JavaEEプラットフォームAPIを実装し、標準のJavaEEサービスを提供するサーバーアプリケーションです。

JavaEEサーバーは、ウェブサーバーがウェブページをウェブブラウザに提供するのと同じように、アプリケーションデータをクライアントに提供できるため、アプリケーションサーバーと呼ばれることもあります。

JavaEEサーバーは、複数層のアプリケーション層に対応する複数のアプリケーションコンポーネントタイプをホストします。JavaEEサーバーは、コンテナ形式でこれらのコンポーネントにサービスを提供します。

JavaEEコンテナは、コンポーネントとそのコンポーネントをサポートするためにプラットフォームによって提供される下位レベルの機能とその間のインタフェースです。コンテナの機能はプラットフォームによって定義され、各コンポーネントタイプによって異なります。それにもかかわらず、サーバーは様々なコンポーネントタイプを連携させて、企業用のアプリケーションの機能を提供します。

2.2.1 Webコンテナ

Webコンテナは、WebコンポーネントとWebサーバー間のインタフェースです。
WebコンポーネントサーブレットまたはJava Server Faces Facletsページです。

コンテナは、コンポーネントのライフサイクルを管理し、アプリケーションコンポーネントの要求をディスパッチ(振り分ける)し、現在の要求に関する情報などのコンテキストデータへのインタフェースを提供します。

2.2.2 EJBコンテナ

EJBコンテナは、JavaEEアプリケーション内のビジネスロジックを提供するEJBエンタープライズJavaBeans)とJavaEEサーバー間のインタフェースです。

EJBコンテナは、JavaEEサーバー上で実行され、アプリケーションのEJBの実行を管理します。

2.2.3 アプリケーションクライアントコンテナ

アプリケーションクライアントコンテナは、JavaEEアプリケーションクライアント(JavaEEサーバーコンポーネントを使用する特別なJavaSEアプリケーション)とJavaEEサーバーとの間のインタフェースです。

アプリケーションクライアントコンテナは、クライアントマシン上で実行され、クライアントアプリケーションとクライアントが使用するJavaEEサーバーコンポーネントと間のゲートウェイです。