JavaOne2010 9/20 -- Extreme Java Productivity: Enterprise Applications in Just Minutes

タイトルからはわかりづらいけど、要はSpring Rooのセッションです。
スピーカは、最近GDDにも出没したらしいBen Alex(ホント?)。

  • Java開発者向けの、使いやすく、拡張しやすい、テキストベースのRADツール。

RADとは【Rapid Application Development】
ソフトウェア開発技法の一つ。プロトタイプと呼ばれるシステムの完成イメージを何度も制作、評価し、プロトタイプを次第に完成品に近づけてゆく手法。http://e-words.jp/w/RAD.html

  • Rooが必要なのは開発時だけ。実行時には不要。ロックインされない!
  • Rooは、Passive GenerationとActive GenerationのHybrid Code Generator
    • Passive
      • 一度限りの生成(例:getter/setter生成)
      • 生成物は小規模で、手動編集も容易
    • Active
      • 開発中に(元ネタファイルを監視していて)自動的にファイルを更新していく
      • 一般には特殊なビルドスクリプト、不自然な型モデルを強いられたり、ロックインされがち...等々
  • Rooは、エレガントなActive Generationを実現!
    • 開発者はJavaファイルを編集するだけ
    • RooのAdd-onJavaファイルを読んで、AspectJコードを自動生成(元ネタのJavaファイルは変更しない)
      • コンパイル時にAspectJコンパイラが、元ネタJavaコードとAspectJコードと元にclassファイルを生成する→実行時は普通にclassファイルになってる
  • SpringSource Tool Suite(略称STS)を使うのがお勧め
    • IDEなくてもターミナルだけでも全然OK
    • STS以外のIDE使うならAspectJプラグインいれるといいよ
    • STS以外のIDE使ってる場合、裏でRooのシェルを起動したターミナルを開いておくといいよ
      • Rooが自動的にJavaファイルの変更を感知して裏でがんばってくれる(立ち上げておかなくても、あとでRooを起動したときに前回との差分に基づいて自動的にCatch Upしてくれるので安心)
    • STSならRooが組み込まれてるのでそういう面倒なことは一切必要なし
  • RooのシェルのUIは結構がんばってます。
    • TAB補完がすごい。コマンドやオプションやクラス名などをガンガン補完してくれる。
    • hintコマンドがすごい。次に何をすると良いかアドバイスしてくれる。
    • コマンド実行でエラーになったら、実行前までロールバックしてくれる。安心して試せる。
  • ディレクトリ構造はMaven2互換
    • 最初はプロジェクトのpackagingタイプは"jar"だけど、Web層の機能を追加したら自動的に"war"になる
    • マルチプロジェクトは未対応。1.2から対応予定。
  • AspectJやSpringは単にデフォルトで使ってるだけ。全てがオプショナル。取り除くことも追加することも自由。
  • フルセットのエンタープライズWebアプリをつくった場合、warファイルのサイズはだいたい〜13MBぐらい。小さいよね?
  • (STSを使ったデモ)
  • 既存DBからリバースでJavaコードを生成することもできる
    • インクリメンタルにリバースすることもできる。つまり、スキーマ変更時に追加でリバースを実行できる。差分がJavaコードに反映される。
  • Web層のサポート
    • Spring MVC
      • 本家本元SpringのWebフレームワークなのでかなり手厚い対応
    • GWT
      • GWT2.1対応もGoogleGWTチームと共同で開発中。割と本気?
    • Adobe Flex
    • コミュニティで、WicketJSF、Vaadin(知らなかったけど、Grailsプラグインもあるみたい)なども開発中
  • Spring RooはOSGi上に構築されてるよ!(あ、今まで誤読してた。Roo基盤自体がOSGiバンドルで構成されてるんだ)
    • 誰でも簡単に(?)新機能を追加できる
  • Spring Rooに依存しないようにするのは簡単
    • Rooは、実行時に必要となるようなモノはないのでご心配なく
    • 5分で取り除く方法
    • 同じ手順で必要なものを追加したら、元通りRooの開発環境に戻せる(面倒だろ・・・JK・・・)
  • Spring 3.0.x GAに対応したRoo 1.1.0 リリースも間近に控えてる
    • 9月頃に1.1.0.M4 (2010/9/30現在はまだ1.1.0.M3だけど・・・)
    • 10月頃に1.1.0.RC1
    • 1.1.0.RELEASE(GA) 10〜11月頃


ということで、まとめとしては、

  • Spring RooはJava開発者にものっそい生産性向上をもたらします
  • 有名で枯れたJava技術で構成されてます
  • 簡単に学べて、使うのも簡単、拡張も簡単
  • ランタイム不要、ロックインなし、リスク無し


こんなところで。