Sitting in on Alef's admittedly biased
review of web frameworksNo silver bullets here (surprise), the answer is,
"It depends" on:
- Size of Community / Support
- Migration Paths / Backward Compatibility record
- Documentation quality
After applying these filters we end up with Spring MVC, Spring WebFlow, GWT, JSF & ...yes Struts
and the way they handle:
- State Management - is HTTP Session an oxymoron?
- Navigation Handling
- Event Handling
- Templates and UI building
Results are summarized here:
| Biased Opinions Here!! | Spring MVC, Struts | Spring WebFlow | GWT | JSF |
|---|
| State Management | None beside HTTP Session, best for almost stateless app. | Server based, can be in db | State is ALL client-side, RPC-style async service calls. State dependency mgmt. is hard | HTTP Session-based |
| Navigation Handling | limited, low-level req-resp | Excellent | ? | Integrates well with Spring WebFlow |
| Event Handling | Req.-Resp. oriented, low-level | Excellent, requires session state | Elegant, all in Java | Very Good |
UI Comments
- GWT: Little HTML left, not Dreamweavable. 100% AJAX-based
- JSP: HTML based, may be ugly. Good taglibs,
- Freemarker/Velocity: Good to build on Struts/JSP apps
- JSF: Higher-level than JSP. Good components available. AJAX with extension (Spring Faces, ICEFaces, MyFaces, Seam). Should use w/Facelets.
- Flex/OpenLaszlo/JavaFX: Interesting but very diffferent techniques
Recommendations
Stateless: Struts/SpringMVC with a templating engine
Stateful: GWT or JSF with Spring WebFlow