Google Web Toolkit Documentation Pr

8
Proiect – Sisteme Distribuite- Proiectul 1A: Google web toolkit (GWT) Iacob Madalina 30 242 Notiuni teoretice GWT este un set de tool-uri gratuite de dezvoltare pentru construirea si optimizarea aplicatiilor bazate pe browser. Scopul este de a activa dezvoltarea productiva a aplicatiilor web de inalta performanta eliminand necesitatea ca dezvoltatorul sa fie un expert in dezvoltarea aplicatiilor browser, XMLHttpRequest si JavaScript. GWT este folosit in multe produse oferite de Google incluzand AdWords, AdSense, Flights, HotelFinder, Offers, Wallet, Blogger. Exceptand cateva librarii native, aplicatia consta doar din cod java, ce poate fi rulat pe orice sistem care respecta cerintele impuse de Google Web Toolkit. Pentru a putea folosi Google Web Toolkit, acesta impune cateva cerinte speciale : - Java SDK – versiunea 1.6 sau mai noua , si - Apache Ant este de asemeni necesar pentru a rula argumentele in linia de comanda. Nu are cerinte privind memoria , spatiul de pe disc sau sistemul de operare. Google Web Toolkit SDK contine librariile Java API, compilatorul si serverul de dezvoltare. Astfel, folosind Google Web Toolkit dezvoltatorii pot scrie si depana aplicatii Ajax in limbaj Java folosind orice tool de dezvoltare Java. Cand aplicatia este desfasurata (deployed), compilatorul GWT translateaza aplicatiile Java in fisiere Java Script de sine statatoare care pot fi dificil de inteles, si sunt puternic optimizate. Acestea pot rula peste toate browserele, incluzand cele mobile pentru Android sau iPhone. Daca este nevoie, Java Script poate fi incorporat direct in codul Java, folosind comentariile Java. Construirea aplicatiilor AJAX in acest mod este mai productiv datorita unui nivel ridicat de abstractizare pentru conceptele comune cum ar fi manipularea DOM si comunicare XHR.

description

Google Web Toolkit Project

Transcript of Google Web Toolkit Documentation Pr

Proiect Sisteme Distribuite-

Proiectul 1A:Google web toolkit (GWT)Iacob Madalina 30 242

Notiuni teoretice

