In my report on JFall 2009 I already wrote about JSF 2.0. I wanted to make an extensive posting about new features in JSF 2.0, but then I came across this excellent posting of July last year: What’s New in JSF 2? by Andy Schwartz of Oracle. I won’t rehash this and many other excellent postings on jsf – I’ll just shortly write what’s great about JSF 2.0, in comparison to JSF 1.2.
In short, main new feature of JSF 2.0 is standardization a frameworks that extended JSF 1.2:
- Ajax – provided in JSF 1.2 by amongst others by Richfaces (ajax4jsf). Standardization allows different ajax-libraries to work together.
- Other scopes besides application, session and request scope – provided in JSF 1.2 by amongst others Spring Webflow, JBoss Seam and Apache Orchestra. One notable flow is the flash-scope: a scope that is longer than the request scope, but shorter than the session scope. This scope can be used when you want to persist values between requests on the same page, but don’t care if a value is lost when the users navigates away from that page.
- Facelets – Apache Facelets replaced JSP as rendering engine for JSF 1.2 – in JSF 2.0 facelets has become a standard – and makes JSP legacy (at least when you use JSF). Facelets allows a developer to very easily create (truly) reusable components and templates.
Creating re-usable components is something that is done rarely (well) in frontend development, and even more rarely web development – similar or even the same functionality is recreated countless times within the same company and even the same project. Facelets can change that!
- Better support for GET-request – which was already provided by Seam for JSF, and many other webframeworks. At least now you’re not limited to POSTs when using JSF. Especially useful if you want to create bookmarkable or search-engine friendly pages.
More shortly: JSF is a standardization for webframeworks. Many webframeworks and -libraries are or are becoming JSF 2.0 compatible, such as Richfaces, ZK, Icefaces,even Flex (Flash) and of course Oracle’s ADF.
This standardization not only means these frameworks can work together, more important is that a developer who has experience in developing for one framework, can reuse his knowledge when he starts developing with another framework. This can greatly shorten the many months needed to learn yet another web-framework.