TOPシステム開発> 第3回:Java Ajaxフレームワーク比較 (1/3)

Ajax4JSFで簡単Ajax!

Ajax4JSFで簡単Ajax!

第3回:Java Ajaxフレームワーク比較

著者:カサレアル  岡本 充洋

公開日:2007/12/25(火)

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以外で行いたいといった場合などに導入すれば、高い生産性を発揮できるでしょう。 次のページ


1   2  3  次のページ


株式会社カサレアル 岡本 充洋
著者プロフィール
株式会社カサレアル  岡本 充洋
プロフェッショナルサービスセンター所属。
エンジニア向けトレーニングの実施や技術コンサルティングなどに従事し、企業への技術支援を行う。その傍ら、各種ユーザーグループでの活動を通してエンジニア同士の情報交換を行い、日々精進を重ねている。
カサレアル:http://www.casareal.co.jp/
ブログ:http://mitsublo.blogspot.com/


INDEX
第3回:Java Ajaxフレームワーク比較
3つのタイプからAjaxフレームワークを比較する!
  タイプ2:既存Ajaxツールキットのラッパー系「jMaki」
  タイプ3:JSF拡張系「RichFaces」「ICEFaces」