As you begin to reuse widgets on additional "forms" you don't incur
additional bytecount for that reuse, so large applications tend to be
just fine in GWT.
I have yet to hear of anyone who as had the javascript payload of
their large application overrun the available memory in the client
browser.
Overall, the one module (page, project) per form idea that is
typically used for server side technologies is particularly
inefficient when it comes to GWT because you will end up not
benefiting from code reuse (talking about the compiled javascript
here), and your overall byte count will likely be quite a lot larger.
-jason
It all depends on how the applications handles the screen switching
ofcourse. If you put all the screens in a big DeckPanel then I'm sure
the application will slow down when you really have a lot of screens.
But if you are smart enough and just keep the panels which state must
be preserved (when going back and forth through a flow) then the
number of screens do not have much impact.
The JavaScript file grows, but as Jason said its not linear... in fact
its hard to beat the compactness of the generated code, and if your
applications defines reusable widgets you will see a very small
increase when a screen is added. We have a large application running
in GWT and the generated code is about 100KB.
If I look at some old struts application we created in the past... I
noticed that someone managed to add a JS calendar widget that was
actually 200KB in size!
David
As for rendering complicated forms, yes it is possible that those
could take some time. But, if you design your application properly you
can avoid the appearance of a stalled application. For instance, if
you begin rendering a complicated form (hundreds of cells in a grid
for example) you can render just a few (50 - 100 or so) at a time
using an incrementalcommand, which will allow the application to
remain responsive even while the form continues to render.
For instance, I've been benchmarking the rendering of a 100 x 100 grid
with a label in each cell. If the grid is rendered synchronously, the
browser will stall for about 5 seconds while all of the DOM objects
are created and attached, however if the grid is created, then
populated using an IncrementalCommand that fills 200 cells per
iteration, the browser only stalls for about 25 milliseconds (not
detectable by the user) and continues to fill the cells while still
allowing the user to use the UI. This is a handy technique for
rendering very complicated layouts.
-jason