google web toolkit - o vedere de ansamblu
DESCRIPTION
Google Web Toolkit - O Vedere de AnsambluTRANSCRIPT
Google Web Toolkit - O vedere de ansamblu
Prezentul articol este o iniiere n Google Web Tookit (GWT) pentru cei care nu au mai lucrat cu pn acum cu acesta, dar i o surs de informaii interesante despre GWT pentru cei care sunt familiari cu acest mediu de dezvoltare.
n esen, GWT este un set de instrumente care permite crearea de aplicaii web complexe, cu un minim de cunotine de HTML / Javascript. Acest lucru este posibil datorit compilatorului care translateaz cod Java n cod HTML / JS. De exemplu, crearea unui buton n GWT se poate realiza astfel:
Button button = new Button(Click here).
Secvena de cod Java de mai sus va fi translatat n:
.
Avantaje
GWT conine n mod implicit anumite componente grafice dinamice i reutilizabile. Acestea pot fi extinse i modificate dup necesiti.
De asemenea, GWT ofer un sistem de gestionare a istoriei aplicaiei, utiliznd butonul Back al browser-ului. Acest mecanism este foarte util deoarece n lipsa lui, butonul cauzeaz prsirea aplicaiei, cnd de fapt utilizatorul ar dori s revin la aciunea anterioar n interiorul aplicaiei.
Un alt mare avantaj al GWT-ului este c asigur suport pentru debug standard n Java. Mai exact, aplicaia ruleaz ntr-un browser web sub form de cod JavaScript, dar n codul Java putem inspecta valori, pune breakpoint-uri, exact ca i cum aplicaia ar fi executat n Java.
Promisiunea pe care Google o face prin GWT e similar cu promisiunea pe care Sun a fcut-o cu Java: Write once, run anywhere. Astfel, dac Java promite independena fa de platforma pe care ruleaz un program, GWT promite independena fa de browser-ul pe care ruleaz aplicaia web.
Nu n ultimul rnd, erorile comune de JavaScript cum ar fi incompatibilitate de tipuri sau erori de scriere, sunt detectate n mod implicit de ctre compilator, deoarece codul e scris n Java.
GWT i tehnologiile web
GWT i JavaScript
Pentru a folosi GWT trebuie s acceptm un ciclu de dezvoltare de tip scrie compileaz ruleaz. Acest fapt ncetinete viteza de implementare a unui produs n comparaie cu JavaScript, unde rezultatele se vd imediat ce codul este scris.
Vestea bun e c cei de la Google s-au gndit i la aceasta, de aceea n GWT exist un mod de a rula aplicaia numit DevMode, n care codul scris n Java e translatat n JavaScript la momentul executrii, linie cu linie. Drept urmare, tot timpul aplicaia ruleaz ultimul cod scris, ceea ce nseamn c se poate face o modificare n cod, plus o rencrcare a paginii n browser i modificrile fcute sunt deja vizibile.
n caz c este necesar, se poate scrie cod JavaScript care nu va fi modificat de compilator. Pentru acest lucru se declar metode java native, iar codul JavaScript se scrie ntr-un comentariu sub declaraie.
public static native String
getNativeLocationURL() /*-{
var currentURL = $doc.location.href";
return currentURL;
}-*/;
GWT i CSS
Chiar dac majoritatea componentelor grafice puse la dispoziie de ctre GWT au un aspect bun din punct de vedere vizual, de cele mai multe ori dorim s modificm felul n care arat aplicaia web. n acest caz sunt necesare cunotine de CSS. Desigur se pot folosi i librrii de CSS pentru a ajunge mai rapid la un rezultat satisfctor.
GWT ofer suport pentru editarea clasei de CSS a unui element la rulare. Spre exemplu, pe butonul definit n introducerea articolului putem aplica o clas CSS foarte uor, folosind metoda setStyleName:
button.setStyleName(awesomeButton);
Totodat, exist suport i pentru adugarea sau eliminarea de nume de clase.
GWT i HTML
Lucrul cu GWT nu nseamn c suntem constrni la un anumit set de componente web. n final va fi generat tot cod HTML i de aceea exist suport pentru componente HTML pure.
Nu este obligatoriu nici ca o aplicaie s fie n ntregime scris n GWT: se poate introduce pe o pagin web doar o component GWT n cazul n care se dorete ca pagina s rmn neschimbat n rest.
De asemenea, GWT ofer suport direct pentru elemente HTML5. De exemplu, pentru a verifica dac tag-ul video de HTML5 e suportat n browser-ul curent (n care e deschis aplicaia), se poate apela simplu:
Video.isSupported();
Structura unui proiect GWT
Un proiect care folosete GWT este compus din trei pachete mari: Client, Shared i Server.
Codul din pachetele Client i Shared va fi translatat de compilatorul GWT n cod HTML i JavaScript. Din acest motiv, codul din aceste dou pachete este limitat la un subset de clase din Java, numit JRE Emulation Library. Codul din pachetul Server este cod pur Java i poate folosi toate clasele disponibile.
n linii mari, n pachetul Client se afl codul care descrie interfaa grafic. Din acest pachet nu se pot folosi direct clasele definite n pachetul Server.
n pachetul Shared se afl obiectele de transfer de date, prin intermediul crora se transfer informaia ntre aplicaia web i server. Clasele din acest pachet pot fi accesate i de ctre codul din Server i de ctre codul din Client. Ele sunt privite drept clase Java de ctre codul de pe Server dar, n acelai timp, sunt translatate n Javascript de ctre compilator, pentru folosirea lor n codul din interfaa grafic.
n pachetul Server sunt clasele care asigur ncrcarea datelor din alte surse: baze de date, integrri cu alte produse, etc.. Acestea pot chiar s lipseasc complet, caz n care aplicaia web generat de compilator poate fi instalat pe orice server web, chiar i fr suport Java. n aceast situaie este vorba de o aplicaie care nu necesit date persistente (de exemplu: un calculator online sau o aplicaie care i gestioneaz datele folosind servicii web).
Pentru a fi apelat cod din pachetul Server de ctre Client se creeaz apeluri asincrone. De exemplu, pentru o metod myMethod, dintr-un serviciu myService, apelul myService.myMethod se va executa instant, iar dup un anumit timp se va apela metoda onFailure sau onSuccess din AsyncCallback.
myService.myMethod(myParam1, myParam2, new AsyncCallback() {
public void onFailure(Throwable caught) {
handleException(caught);
}
public void onSuccess(ResultType result) {
doSomethingWithResult(result);
}
}
Unde i cum este folosit GWT
GWT este folosit de anumite produse Google i de multe companii mari att din domeniul public, ct mai ales din domeniul privat. Multe dintre aplicaiile scrise n GWT nu sunt publice, fiind folosite n interiorul organizaiilor.
Dintre produsele publice scrise n GWT putem aminti: Google AdWords, Google Flight, Google Web Fonts, extensia Speed Tracer de la browser-ul Chrome, versiunea desktop a jocului Angry Birds, Google Groups i interfaa de administrare de la Blogger.
Este demn de menionat un efort fcut de programatorii Google n timpul lor liber, de a porta jocul Quake2 n GWT. Mai exact au folosit o portare deja existent n Java a jocului, iar cu ajutorul GWT au reuit s l ruleze sub forma unei aplicaii web. Pentru a funciona modul multi-player au folosit WebSocket din HTML5.
Framework-uri bazate pe GWT
GWT se afl la baza a numeroase framework-uri sau produse utile pentru programare.
GXT de la Sencha este o librrie cuprinztoare de componente grafice, care pot fi folosite ntr-o aplicaie web. Ofer i suport pentru ncrcarea de seturi mari de date, cu paginare client-side sau server-side i alte avantaje.
Vaadin este un framework pentru dezvoltarea de aplicaii RIA (Rich Internet Applications), care se concentreaz mai mult pe partea de server. Mai exact, n GWT este posibil ca un click pe un buton s nu genereze un apel la server, ci s actualizeze alt element, sau s schimbe aranjarea n pagin. n Vaadin, modul de lucru este ca orice aciune a utilizatorului s trimit un apel la server, pentru a determina ce efect s aib acea aciune.
PlayN, un framework pentru dezvoltat jocuri care s ruleze pe platforme multiple (Java, Flash, Android, web), folosete GWT pentru implementarea mediului de rulare web.
n fine, mGWT este o librrie pentru GWT pentru crearea de aplicaii web pentru dispozitive mobile.
Comunitatea GWT
De la lansarea GWT din 2006 i pn anul trecut, Google a fost principalul factor de decizie n ceea ce privete viitorul acestui proiect ct i principalul contributor la codul surs. Celelalte companii care au adus mbuntiri sau au dezvoltat componente pentru GWT nu aveau un mod de a contribui la codul acestuia.
Anul trecut Google a luat decizia de a nfiina GWT Steering Committee comitetul de conducere GWT. Din acest comitet fac parte persoane care aparin unor companii ca i Vaadin, Sencha, RedHat i mGWT. Rolul acestui comitet este de a asigura continuitatea proiectului i de a contribui la mbuntirea codului acestuia.
Viitorul
Compania Vaadin a creat un raport numit Viitorul GWT, bazat pe un chestionar la care au rspuns aproximativ 1300 de companii referitor la felul n care GWT este folosit n interiorul organizaiei lor. 80% din aplicaiile GWT sunt dezvoltate n segmentul de afaceri, iar 1% sunt jocuri. Mai mult de 36% din aplicaii asigur suport pentru tablete, iar peste 25% pentru telefoane mobile.
Referitor la satisfacie, 49% dintre cei care au rspuns, sunt nemulumii de timpul de compilare, 34% de numrul mic de componente disponibile de la Google, iar 27% de timpul de rencrcare al aplicaiei cnd aceasta ruleaza n DevMode.
Pe de alt parte, 60% sunt mulumii de faptul c nu trebuie s scrie nici o linie de JavaScript, 25% de viteza aplicaiei la rulare (cnd este instalat la utilizatorii finali), iar 15% de posibilitatea de a gsi i repara defecte rapid. Cel mai important, 89% din cei care au rspuns, ar folosi GWT ntr-un proiect n viitor.
Concluzii
Folosind GWT se poate trece destul de repede de la o aplicaie care folosete librrii Java standard (Swing, AWT) pentru interfaa grafic, la dezvoltarea unei aplicaii web, putnd fi utilizate cunotinele de programare Java pentru a structura aplicaia ntr-un mod eficient.
Bibliografie
https://developers.google.com/web-toolkit/https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5https://developers.google.com/web-toolkit/speedtracer/https://groups.google.com/forum/#!forum/gwt-steeringhttp://sencha.com/gxthttp://vaadin.comhttps://vaadin.com/gwt/report-2012http://code.google.com/p/quake2-gwt-port/http://chrome.angrybirds.comhttps://developers.google.com/playn/http://m-gwt.com/