Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

最近のJavaEE事情
~Java EE 6の向かう先~

Java EE 6の仕様はこうなる!

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/10/21 14:00

 Java EE 5のリリースから2年以上の時間が経ち、次期仕様である「Java EE 6」は仕様策定状態ですが、あまりまとまった情報がありません。本稿ではJava EE 6に含まれる予定の技術を解説し、今後のエンタープライズ分野のJavaが進む方向について考察したいと思います。

目次

はじめに

 エンタープライズアプリケーション向けのJavaの仕様「Java EE」の現行バージョンは「Java EE 5」です。このJava EE 5は、EJB 3.0を中心にDependency InjectionやPOJOを用いたO/Rマッピングなど、Java EE/J2EEの主流に対するオルタナティブとして出てきた技術を取り込んだ、従来のJava EE/J2EEから大きく変化したバージョンでした。

 このJava EE 5のリリースから2年以上の時間が経ち、次期仕様である「Java EE 6」は仕様策定状態ですが、あまりまとまった情報がありません。そこで、本稿ではJava EE 6に含まれる予定の技術を解説し、今後のエンタープライズ分野のJavaが進む方向について考察したいと思います。

従来の技術の進化

 はじめに、従来のJava EEに含まれている技術がJava EE 6でどのように進化していくのか、代表的なものを見ていきましょう。

EJB 3.1

 Java EE 5における1番大きな変化は、Dependency Injection(DI)やPlain Old Java Object(POJO)、アノテーションといった従来のJ2EEには無かった技術を取り入れた「Enterprise JavaBeans(EJB) 3.0」でした。Java EE 6に含まれる「EJB 3.1」もこの流れを踏襲しています。

 EJB 2.x以前は1つのEJBを作成するために、Beanの実装ファイルに加え、ビジネスインターフェイス、ホームインターフェイス、XMLで記述されたデプロイメントディスクリプターが必要でした。

 EJB 3.0ではアノテーションでEJBのメタデータを記述できるようになったため、デプロイメントディスクリプターの作成が必須ではなくなりました。また、ホームインターフェイスも廃止され、Beanの実装ファイルとビジネスインターフェイスのみでEJBを作成できるようになりました。Bean実装ファイルも、従来必要であったコールバックメソッドの作成などが必須でなくなり、簡単にEJBを作れるようになりました。

 EJB3.1ではこの流れを受け継ぎ、ローカルからアクセスするEJBは、ローカルビジネスインターフェイスも省略できるようになります。これにより、ローカルからのみアクセスされるEJBは、Bean実装ファイル1つで作成できるようになり、EJB 2.xの時代と比べると格段に簡略化されています。

 また従来のEJBは、「EJB-Jarファイル」と呼ばれる1つのJar形式でアーカイブされたファイルに格納される必要がありましたが、EJB 3.1からは@StatelessなどEJB関連の「アノテーション」が付与されたBeanをクラスパス上に配置すれば、それがEJBとして認識されるようになります。このためWebアプリケーションのアーカイブ形式であるWARファイルでは、「WEB-INF/classes」以下にEJBの実装ファイルを配置すれば、それをEJBとして利用することも可能です。

 このように従来のアプリケーションでは、EJBを利用するためには、EJBをEJB-Jarファイルに格納し、Webアプリケーションに関連する部分はWARファイルに格納しそれをEARファイルにまとめるなど、少々面倒なプロセスが必要でしたが、 EJB3.1からは1つのアーカイブでEJBを用いたWebアプリケーションを作成できるようになります。

JPA 2.0

 従来のJ2EEでBeanとデータベーステーブルのデータマッピングを受け持っていた「Entity Bean」は、あまり使い勝手が良いとは言えませんでした。そこで、EJB 3.0では新たにO/Rマッピングのフレームワークとして「Java Persistence API(JPA)」がリリースされました。Java EE 6では、このJPAがEJBとは別の仕様として分割され、「JPA 2.0」という1つの仕様になります。

 JPA 2.0では、検索言語であるJPA-QLの拡張、実装により異なっていた設定ヒントの標準化など、従来のJPAで使い辛かったところを中心とした拡張が図られます。また、JSR-303で仕様策定中の「Bean Validation」を用いた、アノテーションによるBeanの入力値検証機能なども含まれる予定です。検索に関しても、従来のJPA-QL検索文による検索に加え、APIを用いて条件を搾っていく「Criteria Query」機能が搭載される予定です。

 パッケージングに関しても、JPA関連のメタデータを記述した「persistence.xml」は従来EJB-Jarの中に含まれていましたが、クラスパス上に配置すればいいようになります。こちらもEJB 3.1の流れを踏襲する方向に進みそうです。

Servlet 3.0

 最近のJ2EE/JavaEEではあまり大きな改良が加えられなかったServletの仕様ですが、Java EE 6では大きく進歩し「Servlet 3.0」へとバージョンアップします。

 Servlet 3.0では、アノテーションを用いてServletに関するメタデータを記述できるようになります。これにより今まで必須だった「web.xml」がオプションになります。また、従来HttpServletクラスのようなJ2EE/JavaEEの仕様が提供する親クラスを継承してServletを作成していましたが、アノテーションにより、そのクラスがServletであることや、どのメソッドがGET・POSTなどのリクエストを処理するか特定できるため、任意のJavaオブジェクトをServletとして利用できるようになります。

 このようにServlet 3.0では、Servletの分野にもPOJO化の流れが浸透してきています。

JSF 2.0

 JavaServer Faces(JSF)は、Java EEに含まれる標準のWebアプリケーションフレームワークで、Java EE 5からJava EEに取り込まれました。JSFもJava EE 6では「JSF 2.0」へとバージョンアップする予定です。

 現在のWebアプリケーションでは、平坦なHTMLのみで記述されたユーザーインターフェイスではなく、JavaScriptなどを用いたインタラクティブなユーザーインターフェイスが求められています。このような機能を実現するためにJavaScriptで記述されたAjaxライブラリが提供されています。Java EEは主にサーバサイドのJava技術なので、クライアント側のJavaScriptは仕様の範囲を超えてしまうかもしれませんが、JSF 2.0ではこのようなライブラリと連携してページを操作するための仕組みが提供される予定です。

 また、カスタムコンポーネント作成の簡略化、Faceletとの統合、RESTfulなURL表記などの機能拡張が計画されています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 河村 嘉之(カワムラ カズユキ)

     1999年にメーカー系ソフトウェア開発会社に入社。サーバ・サイドJavaを中心にさまざまな開発プロジェクトに携わった後、オープンソース・プロジェクトを中心に新技術の調査を担当する。2008年にオープンソースCRMに移籍し、現在はオープンソースのCRMソフト「SugarCRM」を核にしたビ...

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5