google web toolkit - o vedere de ansamblu

Upload: ovidiu-costinel-danciu

Post on 19-Oct-2015

7 views

Category:

Documents


0 download

DESCRIPTION

Google Web Toolkit - O Vedere de Ansamblu

TRANSCRIPT

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/