BT

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

作者: Srini Penchikala , 翻訳者 能仁 信亮 投稿日 2009年12月13日 |

原文(投稿日: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の情報をさらに得るには、このリンク先を参照のこと。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.