niedziela, 30 grudnia 2007

Kreatory w GWT

W dystrybucji GWT znajdują się cztery skrypty cmd, które w największym skrócie można nazwać kreatorami. Każdy z nich jest wykorzystywany na różnym etapie tworzenia aplikacji.

projectCreator
GWT pozwala na łatwą integrację ze środowiskiem Eclipse, dlatego też jeżeli podczas tworzenia aplikacji programista zamierza korzystać z tego IDE, wówczas powinien użyć tego narzędzia. Kreator ten zakłada strukturę katalogów (wraz z plikami .project oraz .classpath) , która pozwoli łatwo zaimportować tworzoną aplikację jako projekt Eclipse.

Wykonując komendę: Utworzona zostanie następująca struktura: applicationCreator
Kreator ten pełni trzy funkcje:

  • Wytwarza strukturę pakietów dla aplikacji.
  • Generuje domyślne pliki HTML i Java spięte w prostym pliku module XML. Te pliki stanowią prostą aplikację od której można zacząć budowanie bardziej zaawansowanych funkcjonalności.
  • Tworzy skrypty cmd, które pozwalają przekompilować i uruchomić aplikację w trybie hosted mode.
Wykonując komendę (bez Eclipse): Wykonując komendę (z Eclipse): Utworzona zostanie następująca struktura: W przypadku parametru -eclipse dodatkowo powstanie: i18nCreator
Jeżeli pojawia się skrót i18n to oczywiście chodzi o internacjonalizację. Tym kreatorem wytwarzamy proste pliki properties zawierające teksty stałe w formie klucz/wartość. Generowany jest również skrypt cmd [Appl]-i18n, który na podstawie plików properties generuje interfejs Java poprzez który mamy dostęp do tekstów stałych z kodu Java aplikacji GWT.

Wykonując komendę (bez Eclipse): Wykonując komendę (z Eclipse): Utworzona zostanie następująca struktura: W przypadku parametru -eclipse dodatkowo powstanie: jUnitCreator
Tworzy odpowiedni katalog oraz pliki, w którym należy umieścić testy jednostkowe aplikacji GWT.

Wykonując komendę (bez Eclipse): Wykonując komendę (z Eclipse): Utworzona zostanie następująca struktura: W przypadku parametru -eclipse dodatkowo powstanie: Dzięki kreatorom można w ciągu dosłownie kilku chwil zbudować swoją pierwsza aplikację w GWT, dzięki czemu nawet niecierpliwi się nie zniechęcą. Oczywiście bardziej istotne jest to, że nie trzeba wykonywać powtarzalnych czynności, które może za nas wykonać automat.

niedziela, 23 grudnia 2007

Dlaczego GWT jest lepsze od Echo2

Pamiętam jak dawno dawno temu natrafiłem na bardzo ciekawy framework jakim był Echo2, sama koncepcja pisania dla mnie była genialna, ale jednak po dokładniejszej analizie tego rozwiązania stwierdziłem, iż w praktyce ma ona małe szanse powodzenia. Teraz nadeszedł moment, gdy postanowiłem porównać go z GWT, ponieważ sama idea pisania aplikacji w tych frameworkach jest analogiczna, ale zasada działania już zupełnie inna.

Zarówno w GWT jak i w Echo2 programista używa API zbliżonego do Swinga (lub jak kto woli do AWT). Poniżej zamieszony został przykład jak dodać pole edycyjne i przycisk w Echo2: Natomiast w GWT ten sam przykład wygląda tak: Jeżeli chodzi o porównanie kodu nie ma zasadniczych różnic, natomiast w działaniu sytuacja jest odmienna.

GWT na podstawie kodu Java generuje JavaScript, który jest uruchamiany w przeglądarce Internetowej, natomiast Echo2 kompiluje kod do klasy Java, a następnie uruchamia go na serwerze. To powoduje, iż każde zdarzenie (np. naciśnięcie przycisku) generuje ruch pomiędzy przeglądarką Internetową, a serwerem. Wybraźmy sobie co by było gdyby po każdym wyjściu z pola edycyjnego było uruchamiane zdarzenie (Echo2 ograniczyło na szczęście uruchamianie takich zdarzeń). Stąd podejście proponowane przez Echo2 zupełnie do mnie nie przemawia, bo generuje zbyt duży ruch w sieci. Oczywiście są pewne zalety takiego podejścia np. na serwerze wiadomo jaki jest stan aplikacji, jest wysyłany tylko niezbędny JavaScript.

Twórcy GWT wybrali wg mnie bardziej naturalną drogę skoro interfejs jest w przeglądarce to i aplikacja jest w niej uruchamiana, a komunikuje się z serwerem tylko wtedy gdy jest to niezbędne.