leftovers...

about grails groovy

Grails 3.0.0 リリース!!

Grails 3.0.0 がリリースされました!!!!


これで、一段落!2.3時代の頃からGrails 2.4のリリース群にもあわせつつ"Road to 3.0"を開始、それから約1年半ほどコア部分からの見直しが始まり、確か当初はビルドシステムをGradleにするとかの話くらいだった気が、そしてspring-bootの出現とマイクロサービス時代に向かって、最終的にはspring-bootベースになって登場しました。Grails 2.4.xからGrails自身に依存せずスタンドアロンでGORMが使用できるように、続いてGSPもスタンドアロンで使用できるようになりました。他にも3.0へ向けての実装変更も多く行われました。
2.4.xでの更新で、ビルドシステムを変更するための基盤が完成して、今回リリースされたGrails 3.0では、その上にGradleでのビルド、コアをspring-boot上に組換え、以前のバージョンから多くの互換性を残して、新たなフレームワークと生まれ変わったと思います。
今回のバージョンからは、以前と変わり静的コンパイルでキレッキレッな動作をするGroovy 2.4.xを使用して、spring-bootの良いところをふんだんに使用して、今までのGrailsの良さもとことん活かした内容となっています。


Graeme Rocher氏によるリリース報告と今後についても合わせてお読みください。
http://grails.io/post/115110650393/grails-3-0-released-and-the-road-ahead
要約すると、
リリースしたぜ!忙しかったぜ!
まだ決まって無いけど今後どこかのFoundationに入るぜ!
でも、まだ一部の会社とスポンサー交渉中だとか。
あと、Graemeさん。5月まで休むそうだ。帰っては来る感じの書き方してるけど、、、あやしいなー。


過去バージョンからの更新
過去バージョンからの更新は、ちょっと大変ですが、補佐するプラグインもリリースされていますので、公式ドキュメントのアップグレード方法と合わせて使用してみると良いかと思います。
あと、必要な知識、というより覚えて絶対に損しないspring-bootのドキュメントも合わせて読むと良いでしょう!
https://grails.org/plugin/migrate2-grails3
http://grails.github.io/grails-doc/3.0.x/guide/upgrading.html
http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/html/


プラグインに関して
Grails 2.x系のプラグインは更新しないと使えません。(ハズ)
Grails3に対応したプラグイン達はbintrayにあります。これから増えていくと思います。
https://bintray.com/grails/plugins
Grails2時代のプラグインの代用としては、自分でGrails3用にマイグレートするか、
css、js等リソース関連はwebjarsを使う手もあります。asset-pipelineがクラスパスのMETA-INFを読み込むので、それ以降のパスを指定すればOK。
あとSpring関連をパックしたプラグインの代用はspring-bootの機能でどうにかなる物も多いので、あえてプラグインにする必要はないかもしれません。ただし今までのプラグインと比べると若干手間になる物もあります。



そして、"What's new in Grails 3.0?"の意訳最新版です。

コアフィーチャ
Groovy 2.4.x
Grails 3.0 は、多くの新機能や機能向上を含むGroovy 2.4をバンドルしています。
Groovy 2.4についての情報はコチラから。

Spring 4.1.x と Spring Boot 1.2.x
Grails 3.0は、多くの新機能や機能向上を含む Spring 4.1 をバンドルしています。さらに、Grails 3.0では Tomcat,Jetty,Undertowコンテナを組み込んだ起動可能Jarを提供しているSpring Boot 上に構築されています。

Gradle ビルドシステム
Grails 3.0から古いGantベースビルドシステムを廃止して、新たにGradleプラグインエコシステムと密接に統合したGradleベースのビルドに変更されました。
See the new section on the new Gradle build for more information.
詳細はコマンドドキュメントGradleのセクションを参照してください。

アプリケーションプロファイル
Graild 3.0では、新たな profile repository による、アプリケーションプロファイルという概念をサポートします。
プロファイルは、アプリケーション構造、コマンドセット、プラグイン情報などを要約します。
例えば、"web"プロファイルでは、サーブレットコンテナにデプロイ可能なWebアプリケーションを構築可能にします。将来的に様々な環境に対応したプロファイルを提供します。
詳細はドキュメントのプロファイルを参照してください。


