3つのタイプからAjaxフレームワークを比較する!
「第2回:Javascriptを記述せずにリッチなUIを実現する!」まででAjax4JSFとRichFacesの実際の利用方法について取り上げました。
JavaベースのAjaxフレームワークは「Ajax4JSF+RichFaces」以外にも数多く存在します。そこで最終回の今回は他のAjaxフレームワークについて紹介し、それぞれの利点や欠点、使いどころについて比較をしていきます。
ここではAjaxフレームワークを「Ajax呼び出し専門系」「既存Ajaxツールキットのラッパー系」「JSF拡張系」の3つのタイプに分けて解説します。
タイプ1:Ajax呼び出し専門系「DWR」「Seam Remoting」
Ajax呼び出し専門系の代表的なフレームワークには、
「DWR(http://getahead.org/dwr)」や
「Seam Remoting(http://www.jboss.com/products/seam)」があります。
特徴
DWR(Direct Web Remoting)やSeam Remoting(JBoss Seamフレームワークの一部)は、Javaクラスにアノテーションを付与することによって、そのクラスを呼び出すためのJavascriptを自動生成してくれます。
これによりサーバ側では画面へ返却するためのXMLやJSONを作成する必要がなくなります。また、画面側ではXmlHttpRequestなどを直接扱わなくてもJavascriptの関数を呼び出すだけで利用できます。
リスト1:DWRを利用したJavaクラス(一部省略)
@RemoteProxy
public class HelloDWR {
@RemoteMethod
public String getMessage(String str) {
return "ようこそ" + str + "さん";
}
}
リスト2:DWRの呼び出し
<script type="text/javascript"
src="${pageContext.request.contextPath}/dwr/interface/HelloDWR.js"> </script>
<script type="text/javascript">
function show() {
var name = dwr.util.getValue("name");
HelloDWR.getMessage(name,function(data) {
dwr.util.setValue("result", data);
});
}
</script>
(中略)
<input id="name" type="text" />
<input type="button" value="送信" onclick="show()" />
<div id="result"></div>
利点:カスタマイズ性が高く、他のAjaxツールキットと併用できる
フレームワークによって自動生成されたJavascriptを読み込む以外には画面側に制約がないため、既存のAjaxツールキットと自由に併用することができます。またカスタムタグなどを使う必要も無いので、JSPだけでなく通常のHTMLからでも利用できます。シンプルで余計な機能を提供しない分だけ、幅広く連携することが出来る点が最大の利点です。
欠点:Javascriptの知識が必要
DWRやSeam Remotingなどがカバーする範囲は、基本的に「サーバのビジネスロジックを呼び出して戻り値を受け取る」までです。その値を画面側でどのように利用するかはについては、Javascriptでそのロジックを記述しなければなりません。
また、リッチなUIコンポーネントなども用意されていませんので、操作性の高い画面を実現するには他のツールキットと併用する必要があり、別途そのツールキットの知識も必要となります。Javascriptに長けた人材が居ない場合は、ここが欠点となるでしょう。
使いどころ
良くも悪くもJavaで作成されたビジネスロジックをJavascriptで呼び出すことに注力し、画面周りの主役はJavascriptに任せているのがこの手のフレームワークです。
プロジェクトチーム内にJavascriptに長けたエンジニアが居る場合や、画面とビジネスロジックの分業をはっきりしたい場合、画面まわりの実装をJava以外で行いたいといった場合などに導入すれば、高い生産性を発揮できるでしょう。
次のページ