Mark Watson: "The problem I am having is that I would very much like to settle on a single framework in order to reduce the effort of staying on top of too many tools and frameworks. [...]
I would like to be able to invest at most 100 hours of study time, and get back up to speed on a single framework, but I am not sure which to choose. GWT is very tempting but GWT does not cover all of the types of web applications and services that I am likely to be contracted to build. Seam looks good as an integrated framework, but I need to set aside a long weekend to give it a good preliminary evaluation."
I think in the Java space right now, there is no web pony, and looking back as far as 2004, there never has been.
Given what I know about Mark (working in Ruby) and his background (AI/Lisp, I have one of his books from college), I would recommend looking at Grails. Grails also has orthodox internals that will appeal to most shops that use Java - Groovy running with Spring, Sitemesh and Hibernate - so for example, the ActiveRecord style approach doesn't become a point of resistence, and even though Groovy is not the fastest language on the block, the framework is offloading plenty of work. Groovy has also the advantage of being syntactically closer to Java than Python/Ruby, which eases adoption - if you squint you might see Javascript, which gives interesting options for who builds server side web pages :)
I don't think Seam is the right choice if your background or productivity sweet spot is a Rails/Django style stack, though I'm sure it will be a popular framework for in-house work or 'post-modern' enterprise projects. JRuby/Rails I think will only get faster, fwiw.
7 Comments
I second the Grails recommendation. We found it an easy transition and you can use Groovy as an exploratory language for functionality spikes and then "harden" the code to pure Java if youa re worried about maintainability.
I'll third the Grails recommendation. We're having a tremendous amount of success at my company. We've done two sites for some fortune 500 clients, and we're working on a third.
www.membersproject.com
www.seethesigns.com
-Dustin
OK, I will give Grails another try :-)
The problem that I had with Grails is that I did not understand any advantages over just running Rails with JRuby on Glassfish or Tomcat. That would be 0% extra learning curve. I assume that the Groovy/Java integration is a lot better than JRuby/Java - but that said, I have found it very easy to use huge Java libraries with JRuby. I have never found happiness calling JRuby code form Java, but that may just be my experience.
Thanks!,
Mark
Mark: Feel free to stop by the #jruby IRC channel on FreeNode if you want to talk more about JRuby on Rails. It's gotten really easy to use, and we're starting to take the next steps to make calling Ruby from Java a lot easier too.
Give Java a new opportunity.
Try ItsNat, Natural AJAX
http://www.itsnat.org
* Pure HTML based templates (web site friendly sites)
* And pure Java W3C APIs for the view logic.
Wicket is probably the most flexible web framework, since you can integrate with any Java-accessible API on the back end. It's not used by many people, but there's a lot of enthusiasm about productivity gains among those who use it. The most direct way to learn it is with the new Manning _Wicket_in_Action_ book.
For a "java" web framework (using java throughout), I'd strongly recommend Stripes. It's clean, it's fairly fast, it's simple to use and as far as my java fw tests go, it's enjoyable to use.
It has quite a few drawbacks (I don't like the way forms fields are part of the action beans and implicitly bound and validated before actions are executed -- I much prefer Django's decoupled form objects and explicit binding and validation; and as with all java frameworks I've ever seen taglibs are very low level), but overall it's a fairly good framework.
It's not a full stack though, so you'll need to pick the rest of your stack separately (seems to be the standard in Java land)