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:
Internal, more desktop-like applications that are stateful:
Media-rich applications that require a RIA framework like Flex
No comments:
Post a Comment