After two late evenings of playing around with JSF, I can reaffirm my previous conclusion from 1.5 year ago: It’s still pretty much a steaming pile of crap, mostly pushed and flogged by vendors creaming their pants at the prospect of selling development tools to companies.

To enumerate some (but not all by far) of my objections about JSF:

  • Why of why would I want to learn yet another tag-language?! Furthermore, looking at something like Ajax4JSF, the number of attributes on most tags is bewildering and for someone who didn’t write the actual tags working out what attributes do what, which ones are critical as opposed to optional is mostly a matter of trial and error (the Ajax4Jsf commandLink tag has some 46 different attributes you can set!).
  • What is wrong with HTML?! JSF seems not only invent yet another tag language, it pretty much wants to replace anything that has to do with HTML. HTML and CSS is fine, why try to replace it?
  • Unpredictable behaviour for a JSF-newbie: if you do get something wrong, how a component will behave seems completely arbitrary. If it is wrong in one way it may throw a semi-obscure stacktrace. If it is wrong in another way, clicking somewhere where you expect behaviour may result in absolutely nothing, nada, not even a stacktrace.
  • Touched on it previously: obscure stacktraces. If you are a seasoned developer you might be able to decipher what might be wrong. But I can bet good money on a developer with <3 years of experience being utterly bewildered at some of the stacktraces that can be thrown at you.
  • Sloooooooooooow. How slow could a webapp possibly be? Answer: like a JSF webapp.
  • Learning curve. Is JSF supposed to be easy to learn? Not compared to any other MVC framework I’ve come across at least.

Those are only a few of my objections to JSF. The end impression is that it is a horribly convoluted, over-engineered framework that goes to great lengths to replace existing, well functioning technologies without addressing any of the pain-points at all. It might be possible that with the right tooling, and once you get over the initial learning curve JSF might be quite nice, but at the moment the learning curve compared to any other MVC framework in the market is just too much of a pain. Once upon a time, I learnt how to do 80% of what was needed with Webwork in about 1.5 hour with minimal pain. After about 8 hours with JSF I am still bewildered, puzzled and above all annoyed at having wasted 8 hours of my life I will never get back.

It’s no great wonder that JSF skills aren’t in great demand. Who in their right mind would use it unless they where a JSF-vendor? As for me, I think I’ll stick to the combination of Struts2/Webwork and DWR, despite my objections about the lack of progress.