GWT este un set de tool-uri gratuite de dezvoltare pentru construirea si optimizarea aplicatiilor bazate pe browser. Scopul este de a activa dezvoltarea productiva a aplicatiilor web de inalta performanta eliminand necesitatea ca dezvoltatorul sa fie un expert in dezvoltarea aplicatiilor browser, XMLHttpRequest si JavaScript. GWT este folosit in multe produse oferite de Google incluzand AdWords, AdSense, Flights, HotelFinder, Offers, Wallet, Blogger. Exceptand cateva librarii native, aplicatia consta doar din cod java, ce poate fi rulat pe orice sistem care respecta cerintele impuse de Google Web Toolkit.Pentru a putea folosi Google Web Toolkit, acesta impune cateva cerinte speciale : - Java SDK versiunea 1.6 sau mai noua , si -Apache Ant este de asemeni necesar pentru a rula argumentele in linia de comanda. Nu are cerinte privind memoria , spatiul de pe disc sau sistemul de operare.Google Web Toolkit SDK contine librariile Java API, compilatorul si serverul de dezvoltare. Astfel, folosind Google Web Toolkit dezvoltatorii pot scrie si depana aplicatii Ajax in limbaj Java folosind orice tool de dezvoltare Java. Cand aplicatia este desfasurata (deployed), compilatorul GWT translateaza aplicatiile Java in fisiere Java Script de sine statatoare care pot fi dificil de inteles, si sunt puternic optimizate. Acestea pot rula peste toate browserele, incluzand cele mobile pentru Android sau iPhone. Daca este nevoie, Java Script poate fi incorporat direct in codul Java, folosind comentariile Java.Construirea aplicatiilor AJAX in acest mod este mai productiv datorita unui nivel ridicat de abstractizare pentru conceptele comune cum ar fi manipularea DOM si comunicare XHR. Google Web Toolkit nu rezolva doar partea de programare a interfetei utilizator, si este defapt un set de tooluri general, pentru construirea oricarui tip de functionalitate Java Script client side - de inalta performanta. Cu toate acestea, multe decizii arhitecturale cheie sunt lasate dezvoltatorului.Google web toolkit nu limiteaza dezvoltatorii la widget uri prestabilite.Orice se poate face cu DOM-ul browser-ului si Java Script se poate face si cu GWT, inclusiv interactiunea cu Java-Script scris de mana.Aplicatiile AJAX pot fi depanate in orice IDE ca si o aplicatie desktop obisnuita, si in orice browser, ca si cum ai scrie cod Java Script. Se poate folosi acelasi ciclu edit-refresh-view, si in acelasi timp inspectarea variabilelor, setarea de breakpoints si utilizarea tuturor celorlalte unelte de depanare disponibile cu java. Cum modulul de de dezvoltare Google Web Toolkit este el insusi in browser, pot fi folosite unelte ca Firebug, si Inspector, in timp ce se scrie cod Java.Aplicatiile Google Web Toolkit pot fi rulate in doua moduri:-Modul de dezvoltare aplicatia este rulata ca si bytecode Java printr- masina virtuala. Aceste mod este adesea folosit pentru dezvoltare.-Modul de productie (numit formal modul web) aplicatia este rulata ca si cod Java Script si HTML pur, compilat din sursa Java. Aceste mod este folosit in general pentru desfasurare (deployment).Exista o serie de plugin uri disponibile pentru a face dezvoltarea GWT mai usoara , incluzand GWT4NB pentru NetBeans, Cypal Studio pentru GWT (un plugin Eclipse).Plugin-ul Google pentru Eclipse manevreaza majoritatea taskurilor in IDE cum ar fi crearea proiectelor, invocarea compilatorului GWT, crearea configurarilor GWT, validarea si evidentierea sintaxei.

Principalele componente Google Web Toolkit sunt:

-Compilatorul Java -> Java Script. Acesta este responsabil cu translatarea programelor scrise in Java in programe Java Script-Modul de dezvoltare Google Web Toolkit -> Acesta permite dezvoltatorului sa ruleze si sa execute aplicatii GWT in modul de dezvoltare, adica acele aplicatii ruleaza ca si cod Java in JVM (Java Virtual Machine), fara a compila codul Java Script. Utilizarea modului de dezvoltare este permisa prin folosirea plugin-ului pentru cod nativ (Google Web Toolkit Developer Plugin) pentru cele mai populare browsere.-Libraria de emulare JRE -> se refera la implementarea in Java Script a celor mai folosite clase din libraria Java standard, cum ar fi pachetele java.lang si java.util-Libraria GWT Web UI - >reprezinta un set de interfete prestabilite dar si clase, pentru crearea widget-urilor (Button, PushButton, RadioButton,CheckBox,ToggleButton, etc).

Printre functionalitatile specifice Google Web Toolkit se numara:

