java platform, enterprise edition 6の概要 · 2020. 7. 13. · oracle ホワイト・ペーパー...

18
Oracle ホワイト・ペーパー 2010 4 Java Platform, Enterprise Edition 6 の概要

Upload: others

Post on 19-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー

2010 年 4 月

Java Platform, Enterprise

Edition 6 の概要

Page 2: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

概要 ..................................................................................................................................... 1

はじめに .............................................................................................................................. 1

Java Platform, Enterprise Edition 6 の概要 ......................................................................... 3

柔軟性 ................................................................................................................................. 3

プロファイル ................................................................................................................. 4

プルーニング ................................................................................................................. 6

開発の生産性と拡張性 ........................................................................................................ 6

Servlet 3.0 ...................................................................................................................... 7

JAX-RS 1.1(JSR 311) ............................................................................................... 7

EJB 3.1(JSR 318) ..................................................................................................... 8

Java Persistence API(JPA)2.0(JSR 317) ............................................................. 9

Contexts and Dependency Injection(CDI)

for Java EE(JSR 299) ............................................................................................. 10

JavaServer Faces(JSF)2.0(JSR 314) ................................................................ 10

Bean Validation 1.0(JSR 303) ....................................................................................... 11

Connector Architecture 1.6(JSR 322) ...................................................................... 11

パッケージ ................................................................................................................... 12

Oracle GlassFish Server 3 ................................................................................................ 12

統合開発環境 .................................................................................................................... 13

結論 ................................................................................................................................... 14

付録 1:参考資料 .............................................................................................................. 15

Page 3: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

1

概要

Java Platform, Enterprise Edition 6(Java EE 6)には、エンタープライズ・アプリケーションや Web ア

プリケーションの開発およびデプロイを簡単にする新機能が導入されています。Java EE 6 は開発エクス

ペリエンスを簡素化し、革新的なオープンソース・フレームワークを取り入れているだけでなく、標準ベー

スの軽量 Web アプリケーション向けに包括的な Web Profile を提供するとともに、時代遅れになったテ

クノロジーや使用されないテクノロジーをプラットフォームから取り除くための正式なプロセスを開始

します。

はじめに

Java EE は堅牢性、Web サービス、容易なデプロイに焦点を合わせたエンタープライズ・アプリケーション

のデプロイメント・プラットフォームとして、長年にわたって柔軟な進化を遂げてきました。Java Community

Process(JCP)を介して継続的にユーザーに定義されてきた Java EE は、エンタープライズ IT における

普遍的な標準を表現することで、サーバーを中心とした多層アプリケーションの開発、デプロイ、管理を

容易にします。Java EE 5 では開発の効率化に焦点を合わせて、アノテーション、Enterprise JavaBeans

(EJB)3.0 のビジネス・コンポーネント開発モデル、新規および更新された Web サービスが導入され、

永続化モデルが改善されましたが、Java EE 6 では、軽量 Web アプリケーションへの対応を強化するた

め、開発プロセスがさらに効率化され、プラットフォームの柔軟性がいっそう向上しています。Java EE

6 は新たなテクノロジーを重視し、オープンソース・フレームワークを取り入れ、古くなったテクノロジー

のプルーニング・プロセスを開始します。

Java 2 Platform, Enterprise Edition(J2EE)はその導入以来何年にもわたって、新しいテクノロジー

やメソドロジーに対応するために発展を続けてきました。J2EE は柔軟性を高めることで、プラット

フォーム全体のエンタープライズ・アプリケーション対応を続けながら、より軽量で集中型のアプリ

ケーションの開発およびデプロイを簡素化しています。特定のタスクにとってはプラットフォームが

過剰になる場合もあることが認識されたため、規模を適正化するこの取組みによって、ターゲットの

アプリケーションや環境に焦点を合わせた、より柔軟で軽量な開発およびデプロイ環境が構築されて

います。

Page 4: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

2

Java EE 6 の柔軟性を高める一因となっているのがプロファイルです。プロファイルの目的は、さま

ざまなユースケースに適した組合せを実現するために仕様を分離することにあります。たとえば、Web

Profile は Web アプリケーションに必要なテクノロジーのみを 1 つにまとめたものです。また、追加

で検討されているプロファイルは JCP 経由で作成される予定です。

プルーニングは、使用が推奨されない場合と同様に、EJB Entity Beans や Java API for XML Registries

(JAXR)などの時代遅れになったテクノロジーや未使用テクノロジーを排除します。プルーニングは

系統的な手段を通じて、将来的なリリースでテクノロジーが仕様から削除されることを組織に警告し

ます。

オープンソースのライブラリやフレームワークにおよぶ Java EE 6 は、フレームワークをコンテナま

たはアプリケーションに"ドラッグ・アンド・ドロップ"するゼロ構成を実現することで、オープンソー

ス・イノベーションを取り入れています。

アプリケーションの開発とデプロイを簡素化するため、Java EE 6 では、Java EE 5 で導入されたア

