Friday, February 6, 2009

Presentation(UI or Client) framework evaluation and options

Objective:

It is always difficult and challenging task in order to evaluate the which is best frame work for presentation or client layer in java. Here I'm trying to evaluate the some of the presentation frameworks in java based on the different software analyst and architects perspective views and put them side-by-side to compare their convenience for developers, in terms of performance, scalability, maintainability, learning effort and rapid development etc. in the future.


Struts
FrameWork Type : Request-based framework
Learning Effort : Fast and Easy
Maintenance : Easy
Performance/
Scalability : Very Good
Others : Widely demand and highly used


JSF
FrameWork Type : Component-based framework
Learning Effort: Fast and Easy
Maintenance : Easy
Performance/
Scalability : Very Good
Others : Suggested by many people in java world (present day).Framework is not matured.


Tapestry
FrameWork Type : Component-based framework
Learning Effort : Time Consuming
Maintenance : Moderate
Performance/
Scalability : Very Good
Others : Only few organizations uses and few tech’s available to work in this framework (less documentation and FAQ’s available).


Web Works
FrameWork Type : Request-based framework
Learning Effort : Easy
Maintenance : Easy
Performance/
Scalability : Very Good
Others : Only few organizations use the framework (Now it’s merged with struts)

Spring MVC
FrameWork Type : Request-based framework
Learning Effort : Moderate
Maintenance : Easy
Performance/
Scalability : Very Good
Others : Lots of configuration file setups (.xml),No Ajax support.

Wicket
FrameWork Type : Component-based framework
Learning Effort : More
Maintenance : Moderate
Performance/
Scalability : Very Good
Others : Only few organizations uses and few tech’s available to work in this framework (less documentation and FAQ’s available).

Swing
FrameWork Type : Component-based framework
Learning Effort : Moderate
Maintenance : Moderate
Performance/
Scalability : Moderate
Others : It requires sufficient skill sets and application architecture than web applications.


Other Web Frameworks:

GWT (Google Web Tool Kit), Ice faces,Rich faces,Seam, Beehive, Stripes, Flex etc

Performance Overview:

Below performance analysis are done for some of the frameworks based on CRUD + S ([C]reate-[R]ead-[U]pdate-[D]elete+[S]earch) approach and The Grinder 3 testing framework.

Below performance numbers and charts are retrieved from http://www.sourcelabs.com

1) JSF

2) Struts + Tiles (Tiles is a template system and decoration framework. It can be used to create a common look and feel for a web application. Tiles can also be used to create reusable view components.)

3) Struts + Site Mesh (Site Mesh is a web-page layout and decoration framework to maintain consistent look/feel, navigation and layout scheme. Which allows look and feel to be abstracted from the content/functionality of a web-application?)

4) Tapestry


References:

http://raibledesigns.com/rd/entry/comparing_web_frameworks_time_for,

http://sandbox.sourcelabs.com/kosta/web_ui_compare/readme/,

http://java.sys-con.com/,

http://www.oracle.com/technology/pub/articles,

http://forum.java.sun.com/index.jspa,

http://java.net/,

http://www.javaworld.com/ ,

http://www.theserverside.com/discussions/