Personal tools
You are here: Home ブログ 井上 JSFとJAX-RSの比較で思いついた説明
« 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

JSFとJAX-RSの比較で思いついた説明

Java話が続いています。でも今回でしばらくJava話は打ち止めです。なぜならありえるえりあ勉強会(http://atnd.org/events/8956)に備えてLisp脳になる必要があるからです。Lisp脳になるには頭からJavaを追い出す必要があります。Javaのような不純な言語が頭に残っているとLisp脳にはなれません。

Java EEについて話す中(http://dev.ariel-networks.com/articles/JJUG/jjug-javaone/view)で、JSFとJAX-RSは同じような問題領域の規格です、と説明しました。もう少し良い説明を思いついたので書きます。

ふたつの説明の前にJava EEのWeb-tierとEnterprise-tierの区分けに触れます。

簡単に言うと、Web-tierはHTTPの世界と接点を持つアプリ用の規格です。Enterprise-tierはトランザクションの世界と接点を持つアプリ用の規格です。トランザクションの世界の裏に永続層がいるかどうかは基本的には隠蔽されていますが、一般には裏にデータベースがあるので、Enterprise-tierはデータベースの世界と接点を持つアプリと考えても問題ありません。

JSFとJAX-RSは、どちらもWeb-tierの世界の規格です。Web-tierには他にもサーブレットAPIやJSPなどありますが、それぞれがレイヤ別に棲み分けています。そんな中でJSFとJAX-RS(ついでに言うとJAX-WSもですがこれは無視します)がほぼ同レイヤというのが、冒頭の説明の趣旨です。

もっとも、ふたつの規格のボリュームは全然違います。JSFの方が遥かに大きな仕様です(規格書のページ数だけ見れば10倍近い差)。

ふたつの違いをHTTPの世界の見立ての違いで説明してみます。

JSFはHTTPの世界をページ遷移で見立てます。Struts以後の伝統的な見立てです。JSFはページ間の遷移をイベントで見立てます。

JAX-RSはHTTPの世界をRESTで見立てます。つまりURLと(HTTP)メソッドの世界です。

HTTPそれ自体は通信プロトコルに過ぎません。その世界をどう見立てるかは、どう抽象化するかということです。明らかにJSFの方が抽象度は高いです。と言うよりJSFに比べると、JAX-RSはHTTPの世界をダイレクトにAPIにマップしているだけにすら見えます。

普通、抽象度が上がるとアプリのコードは単純化します。JSFの方が抽象度が高いのでアプリが単純化しそうですが事実は逆です。JAX-RSアプリのコードの方がずっと単純になります。しかし、一般にソフトウェアの複雑さは消滅することはありません。単にどこかに移動するだけです。よくできたAPIやフレームワークは複雑度を下位に移動して隠蔽することで、消したように見せかけるだけです。

では、JAX-RSでの複雑さはどこに消えたのかと言うと、これはクライアント側(Webブラウザ側)に移動したと見るべきなんだと思います。ちなみに移動した複雑さに対しては次のような動きもあります(クライアントJavaScript向けのMVCフレームワーク)。今後、他にも似たものが色々と現れると思います。

先日書いたように(http://dev.ariel-networks.com/Members/inoue/jjug-javaone)、個人的にはページ遷移からRESTへ、と思っています。が、下記文書で、昔の自分は「ページ・ドリブン」に共感していました。5年経つと考えも変わるようです。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/web-tier/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.