SeamFramework.orgCommunity Documentation

第11章 Groovy インテグレーション

11.1. はじめに
11.2. Groovy による Seam アプリケーションの記述
11.2.1. Groovy コンポーネントの記述
11.2.2. seam-gen
11.3. デプロイ
11.3.1. Groovy コードのデプロイ
11.3.2. 開発時のネイティブ .groovy ファイルのデプロイ
11.3.3. seam-gen

JBoss Seamのもう一つの特徴として、RAD(高速アプリケーション開発)機能があります。RADと意味は異なりますが、ここで一つ興味深いのは動的言語です。最近まで、動的言語を取り入れるにはまったく異なる開発プラットフォームが必要でした。(そうした開発プラットフォームは使いやすいAPI一式とランタイムを備えているため、もはや古いレガシーJava[原文のまま]の APIを使う気にはなりませんでした。こうしてユーザーは開発プラットフォームごとに独自のAPIを使わざるを得ず、それは開発プラットフォーム側としては幸いな話でした。) Java バーチャルマシンの最上位に構築された動的言語の中でも、特にGroovyは、これまでの縦割り型手法を一新するものです。

JBoss Seam は静的言語と動的言語をシームレスに融合することで、Java EE の世界と動的言語の世界を一体化させています。JBoss Seam によって、アプリケーション開発者はコンテキストを切り替えることなく、最良のツールを使う使い開発することができます。動的な Seam コンポーネントを書くことは、従来のSeam コンポーネントを書くのとまったく同じようなものです。アノテーション、APIなど、これまでとすべて同じものを使うことができます。

Groovy は、Java言語をベースにしたアジャイル動的言語ですが、Python、Ruby、Smalltalkによって影響を受けた特徴も取り入れています。Groovy が持つ長所は、次の2点です。

TODO:Groovy シンタックスアドオンの概要を説明

これについては、あまり説明する必要はありません。Groovyオブジェクト は Java オブジェクトであるため、Seam コンポーネントや必要なクラスをそのままGroovyで記述し、デプロイすることができます。同じアプリケーション中でGroovyのクラスとJavaのクラスを一緒に使うこともできます。

ここまででお分かりのように、Seamではアノテーションを多用しています。従って、アノテーションをサポートしているGroovy 1.1 以上のバージョンをお使いください。以下はSeamアプリケーションで使われているGroovyコードの例です。

Groovyクラスのデプロイは、Javaクラスのデプロイと非常によく似ています。(驚くべきことに、多言語のコンポーネントフレームワークをサポートするよう、国名3レターコードの複合仕様で記述する必要もなく、それに従う必要もありません。)

標準的なデプロイだけでなく、開発時にJavaBeansのSeamコンポーネントクラスを再デプロイする場合、JBoss Seamではアプリケーションを再起動する必要がありません。これにより、開発/テストのサイクルでかかる時間を大幅に短縮できます。.groovyファイルをデプロイする場合には、GroovyBeansのSeamコンポーネントでも同様に再デプロイできます。

JBoss Seamでは元々、増分ホットデプロイメントモード(開発のみ)を使った.groovyファイル(つまりコンパイルされていないもの)のデプロイをサポートしています。これによって、修正/テストサイクルが非常に速くなります。.groovyデプロイメントでは、項2.8. 「Seam と増分ホットデプロイメント」に従って設定し、Groovyコード(.groovy ファイル)をWEB-INF/devディレクトリにデプロイします。アプリケーションを再起動することなく、GroovyBeanコンポーネントが追加されます。(もちろんアプリケーションサーバーの再起動も不要です。)

ネイティブ.groovyファイルのデプロイでは、従来のSeamホットデプロイメントと同じように以下の制約があります。

  • コンポーネントは必ずJavaBeans もしくは GroovyBeansとし、EJB3 beanを使うことはできません。

  • エンティティはホットデプロイできません。

  • ホットデプロイ可能なコンポーネントは、 WEB-INF/dev の外部にデプロイされたクラスからは見えません。

  • Seam デバックモードを有効にしなければなりません。