Struts 2
Built on webwork framework
Commonly used. Struts 1 project is not been developed rapidly. And search results mostly gets struts 1 results.
Struts 1 is very different from struts 2, so documentation for struts 1 won't work in second version.
There has been written so many libraries to integrate.
First class AJAX support
Lots of XML
Spring
Integration with other frameworks is awesome. Allmost all frameworks listed here have spring support.
Secure. (Acegi became a subproject of spring framework and named spring security)
Lots of XML
Big community support
Starting and understanding the framework is a little bit painfull.
Lots of projects and jars.
Design patterns based designed, so it can be used for big scaled projects easily.
Spring uses a library named Spring MVC. A Detailed comparison between Spring MVC and wicket can be found below. (Wicket wins ;))
http://ptrthomas.wordpress.com/2007/03/02/wicket-impressions-moving-from-spring-mvc-webflow/
Wicket
It is a nice apache project.
You write less xml, more java. (Nearly no xml and annotiations)
Easy to start developing Wicket apps (short learning curve)
Responsible community.
Truly component oriented approach(Good for swing users.)
Form validation works well
AJAX support is nice. (You don't need write javascript, but its javascript library is limited)
The documentation is scattered, there are lot’s of small examples here and there, but a was not able to find a single very valuable resource
Very flexible and reusable as you use java for almost all things.
Clear and less code is written when compared to spring MVC and jsf.
HTML templates live next to Java code(HTML and wicket markup language is more clearer when you compare to JSF)
Acegi can be used easily for designing more secure web applications.
A Detailed comparison between JSF and wicket can be found below. (Wicket wins ;))
http://ptrthomas.wordpress.com/2007/05/14/a-wicket-user-tries-jsf/
A Detailed comparison between Tapestry 4 and wicket can be found below. (Wicket wins ;))
http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.html?ca=drs
A Detailed comparison between Tapestry 5 Beta and wicket can be found below. (They look so similar in 5th version. And Tapestry 5 will be backward compatible. Good news for tapestry)
http://joshuajava.wordpress.com/2008/09/11/a-glimpse-of-wicket-14-and-tapestry-5/
A Detailed comparison between GWT and wicket can be found below. (I think they are not same type frameworks but if you are curios you can see the post.)
- You can find some slides about migrating from spring mvc to wicket and wicket security on the links below.
http://www.slideshare.net/mrmean/wicket-security-presentation/
- New enhanced security library for wicket(SWARM). You can look at the links below for more information and documentation
http://wicketstuff.org/confluence/display/STUFFWIKI/Getting+started+with+Swarm
More articles about wicket
http://cwiki.apache.org/WICKET/articles-about-wicket.html
Update: There is a post who says why not to use wicket. I found it interesting and nice.
http://tietyt.blogspot.com/2009/03/top-8-reasons-i-dont-use-wicket.html
You can say so what, which framework should I use. My choice will be django and python. After all stuff I think that java sucks. ;)
Tapestry
Apache project
Documentation doesn’t use real world problems.
The versions before 5 was not backward compatible, so it was painfull. Fifth version is redesigned and will be backward compatible. But is in beta version.
If you learn once, you will find framework so usefull.
XML Based components.(componenets are similar to JSF)
MyFaces
Myfaces is commonly used.
Lots of XML.
Ajax support is old dated when you compare to RichFaces and ICEFaces.
Security is a problem too.
Lots of apache projects and components, it causes complexity.
JSF specification is old dated. (It has a no javascript rule, so all libraries which have ajax support are not supported officialy. It will be changed with 2.0 specification.)
JSF
Fast and easy to develop with initially .
Lots of component libraries .
Doesn't play well with REST or Security.
Suns RI JSF(This library has drag and drop support if you use netbeans ide),
If You want JSF and AJAX solutions RichFaces(much better) and ICEFaces are mostly used alternatives.
Grails
Good for rapid application development.
Rapidly growing community.
- Groovy based.(If you like scripting languages and java, grails will be the best choice. You can use spring and hibernate too.)
Rife
- Full Framework, you don't need to use other jars or libraries. It does all stuff by itself by one jar
- Starting an application is easy.
- Less XML, more java.
- Own templating library is powerfull.
- Web continuations is powerfull. You feel you are writing desktop application.
- Has own ORM solution, you don't need to use hibernate.
- Documentation and community is so limited.
Google Search Results
Struts 2 Java
1.220.000(Results can be mixed with struts 1 results. I was not expecting such a result.)
Spring Java
567.000
Wicket Java
836.000
Tapestry Java
2.070.000
MyFaces Java
435.000
JSF Java
430.000
Grails Java
1.190.000
Rife Java
273.000
Number of people on IRC channel during a random working hour (09/04/2008 17.41 GMT+2)
Struts: 15
Spring: 39
Wicket : 47
Tapestry : 11
JSF: 31
Rife: 4
I could not fine Grails and myfaces irc may be they are not exist may be I could not found I don't know.(Hope I did not found)
According to my research I considered to use wicket. I think wicket security system is sufficient but if you are not comfortible with wicket security, you can use acegi with wicket. If you are comfortable with spring and want IOC in your application you can give a try to spring + wicket.
There are some slides prepared by good developers. I zipped them. If you want to look at them you can install using the link below.
http://creasus.eu/comparing java frameworks.tar.gz

6 comments:
As architect of Wicket, I think security is a top strength of the framework, right behind the ability to make components almost trivially. Eventually, the financial industry will catch on here.
Most of the java frameworks are so complicated and wrong designed. I was considering to switch python web frameworks before I met wicket. If wicket security is enough to cover my needs, I won't use any frameworks near wicket and will be so happy :)
IMHO, Stripes is clearly the best "request oriented" web framework. I would hesitate between "component oriented" frameworks...
Welcome to the club, hope you'll enjoy coding with Wicket :-)
You can download two free chapters of Wicket In Action here: http://www.manning.com/dashorst/, particularly the 1st chapter would be a good read to help you understand the design goals of Wicket.
Stripes was another framework that I should look at, sorry for that. I used RIFE, and liked it before and I get tired of bad documentation and lack of community, that is the reason why I didn't searched anything for stripes framework.(I can be wrong and biassed sorry.)
We sometimes speak of a web framework being component-oriented if a page is created by a nesting of powerful stateful components. Wicket, Tapestry, ASP.NET, JSF, Echo, and GWT are all like this.
However, in the desktop fat-client world where this way of programming is taken for granted, "component-oriented" has a different connotation. There, it means that large chunks of powerful functionality are assembled not by writing programming language statements, but by dragging and dropping "components" onto a form and configuring them via property editors. Such components are easy to use, but quite laborious to create. Building a program this way tends to result in a mass of ugly code that is difficult to read (unless one views it from within the IDE) and dangerous to refactor (lest the tool choke on it or write over your changes). JSF and ASP.NET are component-oriented also in this latter sense; Tapestry (I think) and Wicket are not.
One might conclude that JSF (if it offered a sufficiently rich set of pre-built components) and ASP.NET would be most productive for unsophisticated programmers building small, simple projects. Experts in object-orientation wishing to apply their skills to make large and complex web projects manageable, in contrast, would do better with Tapestry or Wicket, I think.
Post a Comment