||This article has multiple issues. Please help improve it or discuss these issues on the talk page.
|Stable release||2.1.23 (Mojarra Reference Implementation) / June 13, 2013|
|Type||Web application framework|
JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process and is part of the Java Platform, Enterprise Edition.
- JSF 2.2 (2013-04-16) — JSF 2.2 introduced new concepts like stateless views, page flow and the ability to create portable resource contracts.
- JSF 2.1 (2010-10-22) — Maintenance release of 2.0. Only very minor amount of spec changes.
- JSF 2.0 (2009-06-28) — Major release for ease of use, enhanced functionality, and performance. Coincides with Java EE 6.
- JSF 1.2 (2006-05-11) — Many improvements to core systems and APIs. Coincides with Java EE 5. Initial adoption into Java EE.
- JSF 1.1 (2004-05-27) — Bug fix release. No specification changes.
- JSF 1.0 (2004-03-11) — Initial specification released.
How it Works
JavaServer Faces is based on a component-driven UI design model, using XML files called view templates or Facelets views. Requests are processed by the FacesServlet, which loads the appropriate view template, builds a component tree, processes events, and renders the response, typically in the HTML language, to the client. The state of UI components and other objects of scope interest, is saved at the end of each request in a process called stateSaving (note: transient true), and restored upon next creation of that view. Objects and states can be saved either on the client or server side.
JSF and Ajax
Because JSF supports multiple output formats, Ajax-enabled components can easily be added to enrich JSF-based user interfaces. The JSF 2.0 specification provides built in support for Ajax by standardizing the Ajax request lifecycle, and providing simple development interfaces to Ajax events, allowing any event triggered by the client to go through proper validation, conversion, and finally method invocation, before returning the result to the browser via an XML DOM update.
Ajax-enabled components and frameworks
The following companies and projects offer Ajax-based JSF frameworks or component libraries:
- JBoss RichFaces (derived from and replaces Ajax4jsf), Ajax-enabled JSF components for layout, file upload, forms, inputs and many other features.
- PrimeFaces Ajax framework with JSF components
- Oracle ADF Faces Rich Client, Oracle Application Development Framework
- Backbase Enterprise Ajax — JSF Edition, Ajax framework
- IBM Notes - XPages
- Apache MyFaces, The Apache Foundation JSF implementation with Ajax components
- Sun Java BluePrints AJAX Components
- ZK Ajax framework with JSF components
Facelets (which was designed specifically for JavaServer Faces) was adopted as the official view technology for JSF 2.0. This eliminates the life-cycle conflicts that existed with JSP, forcing workarounds by Java developers. Facelets allows easy component/tag creation using XML markup instead of Java code, the chief complaint against JSF 1.x.
The new JSF developments also provide wide accessibility to Java 5 annotations such as @ManagedBean, @ManagedProperty and @FacesComponent which removes the need for faces-config.xml in all cases save framework extension. Navigation has been simplified, removing the need for faces-config.xml navigation cases. Page transitions can be invoked simply by passing the name of the desired View/Facelet.
Addition of Partial State Saving and DOM updates are part of the built in standardized Ajax support.
JSF 2.0 also includes a number of other changes like adding support for events, separate development, staging, and production modes, similar to RAILS_ENV in Ruby on Rails, and significantly expanding the standard set of components.
- JSF Community - Home Page & Reference
- Oracle JavaServer Faces Technology
- JSF specification
- JSR 344 (JSF 2.0 and JSF 2.1)
- JSR 252 (JSF 1.2)
- JSR 127 (JSF 1.0 and 1.1)
- JSR 316 (Changes to JSF 2.0 in Java EE 6)
- JavaServer Faces Technology
- Bosch, Andy (2010-11-29). "Was ist neu in JSF 2.1" (in German). it-republik.de. Retrieved 2013-02-19.
- Ryan Lubke (5 December 2007). "Project Mojarra - the JSF RI gets a code name".
- Bergsten, Hans. "Improving JSF by dumping JSP". O'Reilly. Retrieved 18 August 2011.
- Official website The project page for JSF at java.net
- Core Servlets JSF Tutorials Tutorials with Source Code
- ICEfaces Official site of the ICEfaces Open Source Project
- JSR 276 Design-Time Metadata for JavaServer Faces Components
- James Holmes' JSF Resources Extensive listing of JSF articles, blog entries, tutorials, and more
- JSF Central JavaServer Faces Community
- Java EE 4 Tutorial Chapter 17: JavaServer Faces Technology
- Java EE 5 Tutorial Chapter 10: JavaServer Faces Technology
- Java EE 6 Tutorial Chapter 4: JavaServer Faces Technology
- JSF Tutorials, Examples and Articles catalog
- JSF Matrix listing various JSF implementations and their features
- Brief review on the latest changes to JSF 2.0 to be reflected in Java EE 6
- PrimeFaces Official site PrimeFaces