Traitをベースに再デザインされたAPI
Grails APIのパブリックAPIgrails. パッケージ以下に集約されました。プライベート/インターナルAPIで変更される可能性がある物は、 org.grails. パッケージ以下にあります。
コアAPIは、Groovy Traits をベースとして再構築されました。
詳細はドキュメントCore Traitを参照してください。


Webフィーチャ
今までのGrailsでは、コントローラ・アクションのインターセプトとしてフィルターが存在しました。
Grails 3.0からフィルターは廃止され、新たに、Interceptor APIに変更されました。以下はInterceptorの簡単な例です。

class MyInterceptor {
  boolean before() { true }
  boolean after() { true }
  void afterView() {
    // no-op
  }
}

詳しくはドキュメントInterceptor APIを参照してください。


開発環境フィーチャ
新たなシェルとコード生成API
Gantからの移行。Grails 3.0では、Gradleと密接に統合された新たなインタラクティブコマンドシェルとGradleと相互動作するスクリプト記述APIでのコード生成機能を提供します。
新たなシェルは、アプリケーションプロファイルのコンセプトと密に統合され、各プロファイルはプロファイル特有コマンドが定義可能です。
Grailsの以前のバージョンと同様に、各プラグインでGradleを実行またコード生成やプロジェクト自動タスクなどの新たなシェルコマンドを定義可能です。
詳しくは、ドキュメントのカスタムスクリプト生成を参照してください。


強化されたIDE統合
Gradleでビルド可能なGrails 3.0では、IntelliJコミュニティ版やGGTS Gradleツールサポートを利用することで、Grails専用ツール無しでGrailsプロジェクトをインポート出来ます。
Grails 3.0プラグインは、単純なJARファイルで発行できるので、IDEGrailsに特化した機能が必要無い事になります。

アプリケーションメインクラス
新たなGrails 3.0プロジェクトにはトラディショナルな static void main をもつ Application クラス が有ります。これはGrails 3.0は、IntelliJやGGTSなどのIDEで起動・デバッグを単純にApplicationクラスを実行することでGrailsアプリケーションが実行できる事を意味します。
Grails 3.0 でのテストも、コマンドラインを使用することなく、IDEで直接起動出来ます。(インテグレーション・ファンクショナルテストでもです!)


テストフィーチャ
インテグレーションとGebファンクショナルテスト
Grails 3.0では、 create-functional-test を使用したSpock/Gebファンクショナルテストを組み込んでいます。
ファンクショナルテストはSpring Bootをベースとしたテスト実行の仕組みを使用して、全ファンクショナルテスト実行用にアプリケーションを1回起動します。テストはIDEから実行できてコマンドラインは必要ありません。

Gradleテスト実行
Grails 3.0 からは、Gradleでビルドされるようになった事で、並列実行でのテスト実行定義がが柔軟で簡単になりました。


公式ドキュメントが結構更新されています。Grails3で迷ったら該当場所をサクッとみると良いでしょう!
http://grails.github.io/grails-doc/3.0.x/


Grails 3.0.1 の公式リリースノートはこちら。
https://github.com/grails/grails-core/releases/tag/v3.0.1
JIRA https://jira.grails.org/secure/ReleaseNote.jspa?projectId=10020&version=14206
ダウンロード https://github.com/grails/grails-core/releases/tag/v3.0.1
ドキュメント http://grails.github.io/grails-doc/3.0.x/



お知らせ!
Grails3の話をもっと聞きたい!Grails3を使ったハンズオンに参加したい!というかた!
4/11開催のJJUG CCC 2015 Springにて、
Grails 第3章 進化したSpring-bootベースフレームワーク」との内容で話します!
http://www.java-users.jp/?page_id=1663
@nobeansさんの「Java開発の強力な相棒として今すぐ使えるGroovy」も続けて聞けますよ!これ行かないとダメでしょう!


そして、日本Grails/Groovyユーザーグループの定例イベント「G*ワークショップZ」
4/17の「G*なWeb API」で、 @yamkazu氏による。
Grails 3でWeb APIを簡単に作ろう!」
https://jggug.doorkeeper.jp/events/22473
@yamadamasakiさんによる「REAL Objects : 動的なエンタプライズAPIアーキテクチャをどう構築するか」も必見!


さらに、岐阜県多治見市のnewcast inc.開発ルームにて、自分がいるときは、いつでもGrails3雑談会を不定期で開催しております。