views:

2266

answers:

9

There are zillions of Java web application frameworks.

95% were designed before the modern era of AJAX/DHTML-based development, and that means these new methods are grafted on rather than designed in.

Has any framework been built from the ground up with e.g. GWT + Extjs in mind?

If not, which framework has adapted best to the world of forms with dynamic numbers of fields and pages that morph client-side?

+4  A: 

I use JSF and IceFaces. Although JSF has a few limitations, IceFaces seems to work pretty well and has ironed out a few of the problems with JSF.

I haven't used a really good AJAX Java framework as yet, although Echo2 looks interesting.

Phill Sacre
+2  A: 

I like the stripes framework. It lets you use whatever javascript toolkit you want.

Here is their documentation on AJAX

ScArcher2
+1  A: 

I like the combination of JBoss Seam and Richfaces, especially with the JBoss tools that are extentions to Eclipse - makes building these sort of RIA's incredibly easy.

Wikipedia contains some useful comparisons:

Comparison of JavaScript frameworks List of AJAX Frameworks

Your choice depends on several different factors including whether you want the "work" done client-side (most javascript frameworks) or server-side (echo2 etc.). Other things worth looking at are tools like OpenLaszlo that provide Flash (I think) out of the box, but drop back to DHTML if there is no Flash player present.

Unfortunately I think the decision comes down to balancing several competing cocerns. Check out the comparisons and try them out - most come with online demo's for you to try.

Aidos
+4  A: 

If you're starting from scratch. I'd have to say Google Web Toolkit. I have to say it is incredibly powerful. You get keep using most of your Java tools. Plus, you don't have to duplicate code that exists on both the server and the client, it just gets compiled differently for each area.

Steve g
+2  A: 

I'd consider REST-style frameworks as well as the other recommendations here- Restlet or Jersey may be good choices for the backend, while you use something like JQuery or GWT on the front end. Both frameworks can easily produce JSON, and the REST style provides a nice clean line of demarcation between your client application and your server source; I find that JSF can make that demarcation pretty muddy.

Tim Howland
+1  A: 

DWR

I use this to dynamically populate drop downs, and even filter them on the fly based on user input in other places on the form.

zmf
+1  A: 

GWT is quite powerful and easy to use (all Java, no Javascript/HTML/CSS coding). If Google has their way it will be a dominant framework/tool in web applications development, and for good reason. It already works with Google Gears (which allows offline access to web apps) - and more than likely will be optimized to work within Google Chrome.

+6  A: 

Echo2 / Echo3 by Nextapp (www.nextapp.com) is totally awesome.

Advantages over GWT:

1) It is not limited to a sub-set of java like GWT 2) It is easier (in my estimation) to learn 3) Has extremely robust design studio for almost drag and drop designing.
4) It is very fast, and works very well on all platforms browsers 5) You can write your application using either java script or java 6) It has great and straight forward methods for handling events and actions.

Personally I think that for any web-application in which you are trying to integrate java and speedy delivery I wouldn't hesitate to pick Echo3 or Echo2.

A: 

Aptana has a server side frame work called Jaxer. This is from their site:

Jaxer's core engine is based on the same Mozilla engine that you'll find in the popular Mozilla Firefox browser. This means that the execution environment you use on both the client and the server are the same. It's Ajax all the way through and through. That means you only need one set of languages -- the languages that are native to the browser -- to create entire applications.

This framework is open source and has a very nice IDE based on Eclipse. Aptana is also working on a Javascript implementation for ActiveRecord called ActiveRecordJS. Potentially you could use this both client and server side with their framework.

David Robbins