views:

115

answers:

2

We're considering experimenting with a new Java framework for building some internal web apps. We have a mixture of Perl/Ruby/Java programmers and are trying to standardize as much as possible. I'm familiar with what each of the following bring to the table, but am unclear on what the actually learning curves are and how they compare:

  • JavaServer Faces
  • Apache Wicket
  • JBoss Seam
  • Spring
  • Struts 2

Assuming that someone is comfortable with Java, how do the frameworks above compare in terms of learning curve? I realize it's very subjective, but what do you think? Is Struts 2 easier to pick up than JavaServer Faces? Is Struts 2 as easy to pick up as Ruby's Rails framework?

All your thoughts/opinions are welcome!

+3  A: 

My personal experience only

  • JSF - Huge learning curve, lots of new concepts/lifecycle/component model to get used to and figure out. I played with 1.2. 2.0+ may be better but I doubt if it is significantly simpler.

  • Seam - Generally used with JSF be can be used with Wicket. Combined with JSF means an awful lot of new concepts to absorb. Again my experience is with JSF 1.2 (with whatever version of Seam was around at the time). My feeling was the combination was too heavy for all but the most complex apps, so for your internal web-app case, I would steer clear.

  • Wicket - My personal favourite of the web app frameworks for two reasons. First it is relatively easy to do the simple stuff, yet possible to do the hard stuff. Second it uses almost pure HTML as the "view" which makes it very easy to change the look of web pages without having to change much, if any, code.

  • Spring - Spring in itself is not a web framework (Spring MVC is, tho I've never used it). However Spring is a very useful toolkit to have on most projects as it offers a lot of framework/library support without mandating an all-or-nothing approach.

  • Struts 2 - Never used it.

Perosnally I would recommend Wicket with maybe Spring if you want to take advantage of spring's DI framework and DB/transaction support. Maybe introduce hibernate if you wanted to go the ORM route.

Mike Q
JSF 2.0 on Facelets offers with `jsfc` HTML attribute similar possibilites as Wicket does with `wicket:id` HTML attribute.
BalusC
+1  A: 

I've had experience using Spring MVC and Struts for web development, and of those two I find Spring MVC much easier to understand and faster to develop with. The reasons:

  • The use of annotations in Spring 3 is much easier to understand
  • Spring 3 needs less XML configuration, assumes more sensible defaults

In the earlier days of Spring (versions 1.x and 2.x) I found Spring MVC and Struts (1.x and 2.x) to be very similar. They had similar MVC patterns where you would typically extend framework classes and then build your views using JSTL and a framework tag library. However with Spring 3 you typically create controllers by annotating plain Java objects, instead of having to extend specific classes.

We have a steady stream of interns come through my office, and they clearly pick up the new Spring 3 annotation style much faster than they did Struts 2 or Spring 2 subclassing. I would definitely pick Spring 3 over Struts 2 — the others I can't comment on.

gutch