Query on architechture point of view.....

Does Vaadin framework transfer just the final HTML (which should only be a few KB) or does it transfer data objects that are converted into HTML on client side? If the latter, can we optimize on the contents that are transferred?

Vaadin is transferring logical user interface state as JSON. This is a lot more effective that transferring HTML.

The easiest and very effective optimization to do is to turn on HTTP level compression for the traffic.

Vaadin 6.x uses a JSON based “UIDL” format for transferring the client side component information - for most components, HTML is not used anywhere but the DOM is constructed directly by the client side engine (widgetset) based on the UIDL. The UIDL has the potential to be significantly smaller than an HTML based page (with reloads on changes) as only changes need to be sent, but it is not always smaller.

The exact format is an internal implementation detail and the client-server communication mechanisms will change significantly in Vaadin 7 so you cannot and should not try to tweak directly with UIDL.

What can be done to reduce its size, if your profiling shows it actually is a problem in your application and typical bandwidth available per user, is to make sure compression is enabled on the application server and reduce the cache rate of tables (potentially making scrolling less smooth). Any further optimization attempts should be based on profiling of what exactly (if anything) is unnecessarily large in the UIDL sent to the client in your particular application.