Matt Raible broke down 6 of the more popular Java Web frameworks. Noticeably absent from this list are two of the more recent (and buzz-worthy) frameworks; Grails and Google Web Toolkit. The following is a brief list of Raible’s Pros and cons for each framework:
| Framework | Pros | Cons | ||
|---|---|---|---|---|
| Java Server Faces (JSF) | Java EE standard. | Tag soup for JSP’s | ||
| Lots of component libraries | Doesn’t play well with REST or Security | |||
| Fast and easy to develop with initially | No single source for implementation | |||
| Spring MVC | Lifecycle for overriding binding, validation | Configuration intensive | ||
| Integrates with many view options (Velocity, tiles, etc) | Almost too flexible. No common Parent Controller. | |||
| Inversion of control makes it easy to test | No built in AJAX support | |||
| Struts 2 | Simple architecture | Docs are poorly organized | ||
| Tab libs are easy to customize with Velocity | Too much concentration on new features | |||
| Controller-based or page based navigation | Googling results often returns Struts 1.x docs | |||
| Tapestry | Very productive once you learn it. | Docs are very conceptual | ||
| Templates are HTML – good for designers | Steep learning curve | |||
| Lots of innovation b/w releases | Longer release cycles – major releases every few years | |||
| Stripes | No XML – Convention over Config. | Small community | ||
| Good docs | Not as actively developed | |||
| Enthusiastic community | Hard-coded URL’s in ActionBeans | |||
| Wicket | Great for Java developers | HTML templates live right next to your Java code | ||
| Tight binding b/w pg’s and views | Need to have a good grasp of OO. Lot’s of anonymous inner classes. | |||
| Active Community | The wicket way. Everything done in Java |
Checkout the entire Smackdown!.

