Personal tools
You are here: Home ブログ 井上 JJUGのJavaOne報告会とサーバサイドJavaのアーキテクチャの形
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

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ブラウザをいらないと思う感覚は新しい可能性なのかもしれません。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/jjug-javaone/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.