GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — JavaServer Faces - Wikipedia

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "JavaServer Faces" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL
(2021年6月)

Jakarta Faces (JSF) は、Eclipse Foundationが開発している、JavaベースのWebアプリケーションフレームワークである。

名称は下記の変遷をたどっている。

  • Java 8 までは Java Platform, Enterprise Edition の一部で JavaServer Faces という名称だった。
  • Java 9 以降は Eclipse Foundation の Jakarta EE に移管され、Jakarta EE 8, 9 は Jakarta Server Faces 2.3, 3.0 という名称だった。Jakarta Server Faces 3.0 からパッケージ名がjavax.facesからjakarta.facesに変更された。[1]
  • Jakarta EE 10 以降は Jakarta Faces という名称に変わった。JSFという略称が廃止された。[2]

概要

他の伝統的なリクエスト駆動型の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として開発されている。

バージョン

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

Facelets

Faceletsは、JSFのために開発されたWebテンプレートエンジンである。JSF 2.0からJSPに代わってJSFのデフォルトの画面表示技術として採用されている。Faceletsの最初のバージョンが登場したのは2005年のことで[4]、当時はJSF 1.1, 1.2をターゲットとしていた。JSFと同じコンポーネントベースのWebアプリケーションフレームワークであるApache Tapestryとは似通っており、Facelets自体もTapestryの考え方を一部取り入れている[5]。

Faceletsのテンプレートは主にXHTMLで作成される[5]。テンプレートを記述する方法としては、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 Struts」を参照

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

ページは入力をアクションに接続するディスパッチサーブレット (controller) を備えたモデルにマップされる。Strutsアプリケーションはビューを表示するために主にJSPを使用するため、手近なタグライブラリの使い方に影響を受けやすい。

WebObjects / Wotonomy

→詳細は「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

→詳細は「Apache Tapestry」を参照

Tapestryは動的で、堅固で、スケーラブルな Web アプリケーションをJavaで開発するためのオープンソースのフレームワークである。Tapestry は標準的な Java Servlet API の上に構築され、任意のサーブレットコンテナやアプリケーションサーバの上で動作する。JSFとは異なり、 TapestryはJSPを表示技術として用いない。代わりに、簡単に HTML をプレビューでき、編集できる (JSFベースのFaceletに類似した)別のテンプレートエンジンを選択している。

Microsoft ASP.NET

→詳細は「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

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

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

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

以下の企業やプロジェクトがAjaxに基づくJSFの実装や設計を提案している:

  • ADF Faces ADF Faces Rich Client, (ADF Faces site)
  • Backbase Enterprise Ajax ? JSF Edition, Ajax framework
  • OmniFaces オープンソースのJava JSF拡張フレームワーク
  • PrimeFaces オープンソースのJava JSF拡張フレームワークおよびリッチコンポーネント
  • ICEfaces オープンソースのJava JSF拡張フレームワークおよびリッチコンポーネント、JavaScriptを用いないAjax
  • jBoss Ajaxを用いたJSFコンポーネントであるRichFacesおよびAjax4JSF
  • MyFaces Ajaxコンポーネントを用いたJSF実装
  • Sun Java BluePrints AJAX Components(ウェブサイト)
  • MB Technologies BindowsFaces (BindowsFacesのウェブサイト)
  • ZK JSFコンポーネントを用いたAjaxフレームワーク (ZK JSF のサイト)
  • J4Fry Ajax JSF Solution (J4Fryのオープンソースコミュニティサイト)

脚注

  1. ↑ “Jakarta Faces Specifications | JSF Formerly JavaServer Faces | Jakarta EE | The Eclipse Foundation”. Jakarta® EE: The New Home of Cloud Native Java. 2025年9月25日閲覧。
  2. ↑ “Faces 4.0: rename "jsf" throughout source code to "faces" · Issue #1552 · jakartaee/faces”. 2025年9月25日閲覧。
  3. ↑ “Java EE 7でさらに使いやすく、便利になったJSF 2.2、CDI 1.1、EL 3.0の主な強化ポイント”. ZDNet (2013年9月30日). 2014年2月20日閲覧。
  4. ↑ https://web.archive.org/web/20130113100928/http://www.jsfcentral.com/articles/facelets_1.html
  5. 1 2 “FaceletsはぴったりとJSFにフィットします”. IBM (2006年2月21日). 2014年3月13日閲覧。

