My experience with JSF is related to one large-scale Project frontend of which was built on first implementations of JSF in the beginning (2004), later updated to JSF1.2 and extended with MyFaces and RichFaces and AJAX4JSF, and some smaller projects based on SEAM and RichFaces. Recently I read many posts from JSF haters about “huge” disadvantages of the JSF. I think there is no superior framework with no disadvantages, but nowadays I can say that JSF brings a solid framework for WebApp development. I personally have been working for 6 years with JSF since 2004, there were some sleepless nights and some frustration (especially with first JSF implementations…) and through this experience I’ve become fan of the JSF.
Advantages of JSF from my point of view are the following:
- It has been used for some years now (there are more stable implementations and hundrends of patterns…)
- It’s component based (it makes the code structure more readable) with statefull server objects (for me the most important)
- Possibility to built own components (or update components from other vendors)
- Rich libraries from various vendors (Oracle, RichFaces and others – and they really work)
- Ajax support (easy ajaxization, some components are ajaxized)
- Reusability (fragments, own components and tags)
- Diverse validation options
- Trouble-free usability of post and get (SEAM)
- It’s event based (beauty of Actions and ActionListeners)
- Old implementation refactorings aren’t big bang in the code (very easy component replacement, performance optimalisation)
I think the main critics are the developers with no interest to work with JSF. My experience about co-workers on the JSF Projects was that many of them after starting to work with it have become apathic or frustrated from JSF (JSF is little bit different as PHP- or JSP-like programming).
The API of JSF isn‘t straightforward and simple to understand within two days and without any “pattern library” it is not easy for a JSF newbie to write his first “Hello World” App. Just like other higher frameworks, JSF has some limitations and there are situations and problems which require “un-google-able” solution – I think that’s the right way how to gain real experience with JSF.