dagblog.
← Archive

I don't trust JSF


Reading JSF vs. Tapestry — how easy is it to build components? and glancing at the JSF 2.0 spec (source: JavaServer Faces 2.0 Composite Components) prompted me to think about this.
I don't know whether you could call it bias. Perhaps you could. In any case, JSF does not inspire confidence in me, and I have several good reasons.

From the start, JSF was precisely the kind of Java specification that shows how to get things wrong. You cannot just decide you need a component technology for web application development and invent one. Other JEE specifications have already shown that this approach does not work, because people actually want something a little different. JSF is a clear case of the version 1.0 users being treated as guinea pigs.

I talk about this in every presentation that touches on JEE. The people who created it missed a basic point, and I hope that is in the past now. Technology needs to be simple and usable. Most web applications, if not all of them, solve the same problems. A fundamental feature of any web framework must be to make those problems easy to solve.

What good is a web framework that can solve the problems of the Third World, to exaggerate, if it makes it hard to build your own component? It seems utopian to rely on tools to shield us from that complexity. Developers dislike relying on magic boxes that generate tons of code under their noses. The reasons are familiar and understandable.

Another thing to consider is whether web developers really need to be shielded from the request-response model. Does the higher abstraction really offer enough to make up for what we lose? Does it make sense to hide the web's basic paradigm and pretend we can build a web application along the lines of a desktop one? Personally, I am losing faith in that. Consider whether PHP or Ruby on Rails has anything similar. If they don't, why might that be?

The final point, and hardly the least important one, is the ability to innovate and respond quickly. Once JSF 2.0 is final, it will stay frozen for quite a while. A framework that is not governed by a standard can respond to current needs relatively quickly. Adding features to anything standardized is practically impossible, and even when it is possible, you usually lose portability. That simply is not a concern for frameworks outside the standard.

Medium version

Related articles

Related CZ Podcast episodes