Web development with Java

Now that’s a large topic. A very, very large topic. In case you are into Java web development, you are going to have to decide between millions of frameworks for similar tasks, and sometimes for the simplest and most obvious thing to do, you’ll have to introduce a whole framework into your project. The learning curve for all these frameworks is also another problem. You start with GWT, and realise that it does not feel right always. There are times when it is nice to have Java code compiled into JavaScript, but there are times when it does not feel right. So you want a more server side approach, and that’s where things start to get crazy.

You have struts (old, but still used), JSP, JSF (on top of JSP), Facelets (because JSF on top of JSP is problematic), JSF 2.0 (soon), GWT, Tapestry etc… You have specs and application servers, web containers with their soap opera relationships with specs. J2EE 1.4 or J2EE 5? Tomcat or JBoss, if so which version? Java 5 or 6?

By the way, why not think about different implementations of the same standard? MyFaces or Sun’s reference implementation of JSF? Oh, I forgot to mention, J2EE 5 makes application servers provide their own implementation, so you may need to figure out how to replace defaults with your library.

While you think about this, endless libraries and frameworks  are born and an equal amount of them is dying. It is like the universe with stars and planets. Only for Ajax in JSF you have at least four options, some of them being relatives of others. GWT, Ajax4JSF, RichFaces, GWT4JSF….

And what about the glue type of frameworks? Spring and/or Seam for your web application would be nice, don’t you think so?

I am just trying to come up with a set of reliable and productive tools and technologies, and for Java and web based development, I do not feel like I’m winning. Seriously, things are getting out of control in this domain. The problem is I am in a position where I have to build a set of tools that will support web based development, but in such a fragmented domain, how can I target the combination with largest set of users? I don’t know, I really do not know.