Java Web-Frameworks
| |
Pro |
Cons |
| JSF |
- Java EE Standard - lots of demand and jobs
- Fast and easy to develop with initially
- Lots of component libraries
|
- Tag soup for JSPs
- Doesn't play well with REST or Security
- No single source for implementation
|
| Spring MVC |
- Lifecyle for overriding binding, validation, etc.
- Integrates with many view options seamlessly: JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, XSL, PDF
- Inversion of Control makes it easy to test
|
- Configuration intensive - lots of XML
- Almost too flexible - no common parent Controller
- No built-in Ajax support
|
| Stripes |
- No XML - Convention over Configuration
- Good documentation (easy to learn)
- Enthusiastic community
|
- Small Community
- Not as actively developed as other projects
- Hard-coded URLs in ActionBeans
|
| [Struts2] |
- Simple architecture - easy to extend
- Tag Library is easy to customize with FreeMarker or Velocity
- Controller-based or page-based navigation
|
- Documentation is poorly organized
- Too much concentration on new features
- Googling results in Struts 1.x documentation
|
| [Tapestry] |
- Very productive once you learn it
- Templates are HTML - great for designers
- Lots of innovation between releases
|
- Documentation very conceptual, rather than pragmatic
- Steep learning curve
- Long release cycles - major upgrades every year
|
| Wicket |
- Great for Java developers, not web developers
- Tight binding between pages and views
- Active community - support from the creators
|
- HTML templates live next to Java code
- Need to have a good grasp of OO
- The Wicket Way - everything done in Java
|
| Click |
|
|
| Seam |
- solves some JSF Problems like Bookmarking
- Groovy Support
- Integration with JPA and Hibernate (WebBeans)
|
|
| ZK |
- Ajax Integration and Declarative Page Creation
- One single source of implementation, one Tree, one Grid etc
- Big Community, Fast Release Cycle
|
|
(based on Raibles Design)
Types of Web Applications
There are tree types of web applications:
Consumer-facing, high-traffic, stateless applications:
- Struts2
- SpringMVC
- Stripes
Internal, more desktop-like applications that are stateful:
Media-rich applications that require a RIA framework like Flex
(based on: http://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework)
Kommentar hinzufügen