ノテーションの使用がプラットフォーム内のさまざまな仕様に対して拡大されています。さらに、Java

EE 6 を使用して開発およびデプロイされたアプリケーションは、一般的に以前のバージョンよりも構

成作業が少なくなります。

Java EE 6 は標準、透明性、コミュニティ参画によるメリットを引き続き実現しながら、柔軟性および実

装時の選択肢を提供し、投資を保護します。このホワイト・ペーパーでは、Java EE 6 の技術概要に加え

て、開発生産性の向上、プラットフォームの簡素化、モジュール性と拡張性の強化に対する重点について

説明します。

Page 5: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

3

Java Platform, Enterprise Edition 6 の概要

現在の開発者は、サーバー・サイド・テクノロジーのスピード、セキュリティ、信頼性を活用できる、ポー

タブルな分散トランザクション・アプリケーションの必要性を認識しています。エンタープライズ・アプ

リケーションは、より多くのリソースをより迅速に提供しながら、尐ないコストで設計、構築、生成され

なければなりません。Java EE を使用すると、Java エンタープライズ・アプリケーションの開発がこれま

でにないほど簡単かつ迅速に実行できます。

Java EE は、サーバー中心の多層アプリケーションを開発、デプロイ、および管理する際のコストと複雑

さを大幅に削減するテクノロジーの統合セットを提供します。Java Platform, Standard Edition(Java SE)を

ベースに構築された Java EE は、安定性とパフォーマンスに優れ、セキュアで完全な Java アプリケーショ

ンの構築機能を提供します。図 1 に、Java EE のメジャー・リリースにおけるおもな焦点を示します。Java

EE 6 では、開発とデプロイが簡素化および柔軟化されており、プロファイルが導入されていることが分か

ります。

図 1.Java EE 6 では、より柔軟な環境の提供におもな重点が置かれています。

Java EE プラットフォームが提供する強力な API セットは、開発期間を短縮し、アプリケーションの複雑

さを軽減すると同時に、アプリケーション・パフォーマンスを向上します。このホワイト・ペーパーでは、

Java EE 6 をより柔軟な開発およびデプロイメント・プラットフォームにするための機能について説明す

るとともに、この重点的なテクノロジー・セットがどのようにしてアプリケーション・シナリオに適用さ

れるかについて説明します。取り上げるテクノロジーには、プロファイル、プルーニング、新しい開発容

易性機能、およびその他の新機能が含まれます。

柔軟性

エンタープライズ・アプリケーションをデプロイするための堅牢で成熟したプラットフォームとして、Java

EE 6 はより多くの状況への適応を可能にする新機能を提供します。柔軟性を強化する機能には、プロファ

イルとプルーニングが含まれます。プロファイルを使用すると、JCP プロセスを使用して、より集中型の

Page 6: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

4

標準準拠ソリューションを構築できます。一方で、プルーニングは時代遅れのテクノロジーや関連性の低い

テクノロジーを削減するための系統的なメカニズムであるため、プラットフォームの簡素化に貢献します。

プロファイル

Java EE API のフル・セットの使用は適切でないアプリケーションが多数存在します。プロファイルを利

用すると、業種向けアプリケーションや頻繁に発生するユースケースなど、特定のアプリケーション種類

を対象にした Java EE プラットフォーム・テクノロジーの標準化セットをデプロイできます。プロファイ

ルの概念自体は目新しいものではありません。Java EE には、Java Platform, Micro Edition(Java ME)や

WS-I Basic Profile をはじめとする Web サービス標準などの各種ソースから得たエクスペリエンスが活用

されています。Java ME では、特定のデバイス・ランタイム環境にプロファイルが適用されています。

Java EE 6 で導入された Web Profile は、最新の Web アプリケーション開発を対象としています。Web Profile

は中小規模の Web アプリケーション構築向けに、トランザクション処理、セキュリティ、永続性管理機

能を提供します。図 2 の左側に示したように、開発者が Web アプリケーションを作成する際、Web コン

テナから始めて、後からデータ永続性などのテクノロジーを追加することはよくあることです。テクノロ

ジーが追加または更新されるたびに構成とデバッグが実施され、必要な機能性が実現されるまでこのプロ

セスが繰り返されます。その結果、標準化されていない複数のソリューション・スタックが生成され、作

成、統合、保守が困難になります。さらに、個別のテクノロジー・コンポーネントすべてに対してサポー

トを購入することは困難であり、非常に高いコストがかかる場合もあります。

図 2:Web Profile は、データベース・ドリブンな Web アプリケーション開発に必要なものすべてを提供します。

Java EE 6 では、これらの懸念が軽減されます。Web Profile は、ほとんどの Web アプリケーションの要件

を満たす、適度に完全なプラットフォーム(標準 API で構成)を標準で提供するよう設計されています。

Web Profile は安定した標準的基盤を提供しており、この基盤は革新的なオープンソース・フレームワーク

やその他のテクノロジーを使用して拡張できます。要件が変更された場合は、Web Profile からフル・プラッ

