JavaでAjax 第1回
2008年06月16日
もうすっかりおなじみの用語になりましたAjaxですが、
皆さんはJavaでAjaxを使ったプログラムを作ったことはありますか?
そもそもAjaxですが、突然ぽっと出てきた技術ではなく、既存の技術の組み合わせに
あるとき名前がつけられたものです。
AjaxはAsynchronous (エイシンクロナス、非同期) JavaScript + XML の略で
Webブラウザでのページ遷移なしの動的なWebアプリケーション作成
を作成可能にする技術であるとして宣伝されました。
読み方は「アジャックス」「エイジャックス」と聞くことが多いですが、
どちらでも間違いではないみたいです。
ちなみに、筆者は後者で呼んでいます。
余談ですが、筆者はけっこう早い時期からAjaxに興味を持っていて、知り合いに
Ajaxすごいよ!とよく言ってまわってましたが、JavaScript?ふーん。みたいな反応が
ほとんどで悲しかった記憶があります。余談終わり。
そのAjaxと呼ばれる技術が急速に注目されだしたのはやはりGoogleが
GoogleMapを発表したときではなかったでしょうか。
それまでAjaxはGoogleサジェストなどの動的な言語補完にしか実際のところ
使えないんじゃないかみたいな雰囲気がありましたが、Googleは見事にそんな
常識を打ち破ってくれました。
Ajaxはもともとはその名のとおり非同期通信の技術の組み合わせとして宣伝されたのですが、
GoogleMapがでてきたあたりから、ドラッグ&ドロップや画像のエフェクトなど
JavaScriptを使ったリッチアプリケーション全般がAjaxという言葉の意味に含まれる
ようになったような気がします。
また余談ですが、初めてGoogleMapを使ったときの興奮はいまでも覚えていて、面白いのと
仕組みが気になるのとで、その日は仕事そっちのけでした。余談終わり。
さて、そんなAjaxですが自分でいざ作るとなると、なんか難しそうで躊躇してしまう
方もいるのではないでしょうか。
でも、そんなことはありません。
JavaScriptのXMLHttpRequestクラスを生で使うならともかく、今は世の中にたくさんの
フレームワーク(ライブラリ)が存在しているので作るのがとても楽になりました。
まず最初に、もっとも手軽にAjax気分が味わえるフレームワークとして
Lightboxがあります。
これはJavaどころかJavaScriptのコードを書く必要がありません。
HTMLの記述だけでリッチアプリケーションを作成することができます。
さて、本題のサーバサイドにJavaを使用する場合のAjaxですが、
おすすめのひとつとしてDWRというフレームワークがあります。
DWRをおすすめする理由ですが、まず第一にサーバ側のJavaをPOJOで書くことができるという
点です。POJOが可能なのはDWRがサーブレットを内包しているためです。
また、StrutsやSpringなど主要なフレームワークとの連携機能をあらかじめ備えています。
ただ残念なことに人気のSeasar2との連携機能はないようですが、Seasar2で使えない
というわけではありません。
そして、DWR2.0からはサーバからクライアントを非同期で呼び出す、Reverse Ajaxという
機能が搭載されています。これはWebアプリケーションの可能性をいまよりも広げるもので、
チャットはもちろんのこと、従来は定期的に画面のリロードを行って情報を更新していた処理
などはその必要がなくなります。ほかにも様々な用途に使用できるものと思います。
ほかにも、細かい点ではマルチブラウザ対応、アノテーションのサポートなど便利な機能が
たくさんありますが、話が長くなりますので今回はこの辺で。。。
次回はDWRを使った実際の作り方など詳細なポイントについて取り上げていきたいと思います。
