It was great to see the 2.3 release of JavaServer Faces finalized last week.

When JSF 2.0 came out, I was quick to jump on the component based UI approach to software development, promoting the framework and writing a number of articles on JSF, Ajax and Facelets development. But after a few projects, my enthusiasm waned and advocacy was replaced with frustration. I soon jumped off the bandwagon, but having said that, looking at what’s new in the JSF 2.3 release, I’m anxious to jump back on.

CDI and JSF 2.3 One of my biggest frustrations with the initial 2.0 release was the lack of alignment between the Java EE CDI specification and the dependency injection used by JSF. I guess it was simply a reality of the fact that JSF needed to be capable of running within a web container that didn’t provide CDI support that forced the original release of JSF 2.0 to provide it’s own set of injectable managed beans, but it created confusion nevertheless, especially given the fact that back in 2009 or 2010, developers were struggling to grasp CDI itself. A clash of CDI and JSF annotations with similar names but dissimilar behaviors created no end of confusion. But looking at what’s new in JSF 2.3, it’s more than assuring to know that CDI alignment was finally achieved. That will make JSF 2.3 adoption a much easier sell for organizations that are well versed in working with contexts and dependency injection.

What else is new in JSF 2.3? Beyond CDI alignment, new in JSF 2.3 are a variety of features supporting asynchronous programming, shielding the developer from the long page-load times that dogged JSF when applications were developed without the built-in JSF 2.0 Ajax support. Websocket support will make UI rendering lightning fast for those developers who are lucky enough to be working on projects that are allowed to use it, and additional features that bridge the divide between the world of client-side JavaScript and JSF’s server-side component model.