DWRはAjaxアプリを作りたいJava開発者にお勧めMyEclipseでAjax+Javaをやさしく開発(2)(1/4 ページ)

» 2007年01月27日 00時00分 公開
[水島和憲エクリプス]

MyEclipseはJava EE開発を効率化するプラグインの集大成でかつ統合開発環境だ。併せてAjaxの開発を容易にする機能も持ち合わせている。本連載では、サーバサイドにJava EEを、クライアントサイドにAjaxを用いたWebアプリケーションをMyEclipseを使って容易に開発する手法を紹介していく。また、AjaxとJava EEの連携にはAjax開発用のJavaフレームワーク「DWR」を活用する。(編集部)


 Ajaxアプリケーション開発用のライブラリは数多くありますが、Java開発者がすんなり入っていきやすいのはDWR(Direct Web Remoting)でしょう。本記事では、MyEclipseを使ってDWRの簡単なサンプルを開発しながら、DWRの面白さを解説します。

Ajaxアプリを作りたいJava開発者の悩み

 これまでサーバサイドのJava開発を行ってきた人でも、これだけAjaxが話題になると、そろそろAjaxアプリ開発も始めなければならないと、ソワソワし始めていることでしょう。ところが、Ajaxアプリケーションを開発するとなると、いろいろと新たに学習しなければならないことが多く、なかなか踏み切れないでいる人が結構多いのではないか、と予測されます。

 例えば、JavaScriptをマスターしなければならない、ブラウザの非互換性を解決しなければならない、非同期通信の実現方法サーバとクライアント間でデータ変換XMLで実現するのかJSON(JavaScript Object Notation)で実現するのかなど、悩ましいことが数多くあります。

編集部注:AjaxJSONそのものについて詳しく知りたい読者は、@IT リッチクライアント&帳票 フォーラムの「Webアプリのユーザビリティを改善しまくるAjax」を参照してください。

 そこで、Java開発者にお勧めしたいのが、DWRです。DWRの最大の特徴は、JavaScriptからサーバ側のJavaオブジェクトを利用できることです。しかも、まるでJavaのメソッド呼び出しのように記述できます。クライアントとサーバ間の非同期通信、サーバとクライアント間のデータ変換などはすべてDWRが処理してくれるので、Java開発者にとって敷居がとても低くなっています。

図1 DWRの概要 図1 DWRの概要

 DWRはApache Software License v2ライセンスで配布されています。

DWRの注目すべき特徴

 DWRの特徴を整理しましょう。

サーバ側のJavaはPOJO

 サーバ側の処理はPOJO(Plain Old Java Object)として実装するだけです。サーバとしての処理はすべてDWRのサーブレット(DWRServlet)が処理してくれます。POJOなのでAPサーバを起動しなくても、単独でテストできます。

編集部注:POJOそのものについて詳しく知りたい読者は、「J2EE Watch 第11回、米JBossは米Red Hatとマーケットシェア拡大を狙う」の「*2:POJO」を参照してください。

 場合によっては、サーブレットコンテキストを取得したいケースもあります。DWRでは、POJOからサーブレットコンテキストを取得して、HTTPセッションオブジェクトなどにアクセスすることもできます。

Java/JavaScript間のデータ変換で多くの型をサポート

 DWRでは、サーバのJavaオブジェクトとクライアントのJavaScriptオブジェクトの間でデータ変換を行います。文字列や単純な型については何も指定しなくても自動的に変換してくれます。また、次のような複雑な型であっても、簡単な記述を追加することでDWRが自動的に変換してくれます。

  • Arrayオブジェクト
  • Beanオブジェクト
  • Collectionオブジェクト
  • DOMオブジェクト
  • Enumオブジェクト

Struts、JSF、Springなどのフレームワークとの統合

 Webアプリケーション開発ではフレームワークを利用することが一般的です。DWRはこれらのフレームワークと連携できます。

 例えば、JSF(Java Server Faces)であれば、DWRからManagedBeansのオブジェクトを操作できます。

編集部注:JSFそのものについて詳しく知りたい読者は、「J2EE Watch 第5回、JSFと開発ツールのよい関係とは?」を参照してください。

多くのブラウザに対応

 ブラウザによってJavaScriptの振る舞いなど微妙な違いがあります。このクロスブラウザの問題はおっくうなものですが、DWRではブラウザの違いを気にする必要がありません。しかも、対応しているブラウザはIEFirefoxだけではなく、SafariOperaMozillaKonquerorなど多岐にわたります。

動的にページを生成するためのユーティリティメソッドを提供

 コレクションクラスのオブジェクトをHTMLのテーブルやリストに展開するためのメソッドが用意されています。JavaScriptに詳しくなくても、簡単にページをダイナミックに生成できます。

エラーハンドリング、タイムアウトハンドリング

 JavaScriptからサーバ側のJavaメソッドを呼び出すときに、エラーハンドラやタイムアウトの指定が簡単にできます。

リバースAjax

 DWR 1.xまでは、クライアントのJavaScriptからサーバのJavaオブジェクトを非同期に呼び出せました。DWR 2.0からは、逆に、サーバ側のJavaからクライアントのJavaScriptを非同期に呼び出せるようになりました。この機能によって、チャットのような対話型のAjaxアプリケーションを記述しやすくなっています。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。