Zestawienie środowiska do tworzenia aplikacji GWT z Eclipse Ganymede i Cypal Studio for GWT rozpoczynam od pobrania Cypal Studio i najnowszej wersji GWT. Eclipse Ganymede już mam, więc mam go z głowy. Instalacja Cypal Studio to umieszczenie go w wybranym katalogu, np. C:\apps\eclipse-plugins\cypal.studio.for.gwt\eclipse\plugins (paczka dystrybucyjna narzędzia to zestaw wtyczek - pliki jar), a następnie w katalogu links w Eclipse umieszczam plik cypal.studio.for.gwt.link o następującej treści:
path=C:/apps/eclipse-plugins/cypal.studio.for.gwtWięcej o tym mechaniźmie instalacji wtyczek do Eclipse w Zarządzanie wtyczkami w Eclipse - Extension Location.
Teraz wystarczy prześledzić krótką acz treściwą dokumentację Cypal Studio for GWT i po 5 minutach można cieszyć się z gotowego środowiska, albo nawet gotowej aplikacji opartej o GWT.
Rozpoczynam od konfiguracji wtyczki w Eclipse - Window > Preferences > Cypal Studio i ustawiam parametr GWT Home. Następnie Ctrl+N i wybieram Dynamic Web Project, gdzie w Configuration pojawi się Cypal Studio for GWT (acz jedynie jeśli wersja Dynamic Web Module version jest niższa niż 2.5). Bez względu na wybór Configuration (czy istnieje czy nie, np. przy wyborze wspomnianej wersji 2.5) istnieje możliwość wyboru własnej konfiguracji (Custom) przez przycisk Modify (obok pola Configuration), gdzie widoczny jest Cypal's GWT Facet.
Jedna uwaga związana z tworzeniem projektu, w którym moglibyśmy wybrać Apache Tomcat 6.0 jako środowisko uruchomieniowe. Próba uruchomienia tak zestawionego projektu z GWT Hosted Mode Application kończy się błędem o niedostepności klas bądź niezgodności sygnatur metod - generalnie niezła jazda i nie wiadomo, o co chodzi. Już byłem bliski zrezygnowania z Eclipse na rzecz IntelliJ IDEA, który również udostępnia wsparcie dla projektów GWT, kiedy w końcu udało mi się rozpracować temat, co sprowadziło się do usunięcia serwera Apache Tomcat jako domyślnego środowiska uruchomieniowego. Nie mam pojęcia, czy z innymi środowiskami również można doświadczyć tego "cudeńka".
I na koniec uwaga o usunięciu pliku gwt-user.jar z dokumentacji Cypal Studio for GWT, która nie dotyczy wersji GWT 1.5. Nie trzeba sobie zaprzątać głowy tym plikiem.
Po utworzeniu projektu, wystarczy Ctrl+N i Cypal Studio > GWT Module, podać dane modułu GWT i voila - aplikacja gotowa!
Jako przykład jakiejkolwiek funkcjonalności wyłącznie w celach demonstracyjnych można skorzystać z dokumentacji javadoc dla GWT, gdzie przy każdej kontrolce pojawia się krótki przykład, na jej wykorzystanie, np. dokumentacja com.google.gwt.user.client.ui.ToggleButton. Pozostaje jeszcze zajrzeć do katalogu samples, uruchomić przykłady, rozejrzeć się po kodzie i można zaczynać coś poważniejszego.
Uruchomienie aplikacji to Run > Run Configurations > GWT Hosted Mode Application i wybranie projektu GWT (pole Project) z odpowiednim modułem (pole Module). Tak proste, jak prostym powinno być.
Pytanie konkursowe: Jak nazywa się zestaw wtyczek eclipsowych do tworzenia aplikacji GWT?
p.s. Miałem o tym pisać już wcześniej, ale dopiero teraz się zebrałem. Podczas, kiedy ja żyłem JAVArsovią 2008, moja Agatka zdecydowała się trochę zrewolucjonizować nasze rodzinne życie i postanowiliśmy (my?!) kupić nowe mieszkanie na Ursynowie. Żonuś moja kochana trochę sceptycznie podchodzi do próby nagłaśniania tematu na moim blogu, ale może w ten sposób zrekompensuję rodzinie straty czasowe, kiedy to przesiaduję na blogu zamiast zajmować się nią i być może namierzę ciekawe mieszkanie. Interesuje nas mieszkanie 4-pokojowe (75-90m2) na Ursynowie (preferowany Natolin), najlepiej za...darmo - może znajdzie się jakaś bogata ciocia z Ameryki ;-) Jeśli macie wieści o takim lokum na Usynowie koniecznie dajcie znać. Fajnie byłoby się pochwalić mieszkaniem kupionym przez bloga. Dziękuję!
Odpowiadając na Twoją zaczepkę pragnę zaznaczyć,że właśnie tworze posta :)
OdpowiedzUsuńJeśli chodzi o gwt to bardzo podoba mi się integracja którą oferuje Idea. Nie jestem wielbicielem tego IDE ale akurat ta funkcjonalność zrobiła na mnie naprawdę duże wrażenie.
Akurat w przypadku GWT nie jestem przekonany do stosowania wtyczek do IDE. Narzędzia które przychodzą z dystrybucją całkiem nieźle sprawdzają się w kwestii przygotowania projektu eclipse'owego.
OdpowiedzUsuńTwoje problemy z Hosted Mode mogą wynikać z tego, że dystrybucja GWT przychodzi z własnym specjalnie dostosowanym Tomcatem. To on jest uruchomiany w Hosted Mode. Choć Google poleca używanie Web Mode do bardziej złożonych web aplikacji (integracja ze springiem, etc.), to jednak ten wbudowany tomcat jest zupełnie standardowy i manipulującą plikem web.xml w ROOT/WEB-INF/ można uzyskać pożądane efekty, nie tracąc przy tym możliwości wygodnego debugowania kodu Javy, zanim stanie się on kodem JS (potem już tylko debugowanie serwisów RPC po stronie serwera i debuger JS na kliencie :) )
A co do GWT 1.5, to generalnie jestem bardzo zadowolony. Zawsze zadziwiało mnie nieortodoksyjne podejście z jakim twórcy GWT podchodzą do Javy. Sama koncepcja kompilacji Java2JS to jedno, ale co tam oprócz tego tkwi w środku - Deffered Binding, czyli po co robić w runtime to, co można zrobić na etapie kompilacji. Powiązany z tym Implicit Method Binding (można to w pewnym stopniu porównać do AOP). Teraz "upgradowałem" projekty z GWT 1.4 do 1.5 i znalazłem jeszcze kilka fajnych rzeczy. Np. genericsy - niby nic nowego, a jednak GWT używa ich na wiele różnych sposobów - nie tylko można wyposażyć w generics własne klasy, część kodu GWT też jest uzupełniona sprytnie genericsami, np. AsyncCallback, co likwiduje konieczność castowania i pewną ilość "boilerplate code". Co więcej, i to jest szczególnie interesujące, genericsy używane są nie tylko jako odwołanie do typu, ale także jako metainformacja o typie - czyli funkcjonują jak annotations, w pewny sensie obchodząc problem type erasure.
Wracając do zwalczania nadmiarowego kodu, polecam przyjrzenie się annotation:
com.google.gwt.user.client.rpc.RemoteServiceRelativePath
Nie jest to opisane w dokumentacji w tej chwili, a likwiduje tony niepotrzebnego kodu przy inicjalizacji serwisów RPC.
Pomimo zachwytów nad GWT 1.5, dostrzegam jedną wadę - czasem nawet 5x wydłużony czas kompilacji. Mamy duży projekt w GWT (~20k linii kodu), który na niezłej maszynie kompilował się ponad 2min, nawet nie próbowałem z GWT 1.5, ale niektórzy raportowali, że ich projekty kompilują się 30min :) Obaczymy.
Jeśli jesteś zainteresowany GWT i którymś z tych zagadnień w szczegółach, to daj znać - wrzucę jakiś większy tekst na bloga.
Co do tego bledu (java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory) - wystarczy usunac z buildpatha biblioteki Tomcata 6 i dziala ;)
OdpowiedzUsuń(PPM/Build path/Remove from Build Path)
Pozdrawiam
No tak, ten czas kompilacji, trochę zniechęca do zabawy w tym wynalazku GWT itd...
OdpowiedzUsuńpoczątkujący
Ten komentarz został usunięty przez autora.
OdpowiedzUsuńNiestety ten sposób dodawania pluginów nie działa ( przynajmniej u mnie ). Być może dlatego, że pod łyndołsem nie można nazwy zaczynać od kropki. chodzi o plik .eclipseextension
OdpowiedzUsuńPod slackiem też nie bardzo chce to chodzić. Przyznam, że mam małe doswiadczenia z Eclipse i może po prostu nie zrobiłem czegoś co dla bardziej zaawansowanego użytkownika jest oczywiste.
Pozdrawiam
Oczywiście chodzi o wersje 3.4
OdpowiedzUsuńDziała, działa, bo to nie Windows nie pozwala, ale Windows Explorer. Ja zakładam pliki rozpoczynające się od kropki pod Cygwinem, ale pewnie są inne sposoby, np.
OdpowiedzUsuńC:\Documents and Settings\jlaskowski
> ver
Microsoft Windows XP [Version 5.1.2600]
C:\Documents and Settings\jlaskowski
> echo ala > .ala
C:\Documents and Settings\jlaskowski
> dir .ala
Volume in drive C is disk
Volume Serial Number is 00F4-27E9
Directory of C:\Documents and Settings\jlaskowski
2009-01-06 12:30 6 .ala
1 File(s) 6 bytes
0 Dir(s) 19 649 683 456 bytes free
Jak już zostanie utworzony, można edytować wybranym narzędziem - Otwórz za pomocą, czy jakoś tak.
Bardzo fajnie napisane. Jestem pod wrażeniem i pozdrawiam.
OdpowiedzUsuń