トフォームへも簡単に移行できます。その他のプロファイルの開発および承認も予定されており、Java EE

6 フル・プラットフォームのサブセットまたはスーパーセットのいずれかになる可能性もあります。表 1

に、Web Profile の構成機能を示します。

Page 7: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

5

表 1. Java EE 6 Web Profile と Java EE 6 フル・プラットフォーム

Java EE 6 Web Profile Java EE 6 フル・プラットフォーム

Servlet 3.0 Servlet 3.0

JavaServer Pages(JSP)2.2 JavaServer Pages(JSP)2.2

式言語(EL)2.2 式言語(EL)2.2

Debugging Support for Other Languages(JSR 045) Debugging Support for Other Languages(JSR 045)

Standard Tag Library for JavaServer Pages(JSTL)1.2 Standard Tag Library for JavaServer Pages(JSTL)1.2

JavaServer Faces(JSF)2.0 JavaServer Faces(JSF)2.0

Common Annotations for Java Platform 1.1(JSR 250) Common Annotations for Java Platform 1.1(JSR 250)

EJB Lite EJB 3.1

EJB 3.1 Lite

Java Transaction API(JTA)1.1 Java Transaction API(JTA)1.1

Java Persistence API(JPA)2.0 Java Persistence API(JPA)2.0

Bean Validation 1.0 Bean Validation 1.0

マネージド Bean 1.0 マネージド Bean 1.0

Interceptors 1.1 Interceptors 1.1

Contexts and Dependency Injection for the Java EE Platform 1.0

(JSR 299)

Contexts and Dependency Injection for the Java EE Platform 1.0

(JSR 299)

Dependency Injection for Java 1.0(JSR 330) Dependency Injection for Java 1.0(JSR 330)JMS1.1

JavaMail 1.4

Connector 1.6(JAX-WS、JAX-RS 1.1、JAX-RPC 1.1、JAXB 2.2、

および JAXR 1.0)

Java EE Management 1.1

Java EE Deployment 1.2

JACC 1.3

JASPIC 1.0

JSP Debugging 1.0

Web Services Metadata 2.0

SAAJ 1.3

Web Services 1.3

Page 8: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

6

プルーニング

仕様がプルーニングされると、その仕様は次のプラットフォーム・リリースで、必須コンポーネントでは

なくオプション・コンポーネントとなる可能性があります。時代遅れになった API や十分にサポートされ

ていない API、またはあまりデプロイされていない API を注意深くプルーニングすることで、Java EE は

使いやすく、拡張と改善の余地を残した軽量プラットフォームを実現します。プルーニングが JavaDoc 内

にマークされると、仕様がオプション候補であることが分かります。さらに具体的に言うと、このテクノ

ロジーは次のリリースでオプションとなり、その後のリリースでは削除される可能性があります。ただし、

ベンダーはプルーニングされた仕様の提供やサポートを続ける場合もあります。

プルーニングの候補は、Java EE Expert Group によって勧告されます。現在プルーニング過程にある仕様

には、以下の仕様が含まれます。

Java APIs for XML-based RPC(JAX-RPC、JSR 101)。この API は事実上、Java EE 5 のリリース時

に JAX-WS によって取って代わられています。

EJB Entity Bean(JSR 153:Enterprise JavaBeans 2.0 およびそれ以前の一部として定義)。

後継として Java Persistence API(JPA)が使用されています。

Java API for XML Registries(JAXR、JSR 93)。JAXR の後継はありませんが、使用は極めて限定的

です。

Java EE Application Deployment(JSR 88)。この仕様を採用しているベンダーは限定的です。

開発の生産性と拡張性

Java EE 6 は Java EE 5 で導入された開発容易性機能をさらに強化しており、アプリケーション開発を簡素

化することで開発者の生産性を向上しています。Java EE 6 でアノテーションを多用すると"plain old Java

object"(POJO)が増えて構成が減るため、作成、管理、保守する必要のある開発アーチファクトも減尐

します。Java EE 6 の開発容易性機能にはサーブレット内の Web フラグメント、EJB Lite、コネクタ内の

アノテーションが含まれており、EJB コンポーネントを Web モジュールに直接埋め込むことができるた

め、アプリケーションのパッケージが簡素化されます。これらを含む拡張機能によって簡素化された開発

環境では、開発期間が大幅に短縮され、開発生産性が向上します。

Java EE 6 に含まれるいくつかの新機能を使用すると、開発者はオープンソース・コミュニティから得ら

れるイノベーションを活用できます。拡張性と使いやすさの一例として挙げられるのが、Web フレーム

ワークのドラッグ・アンド・ドロップ設計メソドロジーによるゼロ構成です。Java EE 6 リリースでは、

サーブレット、サーブレット・フィルタ、およびコンテキスト・リスナーが自動的に検出および登録され

ます。Web フラグメントを含むプラグイン・ライブラリ Java Archive(JAR)ファイルなどの使いやすい

機能を提供することで、アプリケーション構成が簡素化されて構成エラーが削減されるため、ユーザー・

