> And don't forget that Vaadin is basically GWT plus some server-side stuff.
That's like saying Tapestry is basically Javassist plus some server-side stuff. Vaadin is a very mature framework that has been in development for many years and they built most of their client implementation and rich client components using GWT. As a developer using Vaadin, you only have to deal with GWT if you write your own rich client components otherwise you don't even know it's there. Both frameworks have their place. If you want to create rich client applications, Vaadin is a very good choice. Vaadin creates an application instance per user session and all components are kept on the session as they are being used. Actions on the client invoke an AJAX request, which can be handled by your components on the server, simply by attaching listeners to your components. This way you only have to focus on your server-side Java code. Client elements are updated on the client or you can replace panels in response to user-actions instead of refetching an entire page (hence the single-page name). This approach makes it heavy on the server, but easy to develop for, as long as the default set of components is enough for you. Documentation is also very good and having a central location for plugins/components is great. There are many projects that still require multi-page applications though, so you have bookmarkable pages that are easily indexed by search-engines and can work without Javascript (which is a requirement for many government projects over here). Typically you only need to instantiate Objects to create the response and there is no need to store much information on the session making it easier to scale up. Tapestry is a very good choice for these types of projects and it helps that there is now a EAP available of a good Tapestry book :) - Onno