We make TeamPostgreSQL with GWT (teampostgresql.com).
GWT is very different from Javascript libraries. Our entire code base has not a single line of Javascript in it, it is all Java classes. I can't imagine what a nightmare organising and refactoring all this code would be in regular Javascript (though to be fair I have never tried, so there may be good solutions for this).
The Java -> Javascript thing does sound messy, but amazingly it actually works.
* About cross browser compatibility: As for the script executing right, it is just not something we have to worry about, GWT does it all (it makes different script targetetd to each supported browser). Appearance sometimes needs tweaking to look right on all platforms though.
From the screenshots it looks like a large (in good sense) app. Do you have problem with load times? How do you handle them?
I'm working on the GWT app and it seems it gets a bit slower to load (not surprisingly) as it gets bigger. I'm getting worried that at some time in the future it might affect users on slow connections.
While I agree that the code-splitting in GWT 2.0 might help you, you may also want to see where the slowness in loading is really coming from.
For example, is it really the size of the app that makes it slow to load, or is part of the problem that you're not using lazy-initialization judiciously? If all of the possible widgets are eagerly created, that could make it appear to be loading slowly.
Another possibility is the number of HTTP round-trips that have to be made. Do you have a lot of images? If so, are you using the ImageBundle facility? (It's awesome: the compiler automatically makes a CSS sprite image and generates the code to slice the images out automatically.) If not, you should.
Another possibility is whether you are using any 3rd-party GWT widget toolkits. Some of them are wrappers for other, more traditional javascript libraries, and those will really bloat the amount of code the browser needs to download! Stick to a widget kit that is actually written in java, or create your own custom widgets as needed.
Another possibility is that I once accidentally left my compiler configured to emit verbose javascript. Make sure you're emitting tight, obfuscated javascript.
Finally, make sure that the HTTP daemon that serves the files are configured to gzip the javascript for those browsers that are capable.
GWT 2.0 should solve most of your problems I suppose.
There are 2 things that can make a large app slow:
1) Load time
2) Rendering time
For load time all you can do is to maximize the use of ClientBundle and GWT.runAsync()
For rendering time, don't create panels willy-nilly, use tag-first approach if possible or use low level dom operation (DOM.createDiv, DOM.createSpan) if your widget isn't overly complex.
Make sure your listeners don't leak... other than that... nothing much I guess.
I believe that as long as you show the user that something is happening, preferably by showing them how long they have to be patient, there is not much to worry about. Unless we are talking about ridiculous download times. Of course, what is ridiculous depends on the perceived value of your offering: people don't mind waiting 45 seconds for some flash movie, so obviously it's not a complete showstopper.
The application does take a while to load, but the bottleneck seems to be browser javascript performance, and mostly in Internet Explorer. In fact that might well be the biggest issue we have with GWT, and we have to resort to a few tricks to make the application perform acceptably in IE when trees and dropdown boxes get large enough.
GWT is very different from Javascript libraries. Our entire code base has not a single line of Javascript in it, it is all Java classes. I can't imagine what a nightmare organising and refactoring all this code would be in regular Javascript (though to be fair I have never tried, so there may be good solutions for this).
The Java -> Javascript thing does sound messy, but amazingly it actually works.
* About cross browser compatibility: As for the script executing right, it is just not something we have to worry about, GWT does it all (it makes different script targetetd to each supported browser). Appearance sometimes needs tweaking to look right on all platforms though.