コミュニティはさらに生産性を強化できます。

ここからは、開発生産性とプラットフォーム拡張性に貢献する、おもな Java EE 6 テクノロジーおよびイ

ノベーションのいくつかについて概説していきます。

Page 9: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

7

Servlet 3.0

Servlet 3.0 仕様は Java EE 6 における重要な焦点です。Java EE 5 では、サーブレット・クラスと付属の web.xml

ファイル(構成メタデータを含む)が必要でした。Servlet 3.0 では、アノテーションを使用してサーブレッ

トを宣言できます。つまり、web.xml ファイルはもう必要ありません。Servlet 3.0 では web.xml を変更す

ることなく、簡単にサード・パーティ・ライブラリを追加できます(web.xml はオプションであり、必要

に応じて使用することもできます)。一例を挙げると、この機能を使用して、JavaServer Faces(JSF)2.0

が Oracle GlassFish Server 3 に統合されています。開発者は、セキュリティや依存性注入に関するその他の

アノテーションをサーブレットまたはフィルタから引き続き使用できます。

Web フラグメント

Servlet 3.0 では、コンテナが使用する各ライブラリの詳細を指定する Web フラグメント記述子が提供され

ています。Web フラグメントが実現するモジュール性により、web.xml デプロイメント・ディスクリプタ

を論理的に分割できるため、JSF、ICEfaces 2.0、Atmosphere などのフレームワーク情報を JAR ファイルに

追加できます。フレームワークの作成者が web.xml を編集する必要はなく、代わりにフレームワーク自体

に構成情報を事前定義することができます。

複数の Web フラグメントを作成することもできます。この場合、論理的にその一式が web.xml ファイル

全体として見なされます。web.xml ファイルを論理的に分割すると、コンテナに Web フレームワークを自

動登録できます。Web アプリケーションで使用される各 Web フレームワークは、web.xml ファイルを追

加編集しなくても、サーブレットやリスナーなどのすべての必要アーチファクトを 1 つの Web フラグメ

ント内に定義できます。

非同期処理

Servlet 3.0 では非同期処理に対するサポートが導入されたため、データベースまたはメッセージ接続から

の応答待機中のスレッド・ブロッキング・リクエストを回避できます。このサポートを使用すると、サー

ブレットはデータベースなどのリソースからの応答を待たずにスレッド処理を続行できます。サーブレッ

トを非同期としてマークするには、アノテーションを使用します。非同期処理サポートにより Ajax を利

用したサーブレットの使用が効率化され、最小限のサーバー・リソースでアプリケーション・ロードを拡

張する能力が強化されます。

JAX-RS 1.1(JSR 311)

Java API for RESTful Web Services(JAX-RS)1.1 仕様を利用すると、インターネット上のどこからでも、

URL を使用して Web リソース(データおよび機能を含む)にアクセスし、操作できます。このテクノロ

ジーでは、GET、PUT、POST、DELETEなどの慣れ親しんだコマンドを使用して、クライアントとサーバー

間で通信したり、これらのリソース表現を交換したりすることができます。

RESTful Web サービスは、REST アーキテクチャ・スタイル内に構築されます。RESTful アプローチを使用

した Web サービスの構築は、その軽量性と非常にシンプルなインタフェースにより、SOAP ベースのテク

Page 10: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

8

ノロジーに代わる手段として一般的になっています。たとえば、Oracle GlassFish Server 3 では、管理機能

と監視機能が RESTful サービスとして公開されているため、開発者は革新的なサービスを作成できます。

EJB 3.1(JSR 318)

EJB 3.0 仕様(Java EE 5 に含まれる)によって、EJB テクノロジーの使用が簡素化されます。このテクノ

ロジーの最新リリースである JSR 318:Enterprise JavaBeans 3.1(Java EE 6 で利用可能)ではこの簡素化が

さらに一歩進んでおり、一般的な使用パターンを反映した多数の改善が提供されています。次に、その例

を挙げます。

シングルトン:シングルトンはアプリケーションごとに一度インスタンス化される Session Bean であ

り、アプリケーション内の複数のコンポーネント間で共有できます。シングルトン Bean を利用する

と、1つのエンタープライズBeanコンポーネントに対する複数インスタンス間、またはアプリケーショ

ンに含まれる複数のエンタープライズ Bean コンポーネント間で簡単にステートを共有できます。シ

ングルトン Bean が実現する同時アクセスは、同期またはコンテナを使用することで管理できます。

シングルトン Bean はその他の EJB コンポーネントと同様に POJO であり、開発者はアノテーション

を使用してシングルトン Bean としてマークできます。

インタフェースのないビュー:これを利用すると、ローカルのビジネス・インタフェースを作成する

ことなく、1 つの Bean クラスのみを持つエンタープライズ Bean を指定できます。ローカル・インタ

フェースでは、クライアントに公開され、Bean クラス上に実装されるビジネス・メソッドが定義され

