September 19, 2002

Java webapp frameworks

I am now investigating which web application framework we’re going to use for our main web product at work. We have a demo system built using plainjane XMLC, but it’s quite awkward in many places and there’s way too much coupling for my tastes between the page and the servlet.

Currently in the running right now:

Tapestry
This gets away from the paradigm I'm most familiar with (dispatcher sends request to controller which assembles data and sends it to a templated view), but it seems to solve an awful lot of problems very elegantly. I actually like that it focuses on HTML web applications, since that means it has no qualms about dealing with messy stuff like Javascript, rollovers, etc. It also seems to have an excellent exception handling scheme, and the fact that you don't have to deal with URLs.

Downsides: I don't know how performance is. I haven't yet seen an actual application. Another deployment descriptor layer (linking components to data) to deal with. I also don't know how widely it's used, although this is less a problem for me than other people.

Struts
I probably don't need to say much about this since it's so ubiquitous. The main thing I like about it is that it's much like what I do with OpenInteract -- I like how requests flow through the system and who is responsible for what. I also like that it's widely known and used (easier to hire people) and that an O'Reilly book is coming out in the near future.

Downsides: Uses JSP. Maybe I haven't seen examples of good JSP yet, but I've been repulsed by what I've seen in tutorials, examples, etc. However, JSP might be a pill I'll have to swallow since it's so widespread.

Webwork
As I noted previously there have been quite a few blog entires on how cool this can be. I especially like the test-first possibilities (mentioned here). I haven't quite got a handle on how things flow, but I need to grab it and look over any examples.

Unfortunately, I really don't have time to review all of the frameworks listed here. Although some of them (like Echo) I immediately dismiss because they try and make the HTML layout just like GUI (usually Swing) app layout. Blech.

Next: More than we wanted to see
Previous: Importance of the build process