Zacznę od stwierdzenia, że jestem wielkim fanem GWT, ale tak, jest wiele pułapek, ale większość, jeśli nie wszystkie, byliśmy w stanie pokonać:
Problem: Długi czas kompilacji, wraz z rozwojem projektu rośnie czas potrzebny na jego kompilację. Słyszałem o raportach o kompilacjach trwających 20 minut, ale moje mają średnio około 1 minuty.
Rozwiązanie: Podziel kod na oddzielne moduły i powiedz ant, aby budował go tylko wtedy, gdy zostanie zmieniony. Również podczas programowania możesz znacznie przyspieszyć czas kompilacji, budując tylko dla jednej przeglądarki. Możesz to zrobić, umieszczając to w swoim pliku .gwt.xml:
<set-property name="user.agent" value="gecko1_8" />
Gdzie gecko1_8 to Firefox 2+, ie6 to IE itd.
Problem: Tryb hostowany jest bardzo powolny (przynajmniej w systemie OS X) i nie zbliża się do zmian „na żywo”, które otrzymujesz, gdy edytujesz rzeczy takie jak strony JSP lub Railsy i klikniesz odświeżanie w przeglądarce.
Rozwiązanie: Możesz dać trybowi hostowanemu więcej pamięci (generalnie mam 512 MB), ale nadal jest wolny, stwierdziłem, że gdy już będziesz wystarczająco dobry z GWT, przestaniesz go używać. Wprowadzasz dużą porcję zmian, a następnie kompilujesz tylko dla jednej przeglądarki (zazwyczaj kompilacja trwa 20 sekund), a następnie po prostu klikasz odświeżanie w przeglądarce.
Aktualizacja: W GWT 2.0+ nie stanowi to już problemu, ponieważ używasz nowego „Trybu rozwoju”. Zasadniczo oznacza to, że możesz uruchamiać kod bezpośrednio w wybranej przeglądarce, więc bez utraty szybkości, a także możesz go uruchomić / sprawdzić itp.
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
Problem: kod GWT to Java i ma inną mentalność niż układanie strony HTML, co utrudnia wykonanie projektu HTML i przekształcenie go w GWT
Rozwiązanie: Ponownie przyzwyczaisz się do tego, ale niestety konwersja projektu HTML do projektu GWT zawsze będzie wolniejsza niż robienie czegoś takiego jak konwersja projektu HTML na stronę JSP.
Problem: GWT zajmuje trochę czasu i nie jest jeszcze głównym nurtem. Oznacza to, że większość programistów, którzy dołączą do Twojego zespołu lub utrzymają Twój kod, będzie musiała nauczyć się go od podstaw
Rozwiązanie: Okaże się, czy GWT wystartuje, ale jeśli jesteś firmą, która kontroluje, kogo zatrudniasz, zawsze możesz wybrać osoby, które znają GWT lub chcą się go nauczyć.
Problem: GWT to młot w porównaniu do czegoś takiego jak jquery lub zwykły javascript. Aby to się stało, potrzeba dużo więcej konfiguracji niż samo dołączenie pliku JS.
Rozwiązanie: użyj bibliotek, takich jak jquery, do mniejszych, prostych zadań, które są do nich dostosowane. Korzystaj z GWT, gdy chcesz zbudować coś naprawdę złożonego w AJAX lub gdy musisz przekazywać swoje dane tam iz powrotem za pośrednictwem mechanizmu RPC.
Problem: Czasami, aby zapełnić swoją stronę GWT, musisz nawiązać połączenie z serwerem podczas pierwszego ładowania strony. Siedzenie w tym miejscu i obserwowanie symbolu ładowania podczas pobierania potrzebnych danych może być denerwujące.
Rozwiązanie: w przypadku strony JSP strona została już wyrenderowana przez serwer, zanim stała się HTML, więc możesz wtedy wykonać wszystkie wywołania GWT i wstępnie załadować je na stronę w celu natychmiastowego załadowania. Zobacz szczegóły:
Przyspiesz ładowanie strony dzięki wstępnej serializacji połączeń GWT
Nigdy nie miałem żadnych problemów ze stylizowaniem moich widżetów przez CSS, po wyjęciu z pudełka, niestandardowych lub w inny sposób, więc nie wiem, co masz na myśli przez to, że jest to pułapka?
Jeśli chodzi o wydajność, zawsze stwierdzałem, że raz skompilowany kod GWT jest szybki, a wywołania AJAX są prawie zawsze mniejsze niż odświeżanie całej strony, ale nie jest to unikalne dla GWT, chociaż natywne pakiety RPC, które otrzymujesz, jeśli używasz zaplecze JAVA jest dość kompaktowe.