JavaServer Faces
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タグを用いる場合の例を示す。