(Translated by https://www.hiragana.jp/)
JavaServer Faces - Wikipedia コンテンツにスキップ

JavaServer Faces

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

JavaServer Faces (JSF) は、JavaベースのWebアプリケーションフレームワークである。Javaの拡張かくちょう機能きのうセットであるJakarta EE (きゅう・Java EE) の仕様しようひとつに採用さいようされ、名称めいしょうがJakarta Server Facesに変更へんこうされている。Jakarta EE9からパッケージ名称めいしょうもjavax.facesからjakarta.facesに変更へんこうされた。

概要がいよう

[編集へんしゅう]

伝統でんとうてきなリクエスト駆動くどうがたMVC Webフレームワークとことなり、JSFはコンポーネントベースのアプローチをとっている。 UIコンポーネントの状態じょうたいは、クライアントがあたらしいページをリクエストしたさい保存ほぞんされ、リクエストにたいするレスポンスがかえされるときに復帰ふっきされる。JSFは当初とうしょ画面がめん表示ひょうじ技術ぎじゅつJavaServer Pages (JSP) をもちいていたが、2.0以降いこうはより普通ふつうHTMLちかFacelets採用さいようされている。

JSFには下記かき要素ようそふくまれる:

  • UIコンポーネントの表現ひょうげん状態じょうたい管理かんり、イベントのハンドル、変換へんかん、ページナビゲーションの定義ていぎ国際こくさいアクセシビリティサポートなどのためのAPIセット
  • UIコンポーネントのデフォルトのセット
  • JSPページないのJavaServer Facesインタフェースを表現ひょうげんするためのふたつのJSPカスタムタグライブラリ
  • サーバサイドのイベントモデル
  • 状態じょうたい管理かんり
  • 管理かんりBean (Managed Bean)
  • JSP 2.0 と JSF 1.2 のための式言語しきげんご(EL 3.0以降いこう独立どくりつした規格きかくとなっている。)

JSF仕様しようJava Community Processもとで、JSF 1.0および1.1を定義ていぎするJSR127として、 JSF 1.2を定義ていぎするJSR252として開発かいはつされた。またJSF 2.0はJSR 314として開発かいはつされている。

JSF のバージョン

[編集へんしゅう]
  • JSF 1.0(2004ねん3月11にち): (DEPRECATED) JSF仕様しよう最初さいしょのリリース
  • JSF 1.1(2004ねん5月27にち): (DEPRECATED) バグフィックスリリース。HTML仕様しようやHTML 出力しゅつりょく部分ぶぶん変更へんこうはない。
  • JSF 1.2(2006ねん5月11にち): コアシステムとAPIにおおくの改善かいぜんふくむリリース。Java EEに採用さいようされた最初さいしょのバージョンで、Java EE 5にふくまれる。
    • コンテンツ織込おりこみの問題もんだいについての暫定ざんていてき解決かいけつさく提供ていきょうする改善かいぜん内容ないようについては、[1]記述きじゅつされている。
    • 設定せっていファイルに DTD のわりに XML Schema を提供ていきょう
    • Faces アプリケーションが、複数ふくすうのフレームや複数ふくすうのウインドウをつ UI デザインができるような改善かいぜん
    • TCKのサポート範囲はんいおおくするための f: タグライブラリの改善かいぜん、 f:viewライフタイムイベント、そのちいさな機能きのう改善かいぜん
    • API オブジェクトのデコレータのサポート
    • クライアントがわでの状態じょうたい保存ほぞんのためのセキュリティの改善かいぜん
    • ボタンの多重たじゅう問題もんだい解決かいけつ
    • 実装じっそう容易よういにするため、仕様しようしょ標準ひょうじゅん記述きじゅつしている部分ぶぶんとそうでない部分ぶぶん分離ぶんりするよう整理せいり
    • Portlet関連かんれんするバグ修正しゅうせい
    • 最小限さいしょうげん仕様しよう変更へんこうともなうバグ修正しゅうせい
  • JSF 2.0(2009ねん6月28にち) : 使つかいやすさの改善かいぜん機能きのう追加ついか、パフォーマンスの向上こうじょうはかられたメジャーリリース。Ajax対応たいおう。Java EE 6にふくまれる。
  • JSF 2.1(2010ねん10月22にち) : 2.0のメンテナンスリリースで、ごくちいさな仕様しよう変更へんこうおこなわれている。
  • JSF 2.2(2013ねん5月21にち) : HTML5対応たいおう、テンプレートをえるリソース・ライブラリ・コントラクト、画面がめん遷移せんい管理かんりするFacesフロー、サーバーがわでコンポーネントツリーを保持ほじしないステートレス・モードの追加ついか、といった変更へんこうくわえられている。Java EE 7 にふくまれる。[1]
  • JSF 2.3(2017ねん4がつ17にち) :Java EE 8 にふくまれる。WebSocket機能きのう、CDI拡充かくじゅう、BeanValidation相関そうかんチェック対応たいおう、Date and Time API(JSR-310)対応たいおう、Ajax機能きのう強化きょうか

Faceletsは、JSFのために開発かいはつされたWebテンプレートエンジンである。JSF 2.0からJSPわってJSFのデフォルト画面がめん表示ひょうじ技術ぎじゅつとして採用さいようされている。Faceletsの最初さいしょのバージョンが登場とうじょうしたのは2005ねんのことで[2]当時とうじはJSF 1.1, 1.2をターゲットとしていた。JSFとおなじコンポーネントベースのWebアプリケーションフレームワークであるApache Tapestryとは似通にかよっており、Facelets自体じたいもTapestryのかんがかた一部いちぶれている[3]

FaceletsのテンプレートはおもXHTML作成さくせいされる[3]。テンプレートを記述きじゅつする方法ほうほうとしては、Facelets独自どくじのXMLタグを直接ちょくせつ手法しゅほうと、通常つうじょうのXHTMLタグにjsfc属性ぞくせいもちいて間接かんせつてき手法しゅほうの2つがある。以下いかにまず独自どくじのXMLタグをもちいる場合ばあいれいしめす。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
    <body>
        <h:form>
            <h:outputText value="Welcome, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />
            <h:inputText value="#{bean.property}" />
            <h:commandButton value="OK" action="#{bean.doSomething}" /> 
        </h:form>
    </body>
</html>

jsfc属性ぞくせいもちいた場合ばあいうえれい以下いかのようになる。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
    <body>
        <form jsfc="h:form">
            <span jsfc="h:outputText" value="Welcome, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />
            <input type="text" jsfc="h:inputText" value="#{bean.property}" />
            <input type="submit" jsfc="h:commandButton" value="OK" action="#{bean.doSomething}" /> 
        </form>
    </body>
</html>

jsfc属性ぞくせいもちいたテンプレートの場合ばあいのアプリケーションからは普通ふつうのXHTMLとしてあつかえるため、ブラウザで表示ひょうじ確認かくにんしたり、WYSIWYGデザインツールをもちいて編集へんしゅうしたりすることができる。

の Web GUI フレームワークとの比較ひかく

[編集へんしゅう]

StrutsはApacheソフトウェア財団ざいだん提供ていきょうするMVCフレームワークである。Strutsはpage-at-a-timeがたのMVCフレームワークを提供ていきょうし、JSFスタイルのコンポーネントモデルはそなえていない。

ページは入力にゅうりょくをアクションに接続せつぞくするディスパッチサーブレット (controller) をそなえたモデルにマップされる。Strutsアプリケーションはビューを表示ひょうじするためにおもJSP使用しようするため、手近てぢかなタグライブラリの使つかかた影響えいきょうけやすい。

WebObjects / Wotonomy

[編集へんしゅう]

WebObjectsは、よくられたもっと初期しょきのWebアプリケーションフレームワークで、元々もともとNeXT Softwareによって開発かいはつされた。そのApple ComputerがNextを買収ばいしゅうしたさい獲得かくとくされた。 WebObjectsはJSF 同様どうようのコンポーネントおよびイベントモデル、ライフサイクルをそなえている。 J2EEがなくても配備はいびすることができ(もともとの構成こうせい)るが、サーブレットコンテナーない配置はいちすることもでき、その場合ばあいにはディスパッチャオブジェクトがJ2EE Webアプリケーションのエントリーポイントとして動作どうさする。

JSF(の既定きてい動作どうさ)とはことなり、コンポーネントはJSPファイルには定義ていぎされず、html/xml/wmlテンプレートファイル、フィールドやアクションをJavaコードにマップするファイル、.javaクラスファイルのいずれかあるいはすべてをふく.wocディレクトリに定義ていぎされる。テンプレートファイルは表示ひょうじとレイアウト部分ぶぶん提供ていきょうし、のWebObjectsコンポーネントをふくんでもく、JSFが既定きてい使用しようするRenderKitへの委譲いじょうのアプローチとはことなる。これは、JSFでの委譲いじょうモデルと直接ちょくせつ描画びょうがモデルのなかあいだてんにある。

WebObjectsは、もっと初期しょきオブジェクト関係かんけいマッピングのフレームワーク、Enterprise Objects Frameworkそなえた、レイヤーされたアーキテクチャをふくんでいる。

Wotonomyは、WebObjectsフレームワークのオープンソースのさい実装じっそうであり、クリーンルームで(訳注やくちゅう:プロプライエタリのコードを使用しようしないよう注意ちゅういして)開発かいはつされ、 LGPL でライセンスされている。WotonomyはWebObjectsのすべての部品ぶひん実装じっそうしようとこころみており、完全かんぜんなMVC web-GUIスタックを実装じっそうしている。WebObjectsのクローンであり、未完成みかんせい部分ぶぶんのぞけばJSFとのちがいはWebObjectとまった同様どうようである。

Apache Tapestry

[編集へんしゅう]

Tapestryは動的どうてきで、堅固けんごで、スケーラブルな Web アプリケーションをJavaで開発かいはつするためのオープンソースのフレームワークである。Tapestry は標準ひょうじゅんてきな Java Servlet API のうえ構築こうちくされ、任意にんいのサーブレットコンテナやアプリケーションサーバのうえ動作どうさする。JSFとはことなり、 TapestryはJSPを表示ひょうじ技術ぎじゅつとしてもちいない。わりに、簡単かんたんに HTML をプレビューでき、編集へんしゅうできる (JSFベースのFaceletに類似るいじした)べつのテンプレートエンジンを選択せんたくしている。

Microsoft ASP.NET

[編集へんしゅう]

JSFは、Webアプリケーションの開発かいはつに、マイクロソフトのASP.NETにたコンポーネントベースのアプローチをとっている。JSFではレンダリングとコンポーネントのインターフェイスが分離ぶんり可能かのう出力しゅつりょく部分ぶぶんカスタマイズできるが、ASP.NET v1では、コンポーネントの出力しゅつりょくのコードは UI コンポーネントに結合けつごうされている。ASP.NET v2は制御せいぎょアダプターフレームワークを導入どうにゅうし、標準ひょうじゅん出力しゅつりょくエンジンをサードパーティーのコードでえることができる。

コンポーネントから生成せいせいし、コンポーネントとはべつのファイル ("code behind") に格納かくのうされるイベント受信じゅしんすることでビジネスコードが UI コンポーネントに接続せつぞくされる。 したがって、典型てんけいてきな ASP.NET のページは視覚しかくじょうのページレイアウト(デザイン)を記述きじゅつした (HTML) ファイルと、ページのロジック(コード)を記述きじゅつしたファイルからなる。マイクロソフトの開発かいはつツールによって、両方りょうほうのファイルをひとつの要素ようそとしてあつかうことができる。

書籍しょせきCore JSF著者ちょしゃによれば JSFはVisual Studio 2005にたようなRapid application development (RAD) の領域りょういきでJavaがASP.NET/Visual Studioと競争きょうそうできるような手段しゅだん提供ていきょうし、開発かいはつコストや開発かいはつはじめるさい障壁しょうへきげている。

JSFはリッチインターネットアプリケーション技術ぎじゅつであるAjaxとともに言及げんきゅうされることがおおい。Ajaxはリッチなインターユーザインタフェース作成さくせい可能かのうにする技術ぎじゅつわせである。Mojarra(JSF のリファレンス実装じっそう)とApache MyFacesにおけるユーザインタフェースコンポーネント は元々もともとは HTML のためだけに開発かいはつされたもので、AjaxはJavaScriptをかいして追加ついかせねばならなかったが、これはわった。

JSFは複数ふくすう出力しゅつりょく形式けいしきをサポートしているため、JSFベースのユーザインタフェースの品質ひんしつ向上こうじょうさせるため、Ajax をもちいるコンポーネントを簡単かんたん追加ついかすることができる。JSF 2.0 仕様しようでは、UI ロジックの一部いちぶがサーバがわだけではなくクライアントがわでも動作どうさできるようにし、また JavaScript がブラウザで無効むこう場合ばあいにもうまく品質ひんしつとせるようにすることで、Ajax のサポートを改善かいぜんすることを意図いとしている。

AjaxをもちいるJSFコンポーネントとフレームワーク

[編集へんしゅう]

以下いか企業きぎょうやプロジェクトがAjaxにもとづくJSFの実装じっそう設計せっけい提案ていあんしている:

脚注きゃくちゅう

[編集へんしゅう]
  1. ^ Java EE 7でさらに使つかいやすく、便利べんりになったJSF 2.2、CDI 1.1、EL 3.0のおも強化きょうかポイント”. ZDNet (2013ねん9がつ30にち). 2014ねん2がつ20日はつか閲覧えつらん
  2. ^ https://web.archive.org/web/20130113100928/http://www.jsfcentral.com/articles/facelets_1.html
  3. ^ a b FaceletsはぴったりとJSFにフィットします”. IBM (2006ねん2がつ21にち). 2014ねん3がつ13にち閲覧えつらん

参考さんこう文献ぶんけん

[編集へんしゅう]

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]