The GWT programming environment allows you to program in Java, but the client code is compiled as pure JavaScript (AJAX). Communication with the server is done with Remote Procedure Calls (RPC) in most cases, meaning that the data transfer back and forth is very small and efficient, without needing the page retransmitted.

In fact, a typical web application developed with GWT will have only a very small HTML page generated which contains a reference to the loader script. The purpose of the loader script is to decide which package of JavaScript code is sent to the browser, based on the browser the user has, and possibly the language that is detected for the user's system.

When a GWT application is delivered from an Apache Tomcat server, things happen so quickly I at first wondered if what I was seeing was really true. It's an experience you have to see to understand.