- Struts: Pros and Cons. Pretty much a standard, lots of examples, HTML tag library kicks ass. ActionForms kinda suck, can’t unit test (only StrutsTestCase integration tests), Mailing list is swamped.
- Spring MVC: Nice lifecyle (for overriding binding, validation, etc.) integrates with many view options seamlessly, IoC for easy testability. Not widely used, requires lots of code in JSPs, almost too flexible (no parent controller for SimpleFormController and Controller).
- WebWork: Simple architecture, tag library easy to customize, interceptors are pretty slick. Documentation only recently written, few examples, client-side validation needs work.
- Tapestry: Very productive once you learn it, templates are HTML (great for designers), healthy project. Documentation very conceptual, rather than pragmatic (lots of “read the book”). Steep learning curve, few examples. Impossible to test – page classes are abstract.
- JSF: J2EE standard (lots of demand and jobs), fast and easy to develop with, rich navigation framework. Tag soup for JSPs, a bit immature (doesn’t come with everything), no single source for implementation.
We’ve been playing with SiteMesh, which Matt speaks very highly for it’s flexibility and integration to all of the frameworks. This is a great review and it looks like we still have some work to do, but I think we will try out each and see what works best for us. (We also looked at Ruby on Rails by David Heinemeier Hansson but it has been much harder to get the IT group to support Ruby on Solaris, basically they don’t understand it but they understand Java so we can always try JRuby if we feel so inclined. We are also looking at Groovy to many of our projects.)