yojikのlog

yojikのブログです

Google Web Toolkit

多分Gmailとかで使われてそうなフレームワーク*1
http://code.google.com/webtoolkit/
これすごい。逆転の発想だなー。
Javaで作ったウィジェットのソースをJavaScriptにコンパイルする事によってリッチなAjaxアプリを作る。実行は、JavaScriptで作られたJREエミュレーション用ランタイムを使って、クライアントのブラウザ上で行う。
開発時は「hosted mode」で開発する。このモードではコンパイルせずにJavaネイティブ(変な言い方)で実行することによって、デバッキングなどJavaのIDEのパワーをうまく生かした開発ができる。このモードのとき、GWTはAWTとかSwing上でブラウザをエミュレートするのではなく、埋め込みブラウザ*2と連携する。つまり埋め込みブラウザ側で画面表示やイベントのハンドリング等を実行する。Javaとブラウザの連携ということで、これはこれで別の用途に使いたくなる。
作成されたAjaxクライアントとサーバとの連携は、RPC的なライブラリをつかって実施する*3
このフレームワークは、J2EEフレームワークを代替するものではなく、Ajaxなリッチクライアントを作るためのライブラリという位置付けだと思う。硬い言語で作って、柔らかい言語で実行するというのは、いままで無かった発想だと思った。
利点は、こんな感じかな。

  • ブラウザ毎の差異をコンパイラ(Java->JavaScript)に吸収させることができる。
  • JavaScriptで苦心するよりはOOPを簡単に実現できる。
  • 補完やデバッグなどJava用のIDEがフルにつかえる。
  • コンパイラによる事前チェック等ができる(賛否両論)
  • リッチクライアントアプリは、HTMLベースよりもツールキット的アプローチ*4で書いた方が楽(賛否両論)
  • RPC関連のライブラリが整備されている
  • AllJavaになるので単体テストがシンプルになる(これは微妙か..)

とにかく、そのうち本格的に調べたい。

*1:追記:[http://www.atransia.co.jp/home/fukamachi/Diary/2006/02/12/:title=ここらへん]から勝手予想

*2:WinだとIEコントロール,LinuxだとGeckoが使われる

*3:中身はXMLHttpRequestだと思う

*4:いわゆるAWTとかSwingみたいな感じ