JEE 6 is almost upon us. An important specification in the plethora of standards that JEE 6 contains is JSR-314: JavaServer Faces 2.0. First introduced in JEE 5 (2006), JSF has quickly conquered the minds and hearts of many Java Web developers as well as most large vendors in the Java industry who each offer a library with JSF components, based on this standard – Sun (Mojarra, also the Reference Implementation), Oracle (ADF Faces), JBoss (RichFaces), BackBase, IBM, ICEFaces, WebGalileoFaces, Apache MyFaces, OpenFaces, NetAdvantage, JViews and dozens of others.
Even though many web development projects still use JSP with Struts and various Tag libraries or frameworks such as Tapestry or Velocity, an increasing number of organizations adopt JSF as their primary web (view) development technology. Some of these organizations standardize on a single JSF library while others mix and mingle or use different libraries on different projects. The combination of JPA and JSF seems particularly appealing, as for both several great implementations are available (Hibernate, EclipseLink for JPA and the many JSF libraries listed above) that work together well. The same JPA and JSF skill set can be used by developers on projects using whichever implementation of these standards – a huge boon compared to the relatively disparate skills required for developing with JSP/Struts, Tapestry, Spring MVC or other Web frameworks.
At the end of May 2009, the specification for JavaServer Faces 2.0 got finalized. Now we know what we will be getting from all the JEE 6 implementations that are coming our way (though there some bits and pieces in other specifications still under debate that will shine through in JSF 2.0, such as bean validation and EL features).
Even though the 2.0 release does not preach revolution, it contains a number of new elements that are pretty big steps forward compared to JSF 1.x. Positioning Facelets as the primary ViewDeclarationLanguage, support for AJAX, fine grained event mechanism, facilities for smart resource loading/serving, integration with the Bean Validation spec, introduction of View Parameters and extended support for GET requests and view bookmarking, new managed bean scopes, smarter (annotation driven) configuration and a central exception handler are among the eye catching new features and facilities.
The Mojarra project has provided the reference implementation for JSF 2.0. There is nothing really holding us back from trying it out.
The JSF 2.0 specifications on the JCP website.
JSFCentral – website with many (many!) resources on JavaServer Faces
Sun JEE Technology – JavaServer Faces – overview of JSF and the Sun implementation of release 2.0 (Mojarra)
Why you didn’t know the Unified EL is being updated – Blog article on Updates to the Unified Expression Language
What’s new in JSF 2.0 – by Andy Schwartz.
Introduction on Serving Resources in JSF 2.0
JSF 2.0 – event handling & AJAX by David Geary