ます。インタフェースのないビューの動作は、EJB 3.0 のローカル・ビューと同じです(たとえば、参

照渡しやトランザクションおよびセキュリティ伝播など、その他のセマンティックもサポートされま

す)。このインタフェースは現在オプションであるため、別のビジネス・インタフェースを作成しな

くても、エンタープライズ Bean で同じ機能を提供できます。

Java Naming and Directory Interface(JNDI):このインタフェースを使用することで、EJB コンポー

ネントをグローバルにロケーティングすることができます。Java EE 6 はポータブルなグローバル JNDI

名を指定することで、複数の実装間における EJB の移植性を高めます。

非同期 Session Bean:Session Bean にアノテーションを使用して、非同期のメソッド呼出しをサポート

できます。EJB 3.1 以前は、Session Bean に対するメソッド呼出しは常に同期型でした。

埋込み可能 API:EJB 3.1 が提供する埋込み可能 API およびコンテナは、Java SE 環境(同じ Java 仮想

マシン[JVM])で使用できます。これにより、Java EE コンテナ外部での EJB コンポーネントのテ

ストが容易になります。

タイマー・サービス:EJB 3.1 アーキテクチャでは、あらゆる種類のエンタープライズ Bean(ステー

トフル Session Bean を除く)に対して、cron 的なスケジューリング(宣言的およびプログラム的の両

方)を実現する EJB タイマー・サービスが拡張されています。このサーバーは、アノテーションを使

用して実装されています。

EJB Lite

EJB コンポーネント・テクノロジーが提供する堅牢な機能は、一部のアプリケーションにとって実際は過

剰である場合があります。EJB Lite は、EJB テクノロジーが提供する機能のサブセットのみを必要とする

アプリケーションのニーズを満たすよう設計されています。EJB 3.1 API の標準化サブセットである EJB

Lite は、1 回限りの製品でも実装でもありません。EJB Lite を使用して開発されたアプリケーションは、

Page 11: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

9

Web Profile または Java EE 6 フル・プラットフォームのいずれかを実装したアプリケーション・サーバー

で実行できます。

EJB Lite を使用すると、EJB の全機能に精通していなくても、セキュアなトランザクション・ビジネス・

コンポーネントを簡単に開発できます。EJB Lite のベンダー実装は、EJB コンポーネントのフル実装より

もシンプルで、集中的になることが予想されています。EJB Lite は Web Profile にも含まれています。表 2

に、EJB Lite と EJB 3.1 の機能比較を示します。

表 2. EJB Lite と EJB 3.1 の機能比較

機能 EJB Lite EJB 3.1

ローカル Session Bean X X

宣言的セキュリティ X X

トランザクション(CMT/BMT) X X

インターセプタ X X

セキュリティ X X

Message-Driven Bean X

RMI/IIOP 相互運用性とリモート・ビュー X

EJB 2.x 下位互換性 X

タイマー・サービス X

非同期メソッド呼出し X

Java Persistence API(JPA)2.0(JSR 317)

永続性とは、オブジェクト・モデルがリレーショナル・データベース情報に対するアクセスと操作を仲介

する際に使用するテクニックです。JPA はリレーショナル・データから Java オブジェクトへのマッピン

グ方法の詳細を処理し、オブジェクト・リレーショナル・マッピングを標準化します。Java EE 5 で導入

された JPA は、Java EE アプリケーションと Java SE アプリケーション向けに POJO ベースの永続化モデ

ルを提供します。Java EE 6 では JPA が拡張されたことで、オブジェクト中心で基準に基づく動的なデー

タベース問合せを構築するための、より効果的で信頼できる(型指定の強力な)メソドロジーが推進され

ています。

オブジェクト・リレーショナル・マッピングの拡張:JPA 2.0 では、文字列や整数などの基本的なデータ

型のコレクションだけでなく、埋込み可能オブジェクトのコレクションをマッピングする機能が追加

されています。コレクションのマッピングは、新しいアノテーションによってサポートされています。

Java Persistence Query Language(JPQL)の拡張:NULLIF、VALUE などの新しい演算子が追加され

ており、問合せで CASE 式を使用できます。

Page 12: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

10

クライテリア API:型保証されたこの問合せメカニズムは、メタモデル概念に基づいて永続 Java オブ

ジェクトを検証します。静的アクセスと動的アクセスの両方を使用できます。文字列ベースのモデル

も使用できますが、型保証はされていません。

Contexts and Dependency Injection(CDI)for Java EE(JSR 299)

依存性注入は、コンポーネントが必要とするすべてのリソースに適用できるため、リソースの作成と検索

をアプリケーション・コードから効果的に隠すことができます。これを使用すると、Java EE コンテナは

アノテーションを使用して、その他の必須コンポーネントまたはリソースに対して自動的に参照を挿入で

きます。依存性注入は EJB コンテナ、Web コンテナ、およびアプリケーション・クライアントで使用で

きます。

以前は Web Bean として知られていた Context and Dependency Injection(CDI)は、既存の Java EE コンポー

ネント・モデルに依存性注入機能とコンテキスト管理機能を追加します。この機能を使用すると、プレー

