Java EE - それは何ですか?
Java EE、Java SE 上に構築されたプラットフォームであり、大規模で多層のスケーラブルで信頼性の高い安全なネットワーク アプリケーションを開発および実行するための API とランタイム環境を提供します。このようなアプリケーションは、大企業が直面する問題を解決するため、エンタープライズ アプリケーションと呼ばれます。ただし、このようなアプリケーションや Java EE が提供する利点から恩恵を受けることができるのは、大企業や政府機関だけではありません。Java EE プラットフォームが提供するソリューションは、個々の開発者や小規模組織にとって便利であり、場合によっては単に必要な場合もあります。Java EE開発
Java EE は、1998 年に設立された Java Community Process (JCP) を通じて開発されました。これにより、関係者は Java 言語プラットフォーム仕様の将来のバージョンの策定に参加できます。このプロセスの基礎となるのは、Java プラットフォームに追加することが提案されている仕様とテクノロジを説明する正式な文書である JSR (Java Specific Request) です。このようなリクエストは、コミュニティのメンバー、つまり一般の開発者や企業によって行われます。後者には、Oracle、Red Hat、IBM、Apache などが含まれます。それらの。彼らは、Java に含めたいと考えている新しい機能や便利な機能を検討のために提案します。そして投票が行われ、それに基づいて次のバージョンに何を含めるかが決定されます。Java EE のバージョン履歴は次のようになります。- J2EE 1.2 (1999 年 12 月)
- J2EE 1.3 (2001 年 9 月)
- J2EE 1.4 (2003 年 11 月)
- Java EE 5 (2006 年 5 月)
- Java EE 6 (2009 年 12 月)
- Java EE 7 (5月)
- Java EE 8 (2017 年 8 月)
- ジャカルタ EE 8 (2019 年 9 月)
Java EEアプリケーションアーキテクチャ
短い紹介。理解を容易にするために、Java EE アプリケーションの構造と、今後使用するいくつかの用語について説明します。Java EE アプリケーションには、次の 2 つの重要な特性を持つ構造があります。- まずはマルチレベル。Java EE アプリケーションは多層になっており、これについては後で詳しく説明します。
- 2番目に、ネスティング。Java EE サーバー (またはアプリケーション サーバー) があり、その中にコンポーネント コンテナがあります。これらのコンテナには (ビンゴ!) コンポーネントが格納されています。
アプリケーションレベル
多層アプリケーションは、機能原則に従って分離されたモジュール (レベル、レイヤー) に分割されたアプリケーションです。通常 (Java EE 開発のコンテキストを含む)、エンタープライズ アプリケーションは 3 つのレベルに分けられます。- クライアント;
- 平均レベル;
- データアクセスレベル。
-
クライアント層は、Java EEサーバー(中間層)にデータを要求するアプリケーションです。次に、サーバーはクライアントのリクエストを処理し、それに応答を返します。クライアント アプリケーションは、ブラウザー、スタンドアロン アプリケーション (モバイルまたはデスクトップ)、またはグラフィカル インターフェイスを持たないその他のサーバー アプリケーションにすることができます。
-
中間レベルは、Web レベルとビジネス ロジック レベルに分かれています。
-
Web レイヤーは、クライアントとビジネス ロジック レイヤー間の対話を提供するいくつかのコンポーネントで構成されます。
次の Java EE テクノロジーが Web レベルで使用されます。
- JavaServer Faces テクノロジー (JSF)。
- Java サーバー ページ (JSP)。
- 式言語 (EL);
- サーブレット。
- Java EE (CDI) のコンテキストと依存関係の挿入。
-
ビジネス ロジック層は、アプリケーションのすべてのビジネス ロジックを実装するコンポーネントで構成されます。ビジネス ロジックは、特定のビジネス領域 (金融業界、銀行業務、電子商取引) のニーズをカバーする機能を提供するコードです。このレベルはシステム全体の核心と考えることができます。
このレベルに関係するテクノロジー:
- エンタープライズ JavaBeans (EJB)。
- JAX-RS RESTful Web サービス。
- Java Persistence API エンティティ。
- Java メッセージ サービス。
-
-
データアクセスレベル。このレベルは、エンタープライズ情報システム (EIS) のレベルと呼ばれることもあります。EIS は、さまざまなデータベース サーバー、ERP (Enterprise Resource Planning) エンタープライズ リソース プランニング システム、およびその他のデータ ソースで構成されます。ビジネス ロジック層は、データを取得するためにこの層にアクセスします。
このレベルでは、次のようなテクノロジーを見つけることができます。
- Java データベース接続 API (JDBC)。
- Java 永続性 API。
- Java EE コネクタ アーキテクチャ。
- Java トランザクション API (JTA)。
アプリケーションサーバー、コンテナ、コンポーネント
Wikipedia から Java EE の定義を見てみましょう。Java EE は、Java 言語の仕様と関連ドキュメントのセットであり、中規模および大企業のタスクのためのサーバー プラットフォームのアーキテクチャを記述しています。この文脈における「一連の仕様」の意味をよりよく理解するために、Java インターフェースで類推してみましょう。Java インターフェイス自体には機能がありません。それは単に、いくつかの機能が実装されるいくつかの契約を定義するだけです。ただし、他のクラスはインターフェイスを実装します。さらに、1 つのインターフェイスに複数の実装を含めることができ、それぞれの実装は細部で互いに異なる場合があります。仕様も全く同じです。裸の Java EE は単なる仕様のセットにすぎません。これらの仕様は、さまざまな Java EE サーバーによって実装されます。Java EE サーバーは、Java EE プラットフォーム API を実装し、標準の Java EE サービスを提供するサーバー アプリケーションです。Java EE サーバーは、アプリケーション サーバーと呼ばれることもあります。サーバー データにはアプリケーション コンポーネントを含めることができ、各コンポーネントはマルチレベル階層内の独自のレベルに対応します。Java EE サーバーは、コンテナの形式でこれらのコンポーネントにさまざまなサービスを提供します。コンテナは、コンテナがホストするコンポーネントと、そのコンポーネントをサポートするプラットフォームに依存しない低レベルの機能との間のインターフェイスです。コンテナは、ホストするコンポーネントに特定のサービスを提供します。たとえば、開発ライフサイクル管理、依存関係の注入、同時実行性などです。コンテナは技術的な複雑さを隠し、移植性を高めます。Java EE には4 つの異なるタイプのコンテナがあります。-
アプレット コンテナは、ほとんどのブラウザに実装されています。アプレットを開発するときは、コンテナが安全な環境を提供しながら、アプリケーションのビジュアル面に集中できます。
-
アプリケーション クライアント コンテナ (ACC) には、Java SE アプリケーションでのインジェクション、セキュリティ管理、ネーミング サービスなどの機能の実装に必要な Java クラス、ライブラリ、およびその他のファイルのセットが含まれています。
-
Web コンテナは、Web コンポーネント (サーブレット、EJB Lite コンポーネント、JSP ページ、フィルター、リスナー、JSF ページ、および Web サービス) を管理および実行するためのコア サービスを提供します。これは、サーブレットのインスタンス化、初期化、呼び出し、および HTTP および HTTPS プロトコルのサポートを担当します。このコンテナは、Web ページをクライアント ブラウザに提供するために使用されます。
-
EJB (Enterprise Java Bean) コンテナは、アプリケーションのビジネス ロジック層を含む EJB モデル コンポーネントの管理と実行を担当します。新しい EJB Bean エンティティを作成し、そのライフサイクルを管理し、トランザクション、セキュリティ、同時実行、配布、ネーミング、非同期呼び出し機能などのサービスを提供します。
-
アプレットは、ブラウザ内で実行されるグラフィカル ユーザー インターフェイス (GUI) アプリケーションです。豊富な Swing API を活用して、強力なユーザー インターフェイスを作成します。
-
アプリケーションはクライアント側で実行されるプログラムです。これらは通常、グラフィカル ユーザー インターフェイス (GUI) であり、バッチ処理に使用されます。
-
Web アプリケーション (サーブレットとそのフィルター、Web イベント リスナー、JSP および JSF ページで構成) - Web コンテナー内で実行され、Web クライアントからの HTTP リクエストに応答します。サーブレットは、SOAP および RESTful Web サービス エンドポイントもサポートします。
-
エンタープライズ アプリケーション (Enterprise Java Beans、Java Message Service、Java Transaction API、非同期呼び出し、Time Services で構築されたもの) は、EJB コンテナ内で実行されます。コンテナ管理の EJB は、トランザクション ビジネス ロジックを処理します。これらには、ローカルまたは RMI (または SOAP および RESTful Web サービスの場合は HTTP) を介してリモートでアクセスできます。
テクノロジー
そこで、アーキテクチャを整理しました。全体的な構造が明確である必要があります。アーキテクチャ コンポーネントを説明する過程で、EJB、JSP などのいくつかの Java EE テクノロジに触れました。それらを詳しく見てみましょう。以下の表は、主にクライアント レベルで使用されるテクノロジーを示しています。テクノロジー | 目的 |
---|---|
サーブレット | クライアント要求を動的に処理し、応答 (通常は HTML ページ) を生成する Java クラス。 |
Java サーバー フェイス (JSF) | ユーザー インターフェイスを備えた Web アプリケーションを構築するためのフレームワーク。ページにユーザー インターフェイス コンポーネント (フィールドやボタンなど) を含め、これらのコンポーネントを変換および検証し、このデータをサーバー側のストレージに保存できます。 |
Java Server Faces Facelets テクノロジー | JSP ページの代わりに XHTML ページを使用する JSF アプリケーションのサブタイプです。 |
Java サーバー ページ (JSP) | サーブレットにコンパイルされるテキスト ドキュメント。静的ページ (HTML ページなど) に動的コンテンツを追加できます。 |
Java サーバー ページ標準タグ ライブラリ (JSTL) | JSP ページのコンテキストでコア機能をカプセル化するタグ ライブラリ。 |
表現言語 | JSP および Facelets ページで Java EE コンポーネントにアクセスするために使用される標準タグのセット。 |
Java EE (CDI) のコンテキストと依存関係の注入 | コンポーネントのライフサイクルを管理し、安全な方法でコンポーネントをクライアント オブジェクトに挿入するために、Java EE コンテナによって提供される一連のサービスを表します。 |
Java Beans コンポーネント | アプリケーション ページの一時データ ストレージとして機能するオブジェクト。 |
テクノロジー | 目的 |
---|---|
Enterprise Java Beans (エンタープライズ Bean) コンポーネント | EJB は、アプリケーションのコア機能を含むマネージド Bean です。 |
JAX-RS RESTful Web サービス | RESTアーキテクチャスタイルに準拠したWebサービスを開発するためのAPIです。 |
JAX-WS Webサービスエンドポイント | SOAP Web サービスを作成および利用するための API。 |
Java Persistence API (JPA) エンティティ | データ ストア内のデータにアクセスし、そのデータを Java プログラミング言語オブジェクトに変換したり、その逆に変換したりするための API。 |
Java EE管理対象Bean | アプリケーションのビジネス ロジックを提供しますが、EJB のトランザクション機能やセキュリティ機能を必要としないマネージド Bean。 |
Javaメッセージサービス | Java Message Service (JMS) API は、Java EE アプリケーション コンポーネントがメッセージを作成、送信、受信、読み取りできるようにするメッセージング標準です。これにより、コンポーネント間の分散型で信頼性の高い非同期通信が保証されます。 |
テクノロジー | 目的 |
---|---|
Java データベース接続 API (JDBC) | データ ストアにアクセスし、データ ストアからデータを取得するための低レベル API。JDBC の一般的な使用法は、特定のデータベースに対する SQL クエリを作成することです。 |
Java 永続性 API | データ ストア内のデータにアクセスし、そのデータを Java プログラミング言語オブジェクトに変換したり、その逆に変換したりするための API。JDBC と比較してはるかに高レベルの API。JDBC の複雑さをすべて内部で開発者から隠します。 |
Java EE コネクタのアーキテクチャ | 次のような他の企業リソースを接続するための API。
|
Java トランザクション API (JTA) | 分散トランザクションや複数のデータ ストアにわたるトランザクションなどのトランザクションを定義および管理するための API。 |
GO TO FULL VERSION