BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OpenXava 4.0,JPA 2.0 と依存性注入をサポート

OpenXava 4.0,JPA 2.0 と依存性注入をサポート

原文(投稿日:2011/01/18)へのリンク

Java ベースのモデル駆動開発フレームワークである OpenXava の最近のバージョンは,JPA 2.0 と依存性注入 (Dependency Injection) をサポートしている。OpenXava は 11 月にバージョン 4.0 が,先週にはバージョン 4.0.1 がそれぞれリリースされた。新バージョンでは Groovy のサポートも改善されている。

OpenXava は,JPA でアノテートされた Java または Groovy コードによるドメインクラスベースの開発をサポートする,Java アプリケーションフレームワークである。主要なコンポーネントは以下のものだ。

  • ビジネスコンポーネント (Business Component): OpenXava によるアプリケーション構築においてコアとなるコンポーネント。ビジネスコンポーネントは Java クラス (または XML で定義されたエンティティ) であり,アプリケーションの機能要件であるビジネスコンセプトに関する全情報を保持する。
  • コントローラ (Controller): ボタンやクリック可能なリンクなどアクションのセットで,ビジネスコンポーネントを使って実行可能なアプリケーション操作を定義する。複数のビジネスコンポーネントに同じコントローラを設定することも可能。
  • アプリケーション (Application): OpenXava アプリケーションは複数のモジュールで構成される。モジュールはビジネスコンポーネントを,ひとつないし複数のコントローラに結合するものだ。

依存性注入 (Dependency Injection / JSR-330) をアクションクラスで使用して,セッションオブジェクトを Action クラスのフィールドに挿入することができる。データの永続化には JPA (Java Persistence API) 2.0 を使用する。先日リリースされた OpenXava バージョン 4.0.1 では,新しいコールバックアノテーション (@PreCreate,@PostCreate,@PreDelete) を備えた コールバックメソッド がサポートされ,クラス内部でも JPA が使用可能になった。例えば @PreCreate アノテーションを使用すれば,オブジェクト永続化の前にロジックを実行できる。JPA コールバック内では実行できないエンティティの管理操作やクエリなども実行可能だ。

新しい Groovy サポートでは,JPA エンティティやアクション,テストケースなど,これまでは不可能だった OpenXava コンポーネントも Groovy で記述できるようになる。InfoQ では OpenXava プロジェクトチームの Javire Paniza 氏から,このフレームワークの新リリースと今後の拡張計画に関する情報を得た。

Groovy のサポートについて説明してください。

バージョン 4.0 から OpenXava (OX) アプリケーションのすべてのコードが,Java に代えて Groovy でも記述できるようになりました。ひとつのアプリケーションに Groovy と Java のコードを混在させることも可能ですので,既存のアプリケーションに少しずつ Groovy を追加することから始めるとよいでしょう。

Groovy が Java との統合を目的として設計されていることを考えると,OpenXava への Groovy の統合は思うほど簡単な作業ではありません。それでも Groovy の洗練された文法の追加は,OpenXava 開発者にとって大きな意義を持っています。バージョン 2.0 までの OpenXava では,ビジネスコンポーネントの定義に XML シンタックスを用いていました。これが Java プログラマ以外も含めて,OX の習得曲線の短縮に貢献していたのです。ビジネスコンポーネント定義に Java を導入したことでフレームワークの柔軟性は向上したものの,簡略さがいく分失わてしまいました。Groovy の導入はこの柔軟性を損なうことなく,シンプルなシンタックスを取り戻すものなのです。

Groovy と Grails との重要な違いのひとつとして,OpenXava では一般的な Java の技術でコードを記述できる,という点があります。つまり Groovy で JPA エンティティを記述したり,Groovy で依存性注入 (JSR-330) を使用することが可能なのです。Groovy を RoR スタイルではなく,Java のスタイルで使用できるのです。これによって,既存の Java アプリケーション (Seam や Spring Roo アプリケーションなども含む) のドメインコードを OpenXava アプリケーションに取り入れて,Ajax アプリケーションを即時に手に入れることが可能になります。そうやって完成したアプリケーションに,Groovy を徐々に加えていけばよいのです。

氏はフレームワークのアプリケーションセキュリテイ (認証や資格承認,監査など) サポートに関する質問に,OpenXava としてはセキュリティサポートを直接提供しないものの,Java ポータル (JSR-168/286) に関して視覚面での統合を含む十分なサポートがある,と返答している。OpenXava は,コンテナポータルのルックアンドフィールに即したポートレットを備えた,ポートレットアプリケーションを生成することができる。つまり OpenXava (アプリケーションモジュール) と Liferay (セキュリティおよびナビゲーション) を組み合わせれば,完全なアプリケーションプラットフォームが無償で入手できるのだ。もし Java ポータルを使用する予定がなければ,Java Web アプリケーションをセキュアにする一般的な技術やツール,あるいはフレームワークを導入して,OpenXava アプリケーションにセキュリティ機能のみを追加すればよいだろう。

機能追加や拡張の観点から見た,プロジェクトの将来的なロードマップはどのようなものでしょう?

新たな試みとして,斬新的な改善 (Incremental Improvement) 方法に着手しています。2年かけてバージョン 5.0 を完成させるのではなく,バージョン 4.1, 4.2, 4.3 を数ヶ月単位で提供していくやり方です。全体的にはユーザインターフェースの改良と,開発者向けの新機能追加を継続するつもりです。4.1 リリースでは HTML5/CSS3 および JSR-303 (Bean Validation) のサポート追加と,可能であればリスト検索機能の改良を予定しています。

 

この記事に星をつける

おすすめ度
スタイル

BT