Friday, May 2, 2008

Types of Web Applications

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
  • Really simple
  • Small Community
Seam
  • solves some JSF Problems like Bookmarking
  • Groovy Support
  • Integration with JPA and Hibernate (WebBeans)
  • Still JSF
ZK
  • Ajax Integration and Declarative Page Creation
  • One single source of implementation, one Tree, one Grid etc
  • Big Community, Fast Release Cycle
  • Licence Costs

(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:

  • JSF
  • Tapestry
  • Wicket

Media-rich applications that require a RIA framework like Flex

  • GWT
  • Flex
  • ZK

No comments: