Если вы хотите написать фронтэнд и бэкэнд на JAVA и хотите сделать сложные вещи типа ajax, тогда GWT - отличный способ.
Самый простой способ думать об этом - это то, что создание приложения GWT похоже на создание приложения JAVA Swing, которое подключается к серверу. Так же, как приложение Swing, которое использует сервер, вы можете сделать его толстым или тонким. Когда вы закончите, все скомпилировано в HTML и javascript и имеет очень хорошую поддержку современного браузера (т.е. 6 + ff, opera, safari).
Он абстрагирует весь javascript и HTML, но если вы хотите, чтобы он выглядел хорошо, вам все равно нужно понимать CSS.
Я думаю, что любой, кто говорит, что он разрушает MVC или что он мутит клиента и сервера, не понимает GWT. GWT - это клиентская структура. И он используется только на КЛИЕНТА. GWT предоставляет механизм RPC для подключения его к JAVA (и другим) бэкэндам, но это всего лишь протокол связи, это не значит, что код вашего сервера волшебным образом становится вашим клиентским кодом. Конечно, вы можете написать целую кучу бизнес-правил в свой интерфейс, если вы действительно этого хотите, но вы можете сделать это с любой средой, поэтому было бы глупо говорить, что GWT как-то отличается в этом отношении.