I was surprised to only see one brief mention of GWT in this comment thread. I use GWT on one of my personal projects and SmartGWT on two client projects, and even though the development process has some difficulties like long Java to Javascript compile times, it is great to be able to write/debug both client and server side code in the same IDE.
Something I read a few months ago: Thoughtworks paper on technology that described GWT as a bad idea, very well implemented. :-)