Google Sitebricks


JavaOneでGoogleの新しいWebフレームワークが発表されたみたいですね。
その名もSitebricks。GWTベースのようです。


まずは見てみてください。JavaOne資料から抜粋。
POJOコード。

    class MyPage { 
        @Property String meaning = “17”; 
    } 

テンプレートはこちら。

    <body> 
       The meaning of life is: ${meaning} 
    </body> 

PageとURLをマッピングして、そのプロパティがJSPのELでマッピングといったところ。
とまあここまではまあ普通。


ところが、例えば以下のようなtypoをすると、コンパイルエラーになります。
どうやらコンパイル時にチェックするみたいですね。
型の不一致とかもチェックするみたい。

    class MyPage { 
        //typoしてるよ!
        @Property String meening = “17”; 
    } 

あと、SitebricksもURLとPageをマッピングするようなので、
これはいいなと思ったのが、各URLに対応するPageがない場合、
コンパイルエラーになるようです。以下のようなケースです。


    <body> 
       <a href=”/non_existent_uri”>Bad Link</a> 
       <form action=”/misspelled_uri”> 
       ... 
    </body> 

JAX-RSのようなアノテーションがあるので、HTTPのメソッドごとにアクセスも可能です。
以下のPageだと、/artists/HogeってURLで、HTTPのGETだと、getメソッドが呼ばれるみたい


    @At(“/artists/:name”) 
    class MyPage { 
        @Get 
        void get(@Named(“name”) String name) { .. } 
    } 

徐々にここらへんから賛否両論わかれそうなキモイ感じになりますw
以下のようにテンプレートのほうにアノテーションをつけることが出来ます。
この発想はなかったなあw
この例だと、MyPage#getShould()がtrueを返す場合にのみ、$meaning部分が表示される模様。

   <body> 
       The meaning of life is: 
       @ShowIf(should) 
       <span>${meaning}</span> 
    </body> 


POJOコード。

    class MyPage { 
      boolean getShould() { 
        return name.equals(“Zaphod Beeblebrox”); 
      } 
      ... 
    } 


あとはwidgetをアノテーションによって普通のhtmlに差し込めるみたいで、
以下のような例だと、SuggestBoxWidgetを差し込むことが出来るみたい。
ここはまだこれだけだとわかんないですね。

   <head> 
       @Require 
       <script src=”gwt_suggest.js”></script> 
       ... 
    <body> 
       <input type=”textbox” name=”suggest”/> 
    </body> 


POJOコード。

    @EmbedAs(“Suggest”) 
    class SuggestBoxWidget { 
      ... 
    } 


というわけで、Sitebricksはこんなフレームワークのようです。

  • RESTfulな感じ
  • HTTPごとにメソッドを分ける
  • コンパイルタイムソリューションでテンプレートとPageを結びつける
  • どうやらGuice ServletモジュールとGWTベース
  • Webスコープ、カンバセーションスコープ完備
  • Cometのサポート(Wave連携とかwidgetとかそういうの考えてるのかな)
  • もうすぐお目見え!


ただし、こんなことしたら、デザイナにテンプレートに書いたアノテーションとか消されるだろうJKと
ヨネムラ先生がおっしゃってました。お目見えしたら、勉強会ででも発表してみたいと思います。