Google Web ToolkitJava Through and Through
GWT follows a very different development philosophy from the rest of the frameworks. It is a completely Java-based development framework; all of the Web components are written in Java and then compiled into a set of AJAX-enabled Web pages. I personally felt very comfortable with this relatively novel approach because I am an experienced Java programmer. But what if you don't know or develop in Java, or you need more control over what the Java-to-Web components compiler generates? Then you may be in trouble with GWT. Still, it is very easy to work with, so you could easily pick up the Java skills needed to develop with it.
If you are a Java developer, GWT does an amazingly good job of generating Web contentbut with some restrictions. A typical Web developer likes plenty of control over the Web content an application generates, but GWT provides only limited control. For example, in my case I chose to use com.google.gwt.user.client.ui.HorizontalPanel for the page layout. This GWT style of Swing (like its relative positioning) is very convenient for Java developers, and it works very well across the browsers. However, if you really need to fine-tune the presentation, you need to step out of the Java-based content specification and start tweaking the produced layout using style sheets. Although that is a very reasonable technique to use, now you are stepping outside GWT's prescribed Java-only approach.
A Matter of Preference, Not Performance
All the frameworks I used to develop the sample application share a few common traits: they are all very capable, very good at issuing AJAX requests, and free to use. YUI felt the most complete for common, portal-like Web functionality (nice-looking, dynamic, drag-and-drop). The problem with it is its pure framework nature. It gives you a lot, but I found it constrainingYUI felt like it was built to be used only as is. Conversely, Prototype, a lightweight framework, was the most liberating. It is small and thin, and it allows you to build your own application in any direction you want by providing the core AJAX abstractions with its API.
DWR is a very good framework for Java-based applications that require rich interaction with the server side (with DWR, browser logic can interact directly with the domain model, effectively creating a new type of MVC pattern representation). Its authors are very focused on its sophisticated client/server interaction vision. However, DWR will not help you as much if your focus is more on consumer portal-like applications.
If you are looking for a complete framework that supports all the common AJAX-enabled Web development tasks yet still allows for customizations and low-level coding, you'll like Dojo. If your forte is mostly Java, you likely will be happy with GWT.
Deciding which of these frameworks to use depends heavily on the type of application you plan to develop as well as on your mentality as a developer.