ン JavaBeans、Session Bean、JSF マネージド Bean を交互に使用して、アプリケーションのステートを維

持できます。さらに、1 つのリクエスト、HTTP セッション、またはカンバセーションなど、特定のスコー

プに対してそれぞれの Bean を関連付けることができます。この場合、関連付けられたスコープに従って、

アプリケーション・ライフ・サイクルの適切な時点で Bean が作成、注入、破棄されることが CDI ランタ

イムによって保証されるため、シンプルでエラーのないステート管理が実現されます。また、Bean には

イベントの起動および監視機能が含まれるため、以前は不可能であった疎結合方式で 1 つのアプリケー

ション内のコンポーネントが相互作用します。

CDI は Web 層にトランザクション・サポートを提供することで、Web アプリケーションのトランザクショ

ン・リソースに対するアクセスを容易にします。たとえば、CDI サービスを使用することで、JPA が提供

する永続性を使用してデータベースにアクセスする Java EE Web アプリケーションを簡単に構築できます。

依存性注入はエンタープライズ Java アプリケーションの開発において一般的なテクニックとなりつつあ

りますが、最近まで、このテクニックを適用するためのアプローチは標準化されていませんでした。この

状況を変えたのが Dependency Injection for Java(JSR 330)であり、依存性注入に使用できるアノテーショ

ンの標準セットが導入されました。

JavaServer Faces(JSF)2.0(JSR 314)

Java EE アプリケーションのユーザー・インタフェース開発を簡素化するために設計された、サーバー・

サイドのコンポーネント・フレームワークである JSF テクノロジーが、特にページ作成の領域において簡

素化および改善されました。Facelets は強力でありながら軽量なページ宣言言語であり、HTML スタイル

のテンプレートを使用した JSF ビューの設計やコンポーネント・ツリーの構築に使用されます。また、

Facelets はテンプレーティングを通じてコードの再利用を可能にすることで、ユーザー・インタフェース

の開発とデプロイに必要な時間を大幅に短縮します。

テンプレーティングを使用すると、アプリケーション内の別のページのテンプレートとして機能するペー

ジを作成できます。これにより、アプリケーション内の多数のページにわたって標準的なルック・アンド・

フィールを維持しながら、開発労力を軽減できます。Facelets ビューは通常 XHTML マークアップ言語で

記述されているため、複数の開発プラットフォーム間での移植性が高くなります。JSF 2.0 におけるアノ

Page 13: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

11

テーション・サポートの例は、マネージド Bean の構成に対する簡素化アプローチです。JSF 構成ファイ

ル(faces-config.xml)を使用してマネージド Bean を登録する代わりに、適切なアノテーションを使用し

て Bean をマークし、スコープを設定するだけで構成を完了できます。

Bean Validation 1.0(JSR 303)

データ検証は、プレゼンテーション・レイヤーから永続レイヤーまで、アプリケーションのさまざまな個

所で実行される一般的なタスクです。たとえば、入力フィールドに検証ロジックを適用して、数値を一定

の範囲内に収めることができます。同じ検証ロジックがレイヤーごとに実装され、時間がかかったりエ

ラーが発生しやすくなったりすることはよくあることです。このような各レイヤーでの検証の繰返しを避

けるため、多くの場合、開発者は検証ロジックをドメイン・モデルに直接バンドルしますが、結果として

クラス自体のメタデータである検証コードでドメイン・クラスが複雑になります。

JSR 303 は、JavaBeans の検証機能を提供する API とメタデータ・モデルを定義します。Bean の検証は Java

EE 6 プラットフォーム全体に組み込まれています。たとえば、JSF などのプレゼンテーション・レイヤー・

テクノロジーや JPA などのエンタープライズ・レイヤー・テクノロジーから、Bean Validation フレームワー

クを通じて提供されるバリデータと制約定義へアクセスできます。

デフォルトのメタデータ構文では、XML 検証記述子の使用を通じてメタデータをオーバーライドおよび

拡張する機能とともにアノテーションが使用されています。JSR 303 に記述されている検証 API は、特に

多層プログラミング・モデルにおけるいかなる特定層にも限定されないよう意図されています。このため、

サーバー・サイドのアプリケーション・プログラミング開発者とリッチ・クライアントの Swing アプリケー

ション開発者の両方が検証 API の機能を使用できます。JavaBeans オブジェクト・モデルに対する一般的

な拡張と見なされるこの API は、その他の仕様におけるコア・コンポーネントとして使用されることが見

込まれます。使いやすさと柔軟性は、この仕様の開発方向性を決定する理念です。

Connector Architecture 1.6(JSR 322)

エンタープライズ・アプリケーション統合において、エンタープライズ・アプリケーションと企業情報シ

ステム(EIS)の間の双方向接続は不可欠です。Java EE Connector Architecture は、エンタープライズ・ア

プリケーションと EIS プロバイダ間の双方向接続を実現するコントラクトの標準セットを定義します。ま

た、統合レイヤーの関係、相互作用、パッケージを形式化することで、束縛のないエンタープライズ・ア

