気になる開発プロダクツ
第8回 Groovy/Grails
筆者は今月,「スクリプティング with Java」を刊行させていただきましたが,その中の特集2で取り上げたのはGroovy 1.1-Beta2とGrails 0.6でした。ですが,その後の開発によって,本稿執筆時点ではGroovy 1.1-RC1,Grails 1.0-RC1となり,大幅な改良が加えられました。今回はその改良点を取り上げます。
Groovyとは
Groovyは,Java VM上で動作するスクリプト言語の1つで,JSR241としてJCPに採択されています。Javaに改良を加えた文法と拡張性の高さが特徴で,Java経験者にはとっつきやすい言語といえるでしょう。11月中旬にバージョン1.1のリリースが予定されています。
開発リーダーのGuillaume LaForge氏は,Grails開発リーダーのGraeme Rocher氏らと共にGroovy/Grailsのサポート,コンサルティング,トレーニングなどを手がけるG2One Incという企業を設立し(*1),VP Technologyというポストに就いています。
主な改良点
1.1-Beta3と,同RC1の主な改良点を以下に列挙します。Groovyの文法などについては,Webサイトおよび拙著を参照してください。
●1.1-Beta3の主な改良点(*2)
- Java 5の列挙型(enum)に対応
- クロージャの実行方法が指定可能に
- クロージャとマップの具象クラスへのインターフェースを拡張
- 新たな演算子(Elvis operator)の導入
- ExpandoMetaClassにメソッドを追加
- Antタスクgroovyc内でjavacタスクを利用可能
●1.1-RC1の主な改良点(*3)
- Groovy Shell(groovysh)からgoコマンドを削除(図1) (注)
- Beta-3より15%~45%のパフォーマンス改善
- 単項の+, -, ~演算子が再定義可能
- metaClassをどのオブジェクトからも取得可能
- metaClassによるstaticメンバの定義がよりシンプルに
- Java5対応の改善
- 注
- このバージョンのGroovy Shellでは,コマンドラインに日本語を入力すると文字化けしてしまいます。ですが,日本語を含んだソースコードをファイルに保存し,groovyコマンドでそれを実行する場合は,問題なく日本語も扱えます。
図1 コマンドラインツールからgoコマンドが削除された
> groovysh
Groovy Shell (1.1-rc-1, JVM: 1.6.0_03-b05)
Type 'help' or '\h' for help.
----------------------------------------------------------------
groovy:000> def sum( n ) { ← メソッド(関数)の定義
groovy:001> n * ( n + 1 ) / 2
groovy:002> }
===> null
groovy:000> sum( 10 ) ← すぐに実行できる
===> 55
groovy:000> quit
>
Grailsとは
GrailsはRuby on Railsに影響を受けて開発された,自動生成機能をもったWebアプリケーションフレームワークです。ただしRailsクローンというわけではなく,コマンドやクラスなどは独自のものです。先述の開発リーダーRocher氏はG2OneでCTOを務めています。
Grailsによって構築されるアプリケーションはGroovy + Spring + Hibernateの構成になりますが,必要な設定ファイルも生成されるため,XMLファイルを見ることなく開発を進められます。
ちなみに,Groovyを採用しているアプリケーションフレームワークには,GrailsのほかにProject Zeroがあります。
主な改良点
Grails 1.0-RC1の主な改良点を以下に列挙します。アプリケーションの実装例などはWebサイトや拙著を参照してください。
●1.0-RC1の主な改良点(*4)
- O/Rマッピング機能(GORM)の改善
- Filterによるインターセプタの作成
- タグライブラリで名前空間やBody部の変数を定義
- URLマッピングで**やレスポンスに応じたマッピングが可能
- GORMでペシミスティック・ロックやセッションのフラッシュ制御が可能に
- jndiNameプロパティによるJNDIサポート
- 設定ファイルを複数指定可能
Groovy/Grails共に,今後も更なる改良が続けられることでしょう。RubyやPythonなどのスクリプト言語も注目される中,どのように発展していくのかが楽しみです。
この連載は今回で最後となりました。しかしライブラリやツールの開発はこれからも変わらず続けられます。それらがやがて新たなムーブメントを起こすきっかけになってくれることを,筆者は信じて止みません。
-
スクリプティング with Java
いま,Web開発ジャンルを中心にJava環境の上で動作するスクリプト言語の開発が非常に活発です。本書はJava SE 6に標準で搭載されるJSR(Scripting for the Java Platfor...

