世代別Web用フレームワーク

ちょっと前にmixiで書いた、勝手な俺世代定義ですけど。

  • 第一世代
    • Servlet APIに対する薄いラッパー。基本的にはServletJSPの世界。
    • 例えていうと、Struts1, Spring Web MVCなど。
  • 第二世代・マークアップ言語型
    • イベントドリブン・コンポーネント指向な感じ。「タブ」や「グリッド」などのよく使いそうなUIコンポーネントが、マークアップ言語のタグとして、フレームワークレベルで豊富に提供されていて、それらの「onClick」だとか「onChange」だとかをサーバ側のJavaのメソッドで直接拾える(感覚的には)。ただし、Ajaxは使ってなくてページ全体がいちいち遷移するところは第一世代と変わらず。UI定義は基本的にはHTML+JSP or Velocityがほとんど。.Netはデフォでこのレベルだったりするのかな??ほぼScriptレス(タグだけ)でちょっぴりリッチなUIが比較的簡単に作れそうなのがおいしそうなところでもあり、罠っぽい気がしないでもないところ。
    • 例えていうと、TapestryとかJSFとか?(多分)
  • 第二世代・Swing型
  • 第三世代・マークアップ言語型
    • 第二世代・マークアップ言語型がAjaxなどを利用して部分遷移が可能になり、よりイベントドリブンちっくになったもの。いわゆる「RIA」(リッチインターネットアプリケーションズ)を作るなら、フレームワークレベルで第三世代に到達していて、かつIDEまわりも充実していないと、実装者が余程の達人揃いでもない限りはちょっと厳しいそう。ちなみに、マークアップ言語はHTMLじゃなく、独自のXMLMozillaXULなどを利用しているものが主流っぽい。
    • 例えていうと、ZKなど。Flex2やSilverrightもここに入るかな?
  • 第三世代・Swing型
    • 第二世代・Swing型がAjaxなどを利用して部分遷移が可能になり、よりイベントドリブンちっくになったもの。そんなにJavaScriptやHTMLを書くのが嫌いですか?
    • 例えていうと、GWTなど。Java FXや生Flashもここかな?


今までのアプローチは、第一世代であるStruts1をベースに、いろんなフレームワークやライブラリを組み合わせてそれらをラップする形で独自フレームワークを構築し、やや強引に第二世代に(場合によっては、第三世代にまで)仕立て上げている感じ。私の現職の某御方は、何のライブラリもフレームワークも使わずにAjax回りを全部JavaScriptで自作したりとかしたらしい。そりゃ赤字にもなりますよ。


そしてそのちょっと前にはまず第一世代フレームワークを自作するところから始める時代もあったわけで、さらにそのちょっと前は第一世代フレームワークすら無しの生Servletと生JSPの時代で、そのさらに前は生ServletのみのほぼCGIな時代な訳ですが。


そんな訳で、個人的にはそろそろここらで第二世代や第三世代も使ってみたいところな訳ですけど、どうなんでしょうね。第二世代だとClickが面白そうで、第三世代だとZKが面白そうな気がするんですが。






まぁ、現実はやっぱり今日も明日もStrutsな訳ですけど。