Ajaxフレームワークの比較 株式会社 フォアフロンティア たにあん 説明の範囲 今回の技術発表会の説明範囲としては、Ajax開発におけるプロ グラム言語と連携するフレームワークについて比較し、特にDWR について説明を行なうものとします。 Ajaxフレームワーク一覧 JavaベースのAjaxフレームワークにはさまざまなものがあり以 下にその一部を挙げます。 ・DWR ・Seam Remoting ・jMaki ・RichFaces ・ICEFaces 前項に挙げたAjaxフレームワークはそれぞれタイプが異なり 3種類に分ける事ができます。 <Ajax呼び出しタイプ> ・DWR ・Seam Remoting <既存Ajaxツールキットのラッパータイプ> ・jMaki <JSF拡張タイプ> ・RichFaces ・ICEFaces Java Ajaxフレームワークの比較 Java Ajaxフレームワークをタイプ別に分け、DWR、jMaki RichFacesの3つに焦点をあて、比較、解説を行ないます。 <Ajax呼び出しタイプ> <既存Ajaxツールキットの ラッパータイプ> <JSF拡張タイプ> DWR(Direct Web Remoting) ・どんなもの? Ajax独特の複雑なJavaScriptを必要とせず,JavaScript内で「クラス名.メソッド名」と 記述することにより,Javaの該当メソッドを呼び出すことが出来きる、サーバー側の リモート・オブジェクトの 呼び出しに特化したフレームワーク。 ・利点 フレームワークによって自動生成されたJavascriptを読み込む以外には画面側に 制約がない ため、既存のAjaxツールキットと自由に併用することができます。 シンプルで余計な機能を提供しない分だけ、幅広く連携することが出来ます。 ・欠点 DWRがカバーする範囲は、基本的には「サーバのロジックを呼び出し、戻り値を 受け取る」までとなるため、その値を画面側でどのように利用するかはについては、 Javascriptでそのロジックを記述しなければなりません。 また、リッチなUIコンポーネントなども用意されていませんので、操作性の高い画面を 実現するには他のツールキットと併用する必要があり、別途そのツールキットの 知識も必要となります。 jMaki(じぇーまき) ・どんなもの? prototype.js、jQuery、Dojo、script.acul.us、Yahoo UI Libraryなどのさまざまな ライブラリ(フレームワーク)をラップし、Java、Ruby、PHP等からから簡単に利用 できるようにするライブラリ(フレームワーク)です。 ・利点 カスタムタグを利用してJavaScriptライブラリを利用するため、JavaScriptを 意識せずに、Ajaxアプリケーションを記述できるようになる。 ・欠点 さまざまな既存Ajaxツールキットのラッパーとしての動作を想定しているので、 カスタムタグは汎用的な設計となっています。 その為、1つのタグで、描画されるUIコンポーネントの種類や詳細な設定をすべて まかなおうとするので、属性値が多くなっている。 また、当然各UIコンポーネントごとにどのような設定項目があるかは異なり、 それを覚えていく 必要とAjaxツールキット自体の知識も必要となります。 RichFaces ・どんなもの? JSFを拡張し、独自のカスタムタグで、Javascriptを記述することなくAjax通信や リッチなUIコンポーネント(トグルパネルやツリーメニュー、ドラッグ&ドロップ) を 実現することができるようになっており、基本的にカスタムタグの使い方さえ 覚えれば、Ajax+リッチUIコンポーネントのWebアプリケーションが作成できるように なっています。 ・利点 基本的にJavascriptは記述せず、用途にあったカスタムタグを記述するだけで、 Ajaxを利用したリッチなアプリケーションを作成することができます。 ・欠点 抽象度の高い技術(JSF)をベースにし、さらにその中にJavascriptを隠蔽している 為、 既存のAjaxツールキットとの連携や、Javascriptを記述する場合などには逆に 制約があります。 ・それぞれのフレームワークのタイプは以下のような位置づけとなります。 ・「Ajax呼び出し専門系」 他のAjaxツールキットとの連携など、カスタマイズ性を備えたタイプ ・「既存Ajaxツールキットのラッパー系」 カスタマイズ性と生産性のバランスがよいタイプ ・「JSF拡張系」 カスタマイズ性よりもわかりやすさや生産性重視のタイプ ◆今回は上記の中で「Ajax呼び出し専門系」の技術であるDWRについて 説明いたします。 DWRについて DWRの概要 DWRはDirect Web Remotingの略でAjaxアプリケーションをJavaで 開発するためのJavaScriptとJavaの連携を行なうフレームワークです。 以下、DWRの全体像となります。 (http://itpro.nikkeibp.co.jp/article/COLUMN/20070406/267692/参照) DWRの特徴 ・リモートオブジェクトの呼び出し JavaScript内で「クラス名.メソッド名」と記述することによって,Javaの該当メソッドを 透過的に呼び出すことが出来ます。 以下、呼び出しイメージとなります。 (http://itpro.nikkeibp.co.jp/article/COLUMN/20070406/267692/参照) ・リバースAjax Java(サーバーサイド)からJavaScript(クライアントサイド)を非同期に呼び出す, サーバープッシュを実現する機能を備えています。 当機能には3つの通信方式(以下、表参照)があり、どの方式を採用するかはDWRが 自動的に判断し利用する仕組みになっています。 通信方式 説明 Comet 長期間接続したままにする方式 Polling 定期的に通信を発生させる方式 Piggyback 他の通信時にデータを相乗りさせる方式 ・他のフレームワークとの連携 DWRは,Spring,Struts,WebWork,JSF,Hibernate,Beehive,EJB3との連携機能を あらかじめ用意しています。 (DWRの定義ファイルをSpringのBean定義ファイル内に記述できる等) 多少の拡張により,Seasar2と連携させることも可能。 ・テストの容易性 DWRを利用するためのweb.xml内でDWRから提供されているサーブレットの デバッグ・モー ドを有効化することによりWebブラウザから 「http://コンテキストルート/dwr/」にアクセスすると,以下の画面が表示されます。 (http://itpro.nikkeibp.co.jp/article/COLUMN/20070406/267692/参照) ※sayHelloの引数に“DWR2.0”を入力して実行した画面 ・セキュリティ Ajaxでは懸念事項になりやすいXSS(クロスサイト・スクリプティング),CSRF(クロスサイト・ リクエスト・フォージェリ)の攻撃を抑えやすい構造になっています。 セキュリティのため,リバースAjaxなどの一部機能はデフォルトでは利用できない設定に なっており,利用する場合は明示的にweb.xmで設定を行う必要があります。 ・マルチブラウザ対応 JavaScriptはWebブラウザによって方言があり,これがAjax開発では大きな妨げとなるが、 DWRがライブラリとして提供するJavaScriptや動的に生成するJavaScriptは,IE、 FireFox、Opera、Safari、Konquerorなど複数のブラウザに対応しています。 ・アノテーションのサポート DWRは,アノテーションをサポートしており,dwr.xmlに設定する内容をJavaコードに 埋め込むことも可能になっています。 以上
© Copyright 2025 ExpyDoc