関連項目

  • グラフィカルユーザインタフェース
  • Apache Struts

外部リンク

  • Jakarta Faces
  • JavaServer Faces Technology

仕様

  • JSR 127 (JSF 1.0 and 1.1)
  • JSR 252 (JSF 1.2)
  • JSR 314 (JSF 2.0 and JSF 2.1)
  • JSR 344 (JSF 2.2)
  • JSR 372 (JSF 2.3)
  • Jakarta Server Faces 2.3
  • Jakarta Server Faces 3.0
  • Jakarta Faces 4.0
  • Jakarta Faces 4.1
Java
オラクル
現行
  • Java言語
    • 文法
    • キーワード
    • 履歴
  • JDK
    • OpenJDK
  • JVM
    • HotSpot
  • Java SE (Standard)
  • Card
  • JavaFX
廃止
  • Applet
  • Web Start (JNLP)
  • JRE
  • Java ME (Micro)
  • Java EE (Enterprise)
サードパーティ
Jakarta EE
  • Servlet
  • Pages
  • Faces
  • Messaging
  • Transactions
  • Enterprise Beans
  • RESTful
その他
  • Android SDK
    • Android Studio
  • Eclipse
  • GNU Classpath
  • GWT
  • Harmony
  • Hibernate
  • IcedTea
  • IntelliJ IDEA
  • Spring
  • Struts
  • WildFly
JVM言語
  • BeanShell
  • Clojure
  • Groovy
  • JRuby
  • Jython
  • Kotlin
  • Processing
  • Rhino
  • Scala
コミュニティ
カンファレンス
  • JavaOne
  • Devoxx
組織
  • Apache財団
  • Eclipse財団
  • JCP
  • オラクル
  • サン・マイクロシステムズ
人物
  • ジェームズ・ゴスリン
  • アーサー・ヴァン・ホフ
  • ウルス・ヘルツレ
  • パトリック・ノートン
  • カテゴリ カテゴリ
  • コモンズ コモンズ
  • ポータル Portal:コンピュータ
Webアプリケーションフレームワーク
ASP.NET
  • ASP.NET MVC
  • ASP.NET Web Forms
  • Umbraco
C++
  • CppCMS
  • Drogon
  • VVt
Groovy
  • Grails
ColdFushion
  • ColdBox Platform
Common Lisp
  • CL-HTTP
Haskell
  • Servant
  • Snap
  • Yesod
Java
  • Apache Struts
  • AppFuse
  • GWT(Google Web Toolkit)
  • ICEfaces
  • Jakarta Faces
  • Play
  • Spring
  • Tapestry
  • WebWork
  • Wicket
  • ZK
JavaScript
  • Angular/AngularJS
  • Backbone.js
  • Dojo Toolkit
  • Express.js
  • Ext JS
  • jQuery
  • Knockout.js
  • MooTools
  • Node.js
  • Prototype
  • React
  • Rico
  • Sencha Touch
  • Vue.js
  • Hono
  • ElysiaJS
  • Qwik
Perl
  • Catalyst
  • Dancer
  • Maypole
  • Mojolicious
  • WebGUI
PHP
  • CakePHP
  • CodeIgniter
  • Drupal
  • eZ Publish
  • Fat-Free
  • Flow
  • FuelPHP
  • Grav
  • Gyroscope
  • Horde
  • Joomla!
  • Laminas
  • Laravel
  • Midgard
  • MODX
  • PRADO
  • Symfony
  • TYPO3
  • XOOPS
  • Yii
Python
  • BlueBream
  • CherryPy
  • Django
  • Flask
  • Plone
  • Pylons
  • Tornado
  • TurboGears
  • web2py
  • Zope
  • Zope2
Ruby
  • Merb
  • Padrino
  • Ruby on Rails
  • Sinatra
Rust
  • Rocket
Scala
  • Lift
  • Play
  • Scalatra
Smalltalk
  • AIDA/Web
  • Seaside
その他
  • Application Express (PL/SQL)
開発終了
  • Silex
カテゴリ カテゴリ
「https://ja.wikipedia.org/w/index.php?title=JavaServer_Faces&oldid=106604774」から取得
カテゴリ:
  • Java enterprise platform
  • Java specification requests
  • ウェブアプリケーションフレームワーク
  • Eclipse Foundation
隠しカテゴリ:
  • 出典を必要とする記事/2021年6月
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.