JJUGのJavaOne報告会とサーバサイドJavaのアーキテクチャの形
「JJUGクロスコミュニティカンファレンス 2010 Fall」でJavaOne報告会のスピーカのひとりとして参加してきました。
プレゼン資料(ppt or pdf)を公開します。
性懲りもなくJava EEの話です。参考までに以前Java EE 6について話した時の資料のリンクも張っておきます。
まるで自分はJava EEが好きな人みたいです。不思議です。
以前、Yahoo!の浜辺さんとの共同開発の過程でWebアプリのアーキテクチャが自然にある形に収束しました。
従来のようにWebサーバが(テンプレート言語などで)HTMLを構築するのではなく、サーバは基本的にJSONで返して、HTML画面のDOMの組み立てをクライアントサイドが行うアーキテクチャです。最初のリクエストでサーバはHTMLの骨格とJavaScriptを返します。このHTMLの骨格は動的データの表示領域を持ちますが動的データは含んでいません。その代わり、クライアントのJavaScriptがデータを取得するXHR(XMLHttpRequest)リクエストを投げます。このリクエストに対してサーバは動的データをJSONで返します。JSONを受け取ったクライアントサイドのJavaScriptは骨格のHTMLの中に動的データを埋めていきます。これは従来のサーバサイドのテンプレート言語で行っていた処理に相当します。いわゆるMVCアーキテクチャのうちのVの部分、ビュー的な処理(プレゼンテーション層)をそっくりクライアントサイドに移動するイメージです。
図示すると以下のようになります。いわゆるサーブレットMVC2と比較すると、JSPのビュー処理にフォワードする時のコンテキスト(JSPから参照するBean)相当をJSONで返す形になります。以下の図のBeanとJSONが同じデータの別表現です。
従来(MVC2) クライアント サーバ request -----> servlet | 内部処理 | forward | with Bean V ^^^^ JSP <----- response (HTML) HTML+AJAX クライアント サーバ request -----> <----- response(骨格HTML+AJAX用JS) XHR -----> 内部処理 <----- response(JSON) ^^^^
JJUGで同じ結論に達している人が結構いたので、ますますこのアーキテクチャの正しさの確信が高まりました。
JSPなどのテンプレート言語の時代は終わりました。
JavaScriptが動かないWebブラウザはどうするのだという話はありますが、知りません。
ちなみにJJUGの発表はこういう堅い話はしていません。
上図のHTML+AJAXは、2回リクエストを飛ばすのがムダに見えます。しかし、クライアントがAndroidのネイティブアプリなら最初のリクエストは不要です。単に欲しいデータをJSONで受け取りクライアント側のコードで加工します。
しかし、この形はWeb以前のC/S(クライアントサーバ)そのものです。PC+Windowsの組み合わせがスマートフォン+Androidに置き換わっただけです。みんな、クライアント側にネイティブアプリをたくさん入れると色々と面倒なので、多少不便でもWebブラウザでいいや、という選択をしたはずです。また一周戻るのでしょうか。
ところで、JJUGは全体的に年齢層が高くないですか?と関係者に言ったら、JavaはそうだけどAndroid関係はそうでもないよ、と回答をもらいました。今度、Androidコミュニティに参加してWebブラウザをいらないと思うか聞いてみようと思います。Webブラウザをいらないと思う感覚は新しい可能性なのかもしれません。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/jjug-javaone/tbping