Pamätám si časy, keď bol JavaScript zatracovaným jazykom. Internet bol plný reklamných bannerov s prečiarknutým hadom a sloganmi o tom, že JavaScript je škodlivý. Dnes je to inak, webové prostredie valcuje to klasické spúšťané v operačnom systéme. Internetové prehliadače už nie sú prehliadače dokumentov, ale behová platforma pre čoraz bohatšie aplikácie a model pluginov, ktorý bol 5 rokov dozadu na výslní, je pomaly ubíjaný rôznorodosťou zariadení a operačných systémov, s ktorými sa teraz dá na internet dostať.
Je tu HTML5 a … JavaScript. Čo ale s tým množstvom vývojárov desktopových aplikácií, ktorí by mali zrazu začať písať weby. Jednou možnosťou je zaškoliť ich na JavaScript. Tou druhou je nechať ich písať v ich jazyku a výsledok ich práce prekladať do JavaScriptu. A práve na takýto prípad využitia Javy je tu Google Web Toolkit alebo GWT.
Pochopenie GWT je o pochopení hlavného účelu GWT a tým je preklad. Veľa z nastavení a nástrojov, ktoré GWT obsahuje sa týka práve toho magického kroku premeny Java kódu na JavaScript kód. Prechod na JavaScript ale nie je jedinou výhodou, ktorou sa môže GWT pochváliť. Veľa dôrazu bolo kladené na vyrovnanie sa v rôznorodým a nie príliš štandardizovaným prostredím prehliadačov (nie že by štandardy neexistovali, ale niekedy si ich každý implementátor vysvetľuje po svojom). Tvorcovia GWT hrdo tvrdia, že na seba berú bremeno toho, aby ste mohli písať jeden kód, ktorý beží v rôznych prehliadačoch.
Ako teda taká GWT aplikácia vyzerá? Najjednoduchšia možná verzia obsahuje 3 súbory:
- Html – prestavuje html stránku, ku ktorej je na pozadí pridaný kód. Môže byť úplne jednoduchá a prvky do nej sú pridané neskôr pomocou kódu.
- Java – tu ide java kód, ktorý sa bude prekladať do JavaScriptu
- .gwt.xml – konfiguračný súbor pre GWT modul
GWT používa koncept modulov na logické rozdelenie kódu. Modul si viete predstaviť ako množinu Java kódu (fyzický môže byť rozmiestnený ľubovoľne – v konfiguračnom súbore sú na neho uvedené len odkazy) a množinu nastavení pre tento modul. GWT potom pri preklade vezme informácie v tomto module a urobí preklad. Výsledkom takého prekladu je potom množina html a JavaScript súborov (prípadne obrázkov a iných súborov s dátami).
GWT má v logu kufrík s náradím. A je to celkom výstižné, lebo okrem základného prekladu ponúka aj sadu nástrojov/techník, ktoré vedia byť v určitých situáciách užitočné. To je ich stručný prehľad:
- Widgety/Panely – predstavujú hotové UI prvky, pomocou ktorých viete tvoriť stránku bez priamej manipulácie s DOM. Dokážu sa do seba vnárať, podporujú notifikáciu pomocou udalostí a samozrejme je možné prispôsobovať ich vzhľad.
- Client Bundle – je to nástroj na efektívne prenášanie údajov (ako obrázky, texty) na klienta. GWT dokáže samo vybrať najvhodnejší spôsob ako zabezpečiť efektívny presun.
- UIBinder – okrem tvorby štruktúry stránky procedurálnym postupom v kóde je možné ju definovať pomocou XML jazyka. GWT potom na základe popisu poskladá potrebné widgety, z ktorých je vygenerovaný DOM. Nechýba výpomoc v podobe automatického mapovania hodnôt widgetov na premenné v kóde (s možnosťou písať jednoduché výrazy s viacerými premennými).
- GWT-RPC a Request-Factory – sú to nástroje, ktoré rôznym spôsobom umožňujú prenášať údaje (doménové objekty) cez sieť. Obe majú rôzne vlastnosti, a teda svoje výhody a nevýhody. Je to tiež jediný prípad, kedy časť GWT kódu ostáva ako java kód na strane servera.
- Editor-Framework – umožňuje mapovať widgety priamo na javovské objekty.
- Data-Presentation (Cell) Widget – špeciálna skupina widgetov určená na zobrazovanie veľkého množstva údajov.
- JSNI – JavaScript Native Interface – umožňuje časti kódu písať v JavaScripte, ktorý sa už neprekladá, ale len skopíruje na správne miesto. Používa sa napríklad pri volaní JavaScript knižníc alebo pri nízko-úrovňovej práci s prehliadačom.
- Lokalizácie – obsahuje v sebe 3 časti a to: internationalization (preklad rozhrania), localization (zmena formátu dátumu, čísel atď. podľa štandardov krajiny) a accesibility (úprava webu pre slabo vidiacich)
- Event Bus – zbernica udalostí naprieč celou GWT aplikáciou, ktorá umožňuje slaboväzobnú komunikáciu jej častí
- GIN Framework – Dependency Injection framework pre GWT
- Defered Binding a generátory – náročnejšie nástroje, ktoré umožňujú vytvárať viacero verzií JavaScriptu určené pre rôzne prípady použitia (rôzne prehliadače, podmienky spustenia prehliadača atď.)
Google Web Toolkit nevzniklo náhodou. Existuje veľká disproporcia medzi stavom vedomostí na strane vývojárov a požiadavkami trhu. Web expanduje a vyžaduje si čoraz viac programovania pre prehliadače. Na druhej strane mnoho vývojárov nie je ochotných opustiť svoj programovací jazyk/platformu. A preto do tejto trhliny už 7 rokov miery GWT. A aj tento vek musí byť dôkazom že to, čo ponúka, je naozaj použiteľné.