Friday, July 24, 2009

How to deal with big GWT applications

Well, this is a bit of personal experience.
Instead of making extra-large GWT app having all the functions at one place I would use 'mixed' approach.

'Mixed' means that we install different app features on different pages (yes, user would need to change page from time to time) and exchange data through server session storage.

This would give us several good points:
  1. Page is (oftenly) refreshed, thus freeing memory :)
  2. Not that much code to load/execute
  3. Ability to make more clean code (not so much intermodule communications)
  4. More structured and less complex code (no 'overhead for common'). That's the main, I believe.
  5. Ease of content rendering.
Bad things:
  1. It's not that sleek and smooth.
  2. Lots of requests to server. Additional files loaded (.cache, .nocache, all dependenices all the time. it's cached, yes, but anyway...)
  3. Weird compilation. Having 7 gwt compilations is even worthe than 1, I think. Though, can be well-automated with ant.
  4. Can not use anymore stateless server (so, not that easy clustering/performance scaling)

It's something that can be considered as 'good practice', and 'personal opinion'.
If I were starting large GWT project now, I'd design it as described here.

Btw, take a look at LinkedIn. :)