Sunteți pe pagina 1din 5

Platformdeelearningicurriculecontent

pentrunvmntulsuperiortehnic

InstrumentepentruDezvoltareaProgramelor

21.Frameworkuripentrudezvoltareadeaplicatii.Grails.

Obiective
Scopul acestui laborator este experimentarea framework-urilor de aplicatii si intelegerea
avantajelor aduse de utilizarea lor.
Subiecte atinse:

Application Frameworks

Groovy on Grails

Application Frameworks
Framework-urile ofera dezvoltatorilor un cadru general pentru construirea de aplicatii ce
respecta un anumit tipar (de exemplu, aplicatii web). Infrastructura defineste o serie de entitati
generice si asigura comunicarea de nivel scazut intre acestea (de exemplu, generarea de
evenimente intr-un context event-driven). In laboratoarele anterioare, am studiat paradigma
MVC, dar intrebuintarea a fost limitata la nivel de componente vizuale. Conceptul se poate
extinde pentru a descrie intreaga arhitectura a aplicatiei.
In acest mod, se induce conceptul de inversion of control, in sensul ca dezvoltatorul nu mai este
preocupat de realizarea unor sarcini cu caracter general (frozen spots), cum este proiectarea unui
flux de control in aplicatie, ci se concentreaza pe aspectele specifice situatiei date (hot spots),
urmand ca acestea sa fie integrate in fluxul implicit. Paradigma este adesea pusa in legatura cu
principiul Hollywood. De exemplu, intr-o aplicatie de e-commerce, accentul cade pe aspectele
de nivel inalt, ca gestionarea produselor si a comenzilor, si nu pe cele de nivel scazut, ca accesul
la baza de date. De aici se desprinde principalul avantaj.
Un alt avantaj ce rezulta imediat este reutilizabilitatea. Urmarind inlantuirea fireasca a
lucrurilor, obtinem o sporire a fiabilitatii, deoarece intrebuintarea repetata a infrastructurii
conduce la depistarea eventualelor erori si la imbunatatirea corespunzatoare.
Dezavantajul principal provine din limitarea flexibilitatii. Orice aplicatie dezvoltata utilizand
un anumit framework se va supune fluxului generic pe care acesta il defineste. Acest lucru poate
conduce la cuplaje complicate chiar in situatii simple.
Vom experimenta framework-ul MVC pentru aplicatii web, Grails.

Groovy on Grails
Grails reprezinta o platforma de dezvoltare a aplicatiilor web, in timp ce Groovy este limbajul de
la baza.

Grails
Grails este un framework open-source pentru aplicatii web, ce imbina practici utile, ce sporesc
agilitatea dezvoltarii, cu tehnologii Java, care si-au dovedit in timp consistenta. Grails ofera:

o arhitectura MVC

un mecanism puternic de asigurare a persistentei (exemplu: baze de date)

o modalitate de generare a paginilor dinamice, bazata pe tehnologia Java Server Pages


(JSP)

o abordare convention over configuration, in sensul ca dezvoltatorul are la dispozitie un


arsenal de optiuni implicite, pe care le poate particulariza la nevoie, fara a fi nevoit sa le
defineasca in totalitate de la inceput

mecanisme de unit testing

un server Tomcat integrat, ce permite rularea imediata a aplicatiei construite

un sistem propriu de gestiune a bazelor de date, Hyper Structured Query Language


Database (HSQLDB), ce poate fi inlocuit cu altele, ca MySQL

limbajul Groovy, ce va fi discutat mai jos

posibilitatea integrarii de numeroase plugin-uri.

Astfel, Grails nu se limiteaza la a propune un tipar arhitectural, ci reprezinta o platforma


propriu-zisa de dezvoltare.
Abordarea MVC este infatisata in figura urmatoare:

din care se disting urmatoarele concepte:

domain class (modelul): reprezinta o unitatea fundamentala de incapsulare a datelor. De


precizat ca Grails genereaza automat mecanismele de asigurare a persistentei datelor,
putand chiar genera tabalele bazei de date pronind de la definitia datelor! Astfel, in
functie de complexitatea prelucrarilor, este posibil sa nu fie necesara scrierea explicita a
niciunei interogari SQL.

