JavaでAjaxを利用する時には、色々な選択肢が考えられます。
どのような選択肢があるかについて考察してみました。
- 独自実装
- XMLHttpRequest
- JavaScriptライブラリを利用
- prototype.js
- Yahoo! UI Library
- jQuery…など
- 低レベル実装の利用
- Ajax Tag Library
- AjaxTags(Java Web Parts)
- 高レベル実装の利用
- GWT(Google Web Toolkit)
- JSF(Java Server Faces – AjaxFaces)
独自実装
独自実装は、外部のJavaScriptライブラリなどを使用せず、標準のJavaScriptの機能のみを使って実装します。
クロスブラウザ対応などが必要になってしまうため、一般向けのサイトでは難しいと思いますが、
「ブラウザ限定」「使用するライブラリが厳しい」「ちょっとした入力チェックだけ」といった要件であれば、十分に使えると思います。
JavaScriptライブラリ
JavaScriptライブラリを利用するというのは、今一番利用されているケースだと思います。
独自実装をするよりも、簡単に記述できるし、クロスブラウザ対応もなされています。独自実装を選ぶ前に、可能であればこちらの選択肢を検討すべきです。
欠点は、現状ではJavaScriptライブラリが乱立しすぎていて、どれを使用すべきが迷ってしまうことです。ほんの一部だけ列挙しましたが、現在のJavaScriptライブラリの乱立っぷりは、学習意欲がなくなりそうなほどです。
低レベル実装
3つ目の低レベル実装というのは、古くから実績のある技術で実装したケースを表現しています。
JavaScriptライブラリとの境界線が微妙ですが、今のところ考えられるのは、カスタムタグ(タグライブラリ)を使った実装です。
あまり隠蔽しすぎてしまうと、昔からHTMLを使って書いてきた人にとっては、かえって分かりにくいし、
だからといって、JavaScriptバリバリというのも、生産性が悪いので、「Ajaxを使用したパターンでありがちなものを、簡単に実装する」ぐらいの使い方がイイトコドリだと思います。
私は、このカテゴリの実装に注目しています。
高レベル実装
最後の高レベル実装は、Webアプリケーションの最終形態と考えられます。
Webアプリケーションを意識させない、完全なコンポーネントで、Ajaxを実装してしまうパターンです。
まだ未成熟だと思いますし、Webで要求される外観がどうしてもHTML的でないので、まだ流行らないと思っています。
(HTMLでの○○は、どうやって実現するのか?と悩むことが多い)
また、なにか不具合があった場合に、中身まで調べるのが大変だと思います。
Ajaxを使う用途についても、検討すべきだと思います。
例えば、Ajaxを使ったありふれた、ユーザーインタフェースを実現する場合には、3.4.の方が便利だと思います。
オートコンプリートなどがそうで、これを独自実装や、JavaScriptライブラリで自力実装すると結構大変です。
よく使われるものについては、コンポーネント化が進んでいると思うので、それを利用した方が懸命です。
一方、JavaScriptでの入力チェックを拡張して、サーバーサイドでのチェックも実行されるようにする場合は、独自実装や、JavaScriptライブラリで十分かと思われます。
Ajaxという生の技術だけで十分な用途と、Ajaxを使ったUIパターンを使いたい用途では、選択肢は変わって来ます。
AjaxTagsを使った記事を書いてみました。