Wprowadzenie do technologii GWT

Transkrypt

Wprowadzenie do technologii GWT
Wprowadzenie do technologii GWT
Autor: Marcin Kopański
Data: 14-06-2010
Technologia GWT (Google Web Toolkit) oferuje programistom kompletny
zestaw narzędzi (wraz z wtyczkami do Eclipse i NetBeans) do tworzenia
bogatych aplikacji internetowych, popularnie zwanych RIA (Rich Internet
Application). Dzięki temu programiści Javy SE/EE nie muszą już uczyć się
dodatkowych technologii wykorzystywanych w aplikacjach internetowych tj.:
JavaScript, XML, HTML, ani także korzystać z hybryd takich jak JSP, JSF
(używanych w ramach JavaEE).
Całość została pomyślana tak by ułatwić jak najbardziej przejście z
programowania aplikacji okienkowych do tworzenia aplikacji internetowych
doświadczonym programistom języka Java. Dzięki temu budowa interfejsu
naszej witryny nie różni się praktycznie niczym od tworzenia interfejsu
użytkownika w Swingu czy AWT. Mamy tutaj podobne panele, zarządzanie
rozmieszczeniem elementów w ramach panelu (LayoutManager), a nawet
podobne metody określania parametrów okien.
Obsługa zdarzeń także pozostała taka sama jak w przypadku Swing/AWT
(przynajmniej w trakcie pisania aplikacji). Wymaga to utworzenia obiektu
"handlera", przeciążenia odpowiednich metod, dodania do nich kodu
obsługującego dane zdarzenie i dodanie takiego obiektu do np. przycisku
który ma takie zdarzenie wywoływać.
Komunikacja pomiędzy serwerem a klientem w przypadku typowej
aplikacji GWT odbywa się poprzez mechanizm RPC (Remote Precedure Call).
Polega on na utworzeniu klas wykonywanych po stronie serwera a będących
wywoływanymi jako funkcji z poziomu interfejsu klienta. Dzięki temu nie
trzeba się praktycznie przejmować żadnym Web'owym mechanizmem
request'ów. Dane przesyłane pomiędzy klientem a serwerem są
serializowane dzięki czemu po obu stronach mogą być używane jak zwykłe
obiekty Java. Istnieją restrykcje co do klas narzędziowych JSE które mogą
zostać wykorzystywane w aplikacjach napisanych dzięki GWT, jednakże to
ograniczenie dotyczy wyłącznie warstwy interfejsu użytkownika i obiektów
wykorzystywanych do wymiany danych. Wynika to z tego, że nie wszystko
napisane w Javie może zostać zamienione na kod JavaScript. Po stronie
serwera nie ma już takiego ograniczenia.
Dodatkowo w celu wprowadzenia nowej technologii budowania aplikacji
internetowych do już istniejących aplikacji możliwe jest wykorzystywanie
1
standardowych sposobów przesyłania danych takich jak JSON czy XML. Nic
nie stoi na przeszkodzie by aplikacja kliencka (napisana w GWT)
komunikowała się z warstwą serwerową napisaną w innych językach i
odwrotnie.
Struktura projektu jest bardzo przejrzysta. Podzielona została na dwie
gałęzie podstawowe: com.sample.client (pakiet zawierający kody warstwy
klienta), com.sample.server (pakiet zawierający kody warstwy serwerowej)
oraz opcjonalnie dodatkowe pakiety które mogą być współdzielone pomiędzy
pomiędzy tymi dwoma warstwami.
Gotowa już aplkacja umieszczana jest na serwerze (np. Tomcat) który to
w trakcie pierwszego żądania zinterpretuje klasy Java do JavaScriptu (i
HTML). W takiej postaci aplikacja zostanie wysłana do klienta. Także
podsumowując GWT jest jakby interfejsem ponieważ daje programiście
możliwość pisania aplikacji w Javie bez konieczności uczenia się JavaScriptu
by otrzymać w pełni interaktywne GUI.
Z własnych doświadczeń wiem ile problemów przysparza różna
interpretacja HTML przez różne przeglądarki. Jest wiele niuansów z tym
związanych które potrafią zepsuć całkowicie wygląd strony który ładnie
wygląda w jednej a całkowicie inaczej w drugiej przeglądarce.
Tu GWT także ma dla programistów niespodziankę. Załóżmy, że używamy
IE i łączymy się z naszą nowo wdrożoną aplikacją. Jako, że jest to pierwsze
połączenie z przeglądarki IE z serwerem, GWT przygotuje całą aplikację
mając na uwadze sposób prezentacji HTML w danej przeglądarce. Jeśli
naszym kolejnym żądaniem będzie łączenie się z np. Opery, GWT przygotuje
nową wersję aplikacji własnie dla niej. Także po kilku takich połączeniach na
serwerze aplikacji mamy kilka wersji kodu dostosowanego do różnych
przeglądarek sami nie kiwając nawet palcem. Chociaż niewielu programsitów
ufa automatom to muszę przyznać, że takie tworzenie wersji dla różnych
przeglądarek działa zadziwiająco dobrze i strony wyglądają prawie
identycznie.
2