We continue to see teams run into trouble using JSF– JavaServer Faces — and are recommending you avoid this technology.
Teams seem to choose JSF because it is a J2EE standard without really evaluating whether the programming model suits them. We think JSF is flawed because it tries to abstract away HTML, CSS and HTTP, exactly the reverse of what modern web frameworks do. JSF, like ASP.NET webforms, attempts to create statefulness on top of the stateless protocol HTTP and ends up causing a whole host of problems involving shared server-side state. We are aware of the improvements in JSF 2.0, but think the model is fundamentally broken.
We recommend teams use simple frameworks and embrace and understand web technologies including HTTP, HTML and CSS.
This quote describes exactly how I feel about Java Server Faces.
From my old posts, you can see that I have been a strong supporter of JSF. I continued to believe in its potential even when it was new and lacked features.
JSF 2.0 was supposed to address developers’ complaints about the shortcomings of earlier versions, such as lack of support for bookmarkable URLs and the absence of view parameters. But it has many of its own flaws, and various implementations still do not follow the underlying JavaEE standards. The slow progress and the persistent incompatibility make developing with JSF rather frustrating.