Serge wrote:Do I understand right that each such window will be a separate GWT module?
No, you can create a separate Composite for each window, and, for example, dynamically add/remove them from the RootPanel (or some sub-panel of RootPanel). The size of a GWT application does not grow very quickly. For example, the JavaScript code for an empty GWT application is about 26 Kb in size. With one Composite that has a TabPanel, several tabs and various widgets on those tabs, the size grows to only 50 Kb. With 30 such Composites, the size is about 100 Kb.
If you can use a single module, you can avoid many problems. GWT is different from other Web applications in that you don't need a separate handler for each screen. You can build a complete application where various screens "talk" with each other using just Java, i.e. it keeps its state in the application itself on the client.
Serge wrote:Does it mean that I need a separate HTML (or jsp) page for each module (window)?
If you go with several Composites in a single module, you can use a single EntryPoint and thus a single HTML file.
Serge wrote:Will I be able to keep some objects in the browser between changing the pages, so that one page changes some objects, and another page takes the changed object from the browser without any RPC calls?
Yes. See above.
Serge wrote:What about shared classes? There will be at least 10-20 classes, and some utility functions, needed by each page. Will they be loaded by every page again and again?
Again, see the above discussion concerning application size. Of course, it will depend on the amount of logic that you add to your pages. If your application grows too much, you can try to move part of the logic to the server and use RemoveServices to talk between the client and server.