SSブログ

Servlet、JSP、JSF の変遷 [IC]

Java 言語を用いて Web アプリケーションを作成する場合、下記のような流れで技術が進んできた...と思う。もっとも、Servlet や JSP は基幹となる技術で JSF になってからも使われ続けているが。というか、Servlet や JSP をラップしていると言うべきか。
  • Servlet
    Java プログラムをサーバで動かす技術。HTTP プロトコルに対応した doGet とか dPost などのメソッドをオーバライドする。あらかじめソースコードをコンパイルしておかなければならない。 HTML を出力するなら、Java ソースコード中に out.print("<h1>Hello</h1>") のように記述する必要がある。Java 言語を用いて Web アプリケーションを作成するのにあたり最も基礎となる技術。

  • JSP
    Servlet だとソースコードをコンパイルしないといけないし、HTML を出力するのに不便であることから、もう少し簡単にできるようにしたのが JSP。HTML 中に「タグ」を書いて Java のクラスのメソッドを呼び出したりすることが出来る。PHP の Java 版のような感じ。あらかじめ、ソースコードをコンパイルしておく必要がない。

  • JSP ver.2.0
    JSP の仕様に EL 式を追加し、カスタムタグライブラリの作成にタグファイルを使用できるようにしたもの。他にも追加点はあるが省略。

  • JSF
    平たく言うと、MVC モデルで言うところのビュー層とコントローラ層を提供するフレームワーク。JSP のカスタムタグライブラリとして提供している。

  • WoodStock
    JSF をベースにした WEB 用の GUI コンポーネント。NetBeans に付属する。NetBeans でビジュアルエディタを使うと、このコンポーネントが使われる。今後の開発は停止するらしい。

  • ICEfaces
    Visual Web JSF, Web UI コンポーネントのマイグレーション によると WoodStock が開発停止して、今後はこちらに注力するらしい。ICEfaces に関しては 【ハウツー】JavaScriptの記述が不要! Java開発者向け本格的AjaxフレームワークICEfaces (1) JSFの文法でAjaxアプリを作成可能 (マイコミジャーナル) が詳しい。WoodStock と同様に JSF ベースの GUI コンポーネント。

  • JSF 2.0
    【特集】JBoss Seam - EJB 3.0時代のフレームワークを使いこなす (8) Faceletsとは (マイコミジャーナル
    Facelets が取り込まれるかも。JSP ベースの JSF ではなくなる模様。Tapestry みたいなもの?まだ正式に決まっていない。

他にも、Struts、Struts 2、Maaya、Spring、Wicket、Tapestry とかたくさんある。

JSP と JSF の関係を巧く表しているのが、【特集】JBoss Seam - EJB 3.0時代のフレームワークを使いこなす (8) Faceletsとは (マイコミジャーナル) にある次の文章。

JSP(Java Server Pages)はHTMLで記述されたWebページ上で動的なコンテンツを出力することのできる技術である。それに対してJSFは、動的なWebページの構築にコンポーネント・ベースのモデルを導入するためのフレームワークと言える。ただしJSFの仕様はJSPを拡張する形で設計されているため、JSFによるアプリケーションの作成はJSFのカスタム・タグを用いてプログラミングすることが作業の中心となる。
つまり、結局は、JSP に何かタグを書いて、そのタグの定義を別のファイルに書く。これらはライブラリにすることができ、そうすると、コンポーネントとして再利用しやすくなるよね、みたいなもの...だと思う。

JSF に関しては JSFアプリケーションの“表”と“裏” - ITアーキテクト [IT Architect] も参考になる。
タグ:Java
コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

コメント 1

師子乃

初めまして。

勉強させていただきます!
by 師子乃 (2018-12-05 20:26) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。