I have to disagree, MVP makes code way less complex, especially in case of GWT. If you plan on medium to large size GWT project then MVP architecture is your primary option. I suggest to look at both GWT MVP (by Google) and at gwt-platform (suggested by KennethJ). There are other implementations as well.
MVP's main benefits (I mean MVP pattern - not just GWT MVP):
- clear separation of GWT UI and
business logic; all your client side
Java code becomes extremely generic
with minimal dependency on GWT
implementation (primarily via
interfaces). This helps tests
tremendously but it's invaluable
benefit of UI design by itself.
- maintainability of UI increases due to almost no dependency on business
logic
- increases amount of shared code between client and server due to
limited GWT dependencies
Other complementing technologies that you are likely to adopt:
- gwt-gin (client side implementation of Google Guice): gwtp makes it almost required (or required - I never tried without it)
- Guice (server side) for consistency with client code but not necessary technically
- test mocking framework (e.g. mockito) always comes handy with MVP
- GWT UIBinder - unless you are extremely dynamic in your UI design
- GWT EventBus - main method of client side communication in asynchronous environment like AJAX/JavaScript
- GWT-RPC via command pattern (gwtp dispatcher and/or RequestFactory)