プリケーション統合を実現します。アプリケーション・サーバーのベンダーがシステムを拡張して一度

Connector Architecture をサポートしたら、複数の市販 EIS 製品に対するシームレスな接続が保証されます。

同様に、EIS ベンダーが業界標準のリソース・アダプタ(JSR 322 で規定されたものなど)を提供する場

合も、Connector Architecture をサポートするすべてのアプリケーション・サーバーへのプラグインが保証

されます。

Connector Architecture 1.6(JSR 322)では、次の手段を通じて Connector Architecture が拡張されています。

開発容易性:この仕様では、幅広い Java 言語アノテーションの使用を通じてリソース・アダプタ開発

が大幅に簡素化されたため、冗長なコードやデプロイメント・ディスクリプタ(ra.xml)を作成する

必要が軽減されています。また、デフォルト構成も改善されています。

Page 14: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

12

一般的な Work コンテキスト・メカニズム:この仕様では、Work 実行中のコンテキスト情報を伝播

するための一般的なメカニズムが定義されています。また、Work 実行中に EIS から Java EE コンポー

ネントに対して、セキュリティ、トランザクション、およびその他のサービス品質パラメータを受け

渡す方法が標準化されています。

セキュリティ Work コンテキスト:この仕様では、WorkManager に対して実行用に Work インスタンス

を送信する間、またアプリケーション・サーバー上のメッセージ・エンドポイント(または Message-Driven

Bean)にメッセージを送信する間に、セキュリティ情報を確立するためにリソース・アダプタが利用

する標準コントラクトが定義されています。

パッケージ

Java EE 6 において、パッケージとデプロイメントは以前のバージョンよりもずっと簡単になりました。

図 3 の例では、左側に Java EE 5 以前の開発およびデプロイで必要とされたファイルが示されています。

web.xml(構成メタデータおよびプレゼンテーション・コード用)が BuyBooks.war にパッケージされ、ビ

ジネス・ロジックが ShoppingCart.jar にパッケージされた後で、すべてが BuyBooks.ear ファイルにパッケー

ジされます。

図 3 の右側のショッピング・カート例に示したとおり、この準備作業は Java EE 6 で大幅に簡素化されま

した。図から分かるとおり、EJB コンポーネントを.war ファイルに直接パッケージすることができます。

ただし、EJB ファイルを使用した従来の方法も引き続きサポートされています。

図 3. Java EE 6(右側)ではアプリケーションのパッケージとデプロイが簡単になりました。EJB クラス・ファイルを.war ファイルの一部としてパッケー

ジすることができます。

Oracle GlassFish Server 3

Oracle GlassFish Server 3 は、Java EE 6 プラットフォーム仕様に準拠した初めての製品実装です。柔軟性、

拡張性、開発容易性を含む数多くの Java EE 6のテーマがOracle GlassFish Server 3に引き継がれています。

この軽量かつ柔軟なオープンソース・アプリケーション・サーバーを使用すると、組織は Java EE 6 仕様

に導入された新機能を利用できるだけでなく、迅速化および効率化された開発およびデプロイメント・サ

イクルを通じて既存機能へ追加することもできます。Oracle GlassFish Server 3

Page 15: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

13

リリースの注目すべき機能には、OSGi に基づくモジュール・アーキテクチャによる起動時間の短縮や、

リソース使用率の軽減、繰返し開発の迅速化、きめ細かい監視などがあります。また、Oracle GlassFish

Server 3 は、JRuby、Jython、Groovy などのサード・パーティによる動的言語をサポートしています。

Oracle GlassFish Server 3 では、Java EE 自体の進歩を超えて大幅にアプリケーション生産性が向上してい

ます。GlassFish ではアプリケーション・ステートを失うことなくアプリケーションを再デプロイできる

ため、時間のかかる 6 ステップ(編集、コードの保存、コンパイル、パッケージ、デプロイ、セッション・

データの再生成)に代わり、Eclipse や NetBeans などの統合開発環境(IDE)を使用して、同じプロセス

を 3 ステップ(編集、保存、ブラウザの更新)のみで実行できます。Oracle GlassFish Server 3 との緊密な

統合と強力なサポートにより、使いやすさと生産性が向上します。

統合開発環境

Java EE 6 のアプリケーションおよびその他のコンポーネントは、NetBeans や Eclipse などの主要な IDE を

使用して開発できます。これらの主要な IDE では、シングルトン、Web フラグメント、Facelets をはじめ

として、このホワイト・ペーパーに記載された Java EE 6 機能がほとんどすべてサポートされています。

図4に示すとおり、NetBeansは Java EE 6プラットフォームとそのリファレンス実装であるOracle GlassFish

Server 3 に対して、包括的なサポートを提供しています。

図 4. NetBeans IDE は Java EE 6 および Oracle GlassFish Server 3 以降に対して、包括的なサポートを提供しています。

