DWRを触ってみた

JavaScriptからJavaのオブジェクトを呼び出すためのライブラリであるDWRを軽く触ってみました。

すごいシンプルでわかりやすい!ってのが第一印象で、JavaScriptJavaの連携がおもってた以上に簡単に行えました。

実際の使い方は、下記の記事に譲るとして、、


自分がちょっと触って感じたことを、書きますと、、

  • JavaScript上でそのままJavaのオブジェクトを呼び出すような感覚で書ける。
    そのままxxx.メソッド名(引数,コールバック関数)といった感じ。
    コールバック関数は、メソッドの返り値を受け取るような感じで。
    (xxxはdwr.xmlで指定したクラスに対応する名称)
  • オブジェクトをJavaScriptにマッピングするようなコードを書く必要がない。
    プリミティブ型はもちろん、Date型や配列などにも対応しており、それらをメンバに持つBeanであっても設定ファイル(dwr.xml)にクラス名を指定するだけで済む。
  • 他のフレームワーク(Spring、Seasar2など)との連携が簡単。
    Seasar2はDWRとして連携するための機能が提供されていないが、ちょっとしたコード(上のITproの記事にも記載)を書くだけで連携が出来る。
    実際Seasar2との連携を試してみた。簡単だった。
  • サーバ(Java)側で発生したExceptionも返してくれる。
    Exceptionの内容(型やmessageなど)も返してくれるので、messageを抜き出してエラーメッセージとして表示したり、例外クラスの型からエラーメッセージを変えたりといったことも可能。
  • デバッグモードを指定(web.xmlのinit-paramで)すると、〜/アプリケーション名/dwr/ といったURLでアクセスし、DWRで利用可能なオブジェクトの動作をWEB上から確認できる。
    パラメータとかも入力出来たりして、デバッグでかなり便利。
  • ドキュメントがわりと充実。
    英語なので、自分的には結構きついが、コードが載っているのでそれなりにわかる。
  • DWR2.0からリバースAjaxとかいって、Commetのようなサーバプッシュの機能が入ったらしい。ちょっと気になったが試してはいない。
  • Javaからscript.aculo.usのEffectsを呼び出せたりもするらしい。これも試していないが、使い道はどうなのだろうか…


GWTより手軽ですし、学習コストも少なく、かなり使える!!と思いました。
JavaAjaxを、、って時にはぜひ試してみていただきたいライブラリです。


シンプルなだけに、これを使ってどう表現するかは、いろいろな手段(他のJavaScrptのライブラリと組み合わせたり、自分自身でゴリゴリ書いたり)がありますが、それがまた良かったりするのかなぁと思います。