BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Java EE 6の機能: Dependency Injection、Bean Validation、EJBの機能拡張

Java EE 6の機能: Dependency Injection、Bean Validation、EJBの機能拡張

原文(投稿日:2009/12/10)へのリンク

Java Platform, Enterprise Edition(Java EE)の最新バージョンは、Dependency InjectionやBean Validation、EJBの重要な機能追加、ServletJSFJSP関連のテクノロジなどを含むいくつかの新機能を提供する。Sun Microsystemsは、Java EE 6を木曜日にリリースした。この記事では、最新バージョンの新機能の概要を紹介する。それぞれの機能のより詳細な部分に関しては、後にでてくる記事でフォローしていく予定だ。

Java EE 6 Platformでの主要なゴールは、柔軟なテクノロジー・スタック、拡張性の強化、Ease of Development(開発を簡単に)の3つだ。

テクノロジー・スタック:
Java EE 6は、プロファイルという考えを導入した。プロファイルとは、特定の用途のアプリケーションのために設計されたJava EE Platformの設定だ。それぞれのプロファイルは、Java EEテクノロジーの一部分および、Java Community Process (JCP)を通過したけれどもJava EE Platformの一部ではない追加のテクノロジーを含むものだ。新しいリリースでは、プロファイルの第一弾として、Webアプリケーションの開発のために必要なJava EE Platformの一部を含むWeb Profileを提供する。Web Profileは、Java EE Platformの軽量バージョンで、大半のWebアプリケーションで必要とされる技術のみを含み、Webアプリケーションでは必要としないエンタープライズ向けの技術は含まない。

拡張性の強化:
新しいバージョンは、サービス・プロバイダのインターフェースに以前のバージョンより多くの拡張ポイントを提供している。これによって、Java開発者は標準的な方法でJava EE 6実装に技術やフレームワークを付け加えることができる。

Ease of Development(開発を簡単に):
開発者は、アノテーションを使ってWebコンポーネントを定義できる。一例をあげると、Servlet(@WebServlet)やServlet filter(@WebFilter)のようなものだ。Dependency Injectionのためのアノテーションも標準化され、フレームワークに依存せず、依存性を注入するクラスを作成できるようになった。また、Java EEアプリケーションのパッケージングの要件も単純になった。たとえば、Webアーカイブ(WAR)ファイルに直接Enterprise Beanを加えることができる。

Java EE 6の新機能は、主に次の4つのカテゴリーに分類できる。プレゼンテーション、Dependency InjectionとData Validation、コンポーネントモデルとサービス、そして永続化だ。

プレゼンテーション:

Java EE 6では、プレゼンテーション(Web)層でのいくつかの機能強化が含まれている。拡張性に関する2つの主要な改善は、新しいServlet 3.0 (JSR 315)テクノロジーで提供されるWebフラグメントと共有フレームワーク・プラガビリティだ。Servlet 3.0は、非同期処理とアノテーションもサポートする。非同期処理のサポートによって、Servletはデータベースのようなリソースが結果を返すのを待つことなく、処理をすすめることができる。これによって、チャット・アプリケーションのようなクライアントの長時間接続が可能になる。

もう一つのJava EE 6でのWeb層の技術は、JSFテクノロジーの最新バージョンであるJSF 2.0(JSR 314)だ。JSF 2.0では、Faceletやテンプレート、複合コンポーネントなどによってページやコンポーネントの作成が単純になっている。さらにAjaxの技術やアノテーションが組み込まれて提供されている。JavaServer Pages 2.2の仕様も、新しいリリースの一部だ。

Dependency InjectionとData Validation:

JSR 299として策定されたContexts and Dependency Injection for the Java EE Platform(CDI)は、Java EEコンポーネントに対する一連のサービスを提供する。これらのサービスにより、EJBやJSFコンポーネントを含むJava EEコンポーネントに依存性を注入し、イベントを発行したり監視したりすることができるようになる。CDIは、EJBとJSFのプログラミングモデルを統合し、単純なものにしてくれる。これにより、JSFアプリケーションでJSF Managed Beanの代わりにEnterprise Beanを利用することが可能になる。

新しいBean Validationの仕様(JSR 303)は、バリデーションをより単純にし、重複とエラーを減らしてくれる。これにより、バリデーションの標準フレームワークが提供され、アプリケーションのすべての層(Web、Controller、サービスそしてドメイン)で共通のバリデーション・ルールを共有することができる。

コンポーネントモデルとサービス:

サーバ側に関していえば、Java EE 6には、EJB 3.1(JSR 318)とJava API for RESTful Web Services (JAX-RS)仕様(JSR 311)が含まれている。EJB 3.1での改善点は、以下のようなものだ。

  • No-interface view:独立したビジネス・インターフェースを記述することなく、Beanクラスだけを使用してEnterprise Beanをシンプルに作成できる。
  • シングルトン:@Singletonアノテーションを使った新しいシングルトンの設計により、アプリケーションの中で、複数のEnterprise Beanのインスタンス間や、複数のEnterprise Beanコンポーネント間でステートを簡単に共有できるようになる。
  • 非同期Session Bean呼び出し:@Asynchronousアノテーションを使うことで、Session Beanのメソッドを非同期に呼び出すことが可能になる。
  • シンプルになったパッケージング:新しいパッケージングの機構では、Enterprise Beanのクラスは、ejb-jarファイルにパッケージされなければならないという制約を取り払った。EJBクラスも直接WARファイルの中に含めることが可能だ。
  • EJB Lite: このモデルは、EJB 3.1の一部で、Java EEプロファイルに含まれる。

JAX-RS仕様により、RESTスタイルのソフトウェア・アーキテクチャに従う、軽量なWebサービスを開発することが可能となる。一連のアノテーションや関連するクラス、インターフェースを使ってRESTful WebサービスをJavaで作成するためのAPIが提供される。

永続化:

永続化モジュールには、JPA 2.0(JSR 317)が含まれる。JPA 2.0ではJPQLのいくつかの機能拡張と、動的にオブジェクトを元にしたクエリを構築することができるCriteria APIが提供される。また、JPA 2.0メタモデルAPIによって、開発者が動的にデータベースのメタモデル情報にアクセスすることが可能になる。JPA 2.0は、新しいコレクション・マッピングをサポートする2つのアノテーションを提供する。@ElementCollection(コレクション・テーブルと呼ばれる別のテーブルに保存される基本型、もしくはEmbeddableオブジェクトのコレクションを示すのに利用される)と@CollectionTable (列のようなコレクション・テーブルの詳細を示すために利用される)の2つだ。

新しいJava EE 6 SDKは、Java Webサイトからダウンロード可能だ。Java EE 6のリリースと新機能に関するInfoQの情報をさらに得るには、このリンク先を参照のこと。

この記事に星をつける

おすすめ度
スタイル

BT