たとえば、NetBeans ではターゲット環境のサポート・レベル(Java EE とアプリケーション・サーバーの

リリース・レベルを含む)に基づいて、どのバージョンのサブ仕様を使用するかが自動的に決定されます。

Page 16: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

14

Java EE 6 テクノロジーの一部は Java EE 5 アプリケーション・サーバーで使用できます。たとえば、Java EE

5 プロジェクトや JAX-RS 1.0 と一緒に JSF 2.0 を使用することができ、NetBeans では必要に応じてこのオ

プションを使用できます。

コミュニティによってサポートされた GlassFish Tools Bundle for Eclipse(図 5)を使用すると、Eclipse IDE

を使用して構築したアプリケーションを Oracle GlassFish Server にデプロイできます。このバンドルには、

Oracle GlassFish Server 環境にデプロイする Java EE アプリケーションを Eclipse で開発するための包括的

な環境が含まれています。配布ファイルには、事前に構成された Oracle GlassFish Server がバンドルされ

ています。

図 5. GlassFish Tools Bundle for Eclipse を使用すると、Eclipse IDE を使用して構築したアプリケーションを Oracle GlassFish Server にデプロイできます。

結論

ビジネス・クリティカルなアプリケーションを 10 年間にわたって何千もの組織で実行した結果として、

Java EE はエンタープライズ・アプリケーションの開発およびデプロイメント・プラットフォームとして

すさまじい進化を続けています。Java EE が提供する包括的な API セットを使用すると、開発エクスペリ

エンスを簡素化しながら生産性を向上できます。オープンソース・イノベーションを活用したアノテー

ション・ベースのプログラミングと構成作業なしの Web フレームワークは、プラットフォームを拡張す

ると同時に開発環境をさらに簡素化します。プロファイルは標準ベースの EJB コンポーネントからなる

集中的なアーキテクチャを構築し、プルーニングは使用されていないテクノロジーを排除します。技術的

な機能拡張には、Servlet 3.0、Facelets、RESTful Web サービス、コネクタ、拡張された永続化アーキテク

チャ、依存性注入などが含まれます。Java EE 6 によって、Java を使用したエンタープライズ・アプリケー

ション開発がこれまでにないほど簡単になりました。

Page 17: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要

15

付録 1:参考資料

JSR 045:Debugging Support for Other Languages

JSR 052:Standard Tag Library for JavaServer Pages 1.2

JSR 109:Implementing Enterprise Web Services 1.1

JSR 196:Authentication Service Provider Interface 1.1

JSR 222:Java Architecture for XML Binding(JAXB)2.1

JSR 224:Java API for XML Web-Based Services(JAX-WS)2.2

JSR 245:JavaServer Pages(JSP)2.1

JSR 250:Common Annotations for the Java Platform

JSR 252:JavaServer Faces(JSF)1.2

JSR 299:Contexts and Dependency Injection for the Java EE Platform

JSR 303:Bean Validation 1.0

JSR 311:The Java API for RESTful Web Services(JAX-RS)

JSR 314:JavaServer Faces 2.0

JSR 315:Java Servlet 3.0

JSR 317:Java Persistence API(JPA)2.0

JSR 318:Enterprise JavaBeans(EJB)3.1

JSR 322:Java EE Connector Architecture 1.6

JSR 907:Java Transaction API(JTA)1.1

Page 18: Java Platform, Enterprise Edition 6の概要 · 2020. 7. 13. · Oracle ホワイト・ペーパー - Java Platform, Enterprise Edition 6 の概要 1 概要 Java Platform, Enterprise

Java Platform, Enterprise Edition 6 の概要

2010 年 4 月

Oracle Corporation

World Headquarters

500 Oracle Parkway

Redwood Shores, CA 94065

U.S.A.

海外からのお問い合わせ窓口:

電話:+1.650.506.7000

ファクシミリ:+1.650.506.7200

www.oracle.com

Copyright © 2009, 2010, Oracle and/or its affiliates.All rights reserved.

本文書は情報提供のみを目的として提供されており、ここに記載される内容は予告なく変更されることがあります。本文書は一

切間違いがないことを保証するものではなく、さらに、口述による明示または法律による黙示を問わず、特定の目的に対する商

品性もしくは適合性についての黙示的な保証を含み、いかなる他の保証や条件も提供するものではありません。オラクル社は本

文書に関するいかなる法的責任も明確に否認し、本文書によって直接的または間接的に確立される契約義務はないものとします。

本文書はオラクル社の書面による許可を前もって得ることなく、いかなる目的のためにも、電子または印刷を含むいかなる形式

や手段によっても再作成または送信することはできません。

Oracle および Java は米国 Oracle Corporation およびその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商

標です。

AMD、Opteron、AMD ロゴおよび AMD Opteron ロゴは、Advanced Micro Devices の商標または登録商標です。Intel および Intel

Xeon は Intel Corporation の商標または登録商標です。すべての SPARC 商標はライセンスに基づいて使用される SPARC

International, Inc.の商標または登録商標です。UNIX は X/Open Company, Ltd.によってライセンス提供された登録商標です。

0110