-utilizare unor componente dinamice si reutilizabile ale interfetei utilizator ( User Interface ). Aceasta elimina necesitatea ca programatorii sa construiasca comportamente dinamice si pot folosi clase deja create.-ofera mecanisme RPC (Remote Procedure Call) usoare . RPC se refera la o comunicare intre procese care permite unui program sa creeze o subrutina sau o procedura care sa se execute intr-un alt spatiu de adrese (de obicei un alt calculator sau o retea distribuita) fara ca programatorul sa fie nevoit sa scrie in cod detalii pentru aceasta interactiune la distanta.Astfel GWT ofera propriile apeluri de proceduri care permit clientului GWT sa apeleze metodele din partea de server. Implementarea GWT RPC este bazata pe tehnologia servlet. Este permis ca obiectele sa fie trimise direct intre client si server, fiind serializate de framework. Folosing GWT RPC comunicarea este aproape transparenta pentru client, si intotdeauna asincrona astfel incat clientul nu se blocheaza in timpul comunicarii.-managementul istoricului din browser-suport pentru depanarea caracteristicilor Java-integrarea testelor (Unit Test)-suport pentru internationalizare si localizare. Aceasta se refera la adaptarea programelor la diferitre limbi, diferente regionale si cerinte tehnice ale unei anumite piete. Astfel internationalizarea este procesul de creare a unei aplicatii software care poate fi adaptata la diferite limbi si regiuni, dar fara schimbari de ordin ingineresc, pe cand localizarea se refera la adaptarea programului software deja internationalizat la o regiune specifica sau limba prin adaugarea unor componente specifice si traducere de text.-suport pentru HTML canvas (elementele canvas sunt parte HTML, si permit redarea dinamica a formelor 2D si a imaginilor bitmap).-permite mixarea codului Java Script scris de mana din codul sursa Java folosind interfata nativa Java Script-suport pentru folosirea de Google APIs in aplicatiile GWT (Google API este un set de API-uri dezvoltate de google care permit comunicarea cu serviciul Google si integrarea lor in alte servicii, de exemplu: Google Maps, Google Places, etc).-este open-source-permite scrierea de aplicatii orientate pe obiect, iar erorile Java Script cum ar fi Type mismatch sunt identificate in timpul compilarii.-sunt disponibile diferite librarii care pot extinde functionalitatea Google Web Toolkit.

O aplicatie Google Web Toolkit contine patru parti importante, dintre care ultima este optionala, dar celelalte trei sunt obligatorii:-Descriptorii de module (Module descriptors) ->acesta reprezinta fisierul de configurare in format XML folosit pentru a configura aplicatia GWT-Resursele publice (Public resources) - > acestea sunt fisiere referite de modulul GWT cum ar fi pagini HTML, CSS sau imagini.-Codul client-side - > este practic totalitatea codului Java care implementeaza logica de business si pe care compilatorul GWT o translateaza in cod Java Script.-Codul server-side. O caracteristica importanta a Google Web Toolkit este aceea ca permite folosirea GWT si Hibernate impreuna.Cea mai potrivita arhitectura pentru aplicatiile ce folosesc Google Web Toolkit este MVP (Model-View-Presenter), in primul rand datorita faptului ca permite decuplarea dezvoltarii astfel incat sa permita mai multor programatori sa lucreze simultan, iar in al doilea rand datorita faptului ca acest model permite minimizarea utilizarii GWTTestCase (GWTTestCase se comporta ca punte de legatura intre mediul JUnit si mediul GWT). Astfel, scopul acestui pattern este separarea functionalitatii in componente dar se focalizeaza pe realizarea unor view-uri cat mai simple.Conform acestei arhitecturi o aplicatie ce foloseste Google Web Toolkit are doar urmatoarele patru componente: Model, View, Presenter si AppControler.Model - include obiectele din aplicatie (se mapeaza pe tabelele din baza de date).View contine toate componentele User Interface care formeaza aplicatia. Este responsabila de comportamentul componentelor User Interface si nu poate vedea Modelul. Navigarea intre view-uri este legata de managementul istoricului prin nivelul de prezentare (presentation layer).Presenter - contine toata logica aplicatiei, inclusiv managementul istoricului, tranzitia view-urilor si sincronizarea datelor.AppController are rolul de a manevra logica care nu este specifica niciunui Presenter dar totusi exista in Presentation Layer.Pentru a permite componentei Presenter sa execute diferite actiuni este nevoie de o magistrala de evenimente (Event Bus). Aceasta este un mecanism pentru pasarea evenimentelor si inregistrare pentru a fi notificati despre anumite evenimente.Nu toate evenimentele trebuie sa fie plasate in Magistrala de Evenimente. Incarcarea tuturor evenimentelor din aplicatie in aceasta magistrala poate duce la impotmolirea aplicatiei in manevrarea evenimentelor. Doar evenimentele importante, cum ar fi actualizarea unei inregistrari din baza de date, navigarea de la o pagina la alta, sau stergerea unei inregistrari din baza de date trebuie puse in Event Bus si nu cele simple cum ar fi un click efectuat de utilizator.Manevrarea evenimenteleor history este o alta parte importanta a aplicatiilor web. Evenimentele history sunt stringuri jeton (token), ce reprezinta stari noi in cadrul aplicatiei.De exemplu daca utilizatorul trece de la o pagina la alta, apoi vrea sa revina la pagina initiala apasand butonul Back.In ceea ce priveste testarea modelului MVP, aceasta este destul de dificil de realizat. Cu toate acestea, GWTTestCase din cadrul Google Web Toolkit permite lansarea unui browser headless care sa ruleze fiecare test. Lansarea browserului cuplat cu executia testelor este motivul pentru care acestea dureaza mai mult decat in cazul testelor simple JRE.Desi Google Web Toolkit vine cu o multime de avantaje, exista si o serie de puncte slabe:-Nu permite indexare -> paginile web generate de GWT nu vor fi indexate de motoarele de cautare deoarece aceste aplicatii sunt generate dinamic.-Este degradabila - > daca utilizatorul aplicatiei dezactiveaza Javascript, atunci el nu va vedea decat pagina de baza-Nu este designers friendly - > Google Web Toolkit nu este potrivit pentru designerii web care prefera sa foloseasca HTML cu substituenti (placeholders) pentru a insera continut dinamic intr-un alt moment de timp.