controller: gestioneaza cererile si coordoneaza activitatile

view: foloseste tehnologia JSP pentru a genera cod HTML. Ofera o biblioteca de tag-uri
(taglib) si un sistem de templating pentru pagini.

Groovy
Groovy este un limbaj dinamic, construit ca o extensie a limbajului Java. Dinamicitatea se
refera, printre altele, la posibilitatea invocarii de metode nedefinite, dar generate automat, la
rulare, pe baza campurilor clasei. Pentru a intelege mai bine acest lucru, cercetati aceste
exemple. Posibilitatea invocarii de metode dinamice ii confera lui Groovy calitatea de Domain
Specific Language (DSL). Acest lucru se refera la posbilitatea de a intrebuinta termeni specifici
unui anumit domeniu de lucru, ce sporeste lizibilitatea codului. De exemplu, pentru entitatea
Book si campul title, putem apela metoda dinamica Book.findByTitle.

Exercitii
1. Instalare Grails
1. Urmariti pasii pentru instalare (http://www.grails.org/Installation).
2. Integrati SpringSource Tools Suite (http://www.springsource.com/products/sts) in Eclipse
for Java EE Developers (http://www.eclipse.org/downloads/), folosind acest ghid
(http://download.springsource.com/release/STS/doc/STS-installation_instructions2.3.2.RELEASE.pdf) - sectiunea UPDATE SITE INSTALLATION, pag. 6.
2. Hello, World!
Parcurgeti tutorialul (http://www.grails.org/Quick+Start) pentru a realiza prima aplicatie Grails.
Observatii:

proiectul va fi creat direct din Eclipse: File New Project Groovy Grails
Project

comenzile care, in tutorial, sunt date la consola (ca grails create-domain-class), vor fi
introduse in Eclipse, executand: Run As Grails Command

environment-ul default, development, foloseste o baza de date stocata in memorie


(observati secventa :mem: in DataSource.groovy).

modificarea unui fisier conduce la recompilarea automata a acestuia, fiind suficienta


reincarcarea paginii in browser pentru preluarea modificarilor. Uneori, poate fi necesara
repornirea server-ului Tomcat.

Rulati aplicatia. Folositi comanda grails generate-all book pentru a vedea continutul complet al
controller-ului si al view-urilor. Acestea din urma se gasesc in grails-app/views/. Dupa
vizualizarea acestora, stergeti directorul book/ din grails-app/views/ si readuceti continutul clasei
BookController la forma initiala (cu scaffold).
3. Relatii
1. Definiti o clasa, Author, avand campuri pentru nume si data nasterii:
o

modificati clasa Book, astfel incat campul author sa aibe acum tipul Author

creati un controller pentru clasa Author, in maniera utilizata la clasa Book

2. Modificati BootStrap.groovy, pentru a defini, de la inceput, cei doi autori, si a-i folosi in
crearea obiectelor Book.

3. Rulati aplicatia, si observati cum apar autorii in lista de carti. Adaugati metoda toString in
clasa Author, pentru a intoarce numele. Rulati din nou.
o

Observati prezenta unui fisier generat automat, AuthorTests.groovy, in directorul


test/unit/, ce poate fi populat cu testele aferente clasei Author.

Inlocuiti metoda testSomething cu o metoda de test pentru toString() si rulati


testele.

4. Editati carti sau autori, efectuand click pe cheia ID din dreptul acestora.
5. Incercati sa stergeti un autor. De ce nu izbutiti?
6. Adaugati
o
relatie
hasMany
si
o
relatie
belongsTo
http://www.grails.org/GORM+-+Defining+relationships). Incercati din nou.

(cercetati

4. Baza de date
Folositi un driver MySQL pentru a vedea cum se genereaza tabelele, in spatele scenei.

Driver-ul MySQL trebuie depus in directorul lib/

Modificati corespunzator fisierul DataSource.groovy (driverClassName, userName, url).


Cititi Laboratorul JDBC si Hibernate.

Resurse utile

Pagina oficiala Grails (http://www.grails.org/)

S-ar putea să vă placă și