Apache DeltaSpike 1.0

待望のApacheDeltaSpike 1.0が6月14日にリリースされました。2011年の12月にincubatorプロジェクトとして開始してから、約2年半の歳月を経て、バージョン1.0がようやくリリースされたのです(DeltaSpikeプロジェクトの誕生の経緯はこちらを参照ください)。言うまでもなく、1.0というバージョンはプロジェクトにとって多くのユーザが使いはじめる重要なバージョンになります(このブログを公開した時点ではすでにバージョン1.0.1がリリースされていますので、これからダウンロードする方は最新版を使ってくださいね)。

DeltaSpikeの機能概要

DeltaSpike 1.0が提供する機能は3つに分類できます。

  • Java EE以外の環境に提供するJava EE 7ライクな機能 (表1)
  • JSFをより使いやすくするための機能 (表2)
  • アプリケーション開発の生産性を改善する機能 (表3)
表1:非Java EE環境に提供するJava EE 7 機能
機能 概要
@Transactionalアノテーション EJB以外のBeanでトランザクションを制御可能にする
インジェクション可能なサーブレットオブジェクト Java EE 6/CDI 1.0環境でCDI Beanをサーブレットにインジェクションできる
インジェクション可能なリソース コンフィギュレーションやリソースバンドルを簡単にインジェクトできる
@Excludeアノテーション CDIの有効な環境でもCDIの処理の対象にならないようにする
スケジューリングタスク 非Java EE 7環境で実行可能な非同期プロセス
Beanバリデーション統合 CDI BeanIとEJBバリデーションをConstraint-Validatorにインジェクトできる
BeanProvider JPA-2.0 EntityListenersやSpring BeansBeanManagerのような非管理クラスにおいて CDI beansにアクセスできる
表2:JSFの改善機能
機能 概要
マルチウィンドウ処理  バッチのための論理的なウィンドウを管理できるようにする。JSFの場合はブラウザタブを独立して扱えるようになる。
タイプセーフ view-config (セキュリティなどの) メタデータをビューに柔軟に結びつけることを可能にする。JSFの場合はより頑丈なナビゲーションを提供し、メンテナンスフェーズの助けとなる。
View-Controller タイプセーフ view-configをベースとして、view-controllerアノテーションは標準タグのタイプセーフな代替を提供する。
コンバータとバリデータに関するインジェクション CDI BeanとEJZBをJSFコンバータとバリデータへインジェクト可能にする。
CDIへのJSFイベントブロードキャスト JSFイベントに関する通知をCDIで受けられるようにする。
表3:生産性の改善機能
機能 概要
アノテーションベースのセキュリティ 頑強で、使えて、アプリケーションに侵入しない(non invasive) なセキュリティソリューションを構築する基盤※ non invasive(非侵襲的)とはアプリのコードにフレームワークやコンテナ依存のコードが入り込まないような方法
新しい CDI スコープ TransactionScoped, WindowScoped, ViewScoped, ViewAccess scope, Grouped conversion scope
コンテナ制御とテスト制御 Java SEでCDIが使える。開始、停止、実行中のCDIコンテナへのクラスの追加などの統一されたAPIを提供。
データモジュール エンティティ・フレームワークのソリューション。JDBCとともに、コンテナ管理またはアプリケーション管理の永続コンテキストをサポートする。
分離された例外処理 CDIオブザーバと同様に例外処理を一箇所で実行できるようにする。
JMXの統合 任意のCDI Beanが1つのアノテーションによって簡単にJMXで公開できる。
タイプセーフi18n メッセージ インタフェースやリソースバンドルと一緒にローカライズされたメッセージを簡単に使える。メッセージがソースコードという文脈の中でわかりやすくなる。
タイプセーフProject-Stages JSFでのProject stageと比べて、DeltaSpikeはタイプセーフであるにもかかわらず拡張可能な方法を提供できるし、CDIベースのアプリケーションで使うことができる。

CDI仕様は、拡張可能なコンテキスト(スコープの実装)とタイプセーフなインジェクションを提供します。DeltaSpikeが提供する機能には、「新しいスコープ」、「タイプセーフ」、「インジェクション」という言葉が目立つのはそのような理由からです。DeltaSpikeはこれらのCDIのコンセプトを使ったユーティリティやライブラリ機能をCDIコンテナ上で動作するポータブルなCDI拡張 (Extension) として提供します。

新しいJava EE はCDIをベースにサービスが統合され、サービス間で連携します。CDIは単なるインジェクションのフレームワークではなく、Java EEの背骨に相当するコアな仕様です。古いJava EEではEJBやJMSなどの仕様ごとに縦割りでアノテーションが決められてきました。CDIはJava EEを構成するサービスを横方向に連携させるものです。

将来Java EEが提供する新しいサービスとユーザによってCDIで作られたサービスは、同じCDI上のサービスという点では違いが無くなっていくことでしょう。私は、CDIの登場によって、Java EEが閉じたJava EEから、拡張可能な開かれたJava EEになったと考えています。DeltaSpikeの提供する機能は、Java EEに取り込むことでJava EEの機能をコミュニティの力によって拡張するものです。足りないものがあれば作れば良い。そこに魅力を感じます。

 

%d人のブロガーが「いいね」をつけました。