Resurse bibliografice:[1]: http://www.gwtproject.org/index.html[2]: http://www.tutorialspoint.com/gwt/gwt_tutorial.pdf[3]: http://www.vogella.com/tutorials/GWT/article.html Specificatii proiect

Aplicatie web Agentie de turism implementata cu ajutorul pachetului de tooluri Google Web Toolkit. Aplicatia trebuie sa ofere urmaroarele functionalitati:-Permite doua tipuri de utilizatori: administrator (managerul agentiei de turism)si utilizator obisnuit (clientul)-Permite inregistrarea unui nou utilizator. Acesta va fi implicit client, si doar un administrator ii poate atribui titlul de AdministratorClientul:-Poate vedea ofertele-Poate filtra ofertele dupa pret, locatie, data-Poate rezerva o oferta-Poate vedea ofertele rezervate-Poate anula o oferta daca sunt mai putin de 10 zile pana la data plecarii-Poate crea un nou cont, sau isi poate sterge contul-Daca a mai cumparata cel putin doua oferte de turism primeste o reducere de 10%Administratorul:-efectueaza operatii CRUD pe ofertele stocate -poate atribui unui utilizator obisnuit titlul de Administrator -valideaza o rezervare

Datele vor fi stocate intr-o baza de date cu 3 tabele: Utilizator (retine informatii legate de utilizator: id, nume, prenume, username, parola, adresa email); Oferta (retine informatii legate de ofertele agentiei de turisme: id, nume oferta, destinatie, perioada (data start, data final), contact, pret, moneda, detalii oferta, contact), si Rezervari (retine rezervarile efectuate de catre clienti: id, nume client, prenume client, id oferta, data,specifica daca oferta este validata sau nu).

Arhitectura conceptuala

Data layer se mapeaza pe baza de date si efectueaza operatii de citire, scriere, update si stergere.Busines Layer are rolul de a indeplini cerintele functionale ale aplicatiei.Presentation Layer cuprinde aplicatia pentru client si interfata utilizator.