SlideShare a Scribd company logo
RAPID APPLICATION DEVELOPMENT- SPRING ROO

                   ALINA-ELENA MIHĂILĂ, GEORGE ALEXANDRU VLAD

               Universitatea “Al.I.Cuza” , Facultatea de Informatică, Iasi – Romania
                               { elena.mihaila, george.vlad }@info.uaic.ro

        Abstract. Lucrarea de faţă îşi propune să prezente importanţa RAD- urilor(Rapid Application
        Development), modul de funcţionare şi ierarhizarea acestora.
        Dorinţa de a creea aplicaţii mari, stabile şi care să permită modificarea aplicaţiei în funcţie de
        ultimele cerinţe, într-un timp foarte scurt, a dus la dezvoltarea metodologiilor software numite
        RAD-uri.
        În această lucrare vor fi prezentate conceptele de bază ale Spring ROO, precum şi o serie de
        avantaje şi dezavantaje în comparaţie cu alte RAD- uri.

        Cuvinte cheie. RAD; Convention- Over- Configuration; Spring; JSP; Maven; Java EE; Server; JSON;
        Web Services; JPA; AspectJ; AOP; MVC



1.      INTRODUCERE
     Dorinţa utilizatorilor de a avea un produs final în cel mai scurt timp şi nevoia de a avea
     posibilitatea modificării lui chiar înainte de a fi utilizat a dus la apariţia RAD- ului.
     Instrumentele de dezvoltare rapidă a aplicaţiilor au reprezentat soluţia propusă de industria
     software pentru ieşirea dintr-o criză, provocată de creşterea exponenţială a complexităţii
     aplicaţiilor moderne.

2.      SPRING ROO
     Scopul cel mai important al acestui RAD este acela de a fundamenta şi îmbunătăţi
     productivitatea dezvoltării aplicaţiilor Java fără a compromite integritatea şi flexibilitatea
     tehnologiei.

     Folosind o simplă linie de comandă, ROO poate crea şi gestiona aplicaţii bazate pe Spring
     (un framework Java), adăuga şi configura caracteristici precum JPA, Spring MVC, Web
     Flow, JMS, Email şi Spring Security. Roo poate fi folosit, de asemenea şi în testare
     folosind framework- uri precum JUnit şi Selenium.

     În concluzie ROO gestionareză toate configuraţiile folosind principii arhitecturale
     software foarte bine optimizate, reducând astfel cantitatea de cod scrisă de programator.




                                                                                                             1
RAD- ul este cunoscut pentru 4 mari caracteristici:

2.1      Higher Productivity

      Cel mai mare avantaj este acela de a avea posibilitatea dezvoltării aplicaţiilor complexe
      în câteva minute. Originalitatea creerii proiectelor face ca mentanenţa lor să fie foarte
      uşoară de-a lungul anilor, chiar dacă se renunţă la folosirea RAD- ului.

      ROO implementează şi utilizeză design patterns într-o maniera convention- over-
      configuration, lucru ce asigură coerenţă în implementarea proiectelor bazate pe ROO.

2.2      Stock- Standard Java

      Pentru un programator J2EE, utilizarea acestui RAD va fi foarte familiară deoarece
      tehnologiile folosite sunt cele standard: Spring, Maven, JSP, JPA şi AspectJ. Aceste
      tehnologii sunt implementate folosind add-ons, aşadar se pot utiliza cu uşurinţă şi alte
      tehnologii.

      ROO a adoptat o tehnică conservatoare în ceea ce priveşte adăugarea de tehnologii,
      aşadar, de exemplu, JPA va fi instalat doar în momentul în care va fi cerută persistenţa.

2.3      Usable and Learnable

      Utilizarea este caracterizată de linia de comandă prin intermediul careia ROO este foarte
      simplu de folosit cu ajutorul comenzilor “hint” şi “help” care te ghidează pas cu pas; de
      asemenea este pus la dispoziţie o caracteristică de autocomplete, dar şi câteva exemple de
      scripturi.

      Învătarea este pusă în evidenţă, în primul rând prin utilizarea de tehnologii cunoscute, iar
      în al doilea rând uşurinţa cu care poate fi folosit; cu cât rulează automat în background,
      cu atât va trebui să înveţi mai puţine lucruri despre el.

2.4      Easy ROO Removal

      În general, una dintre cele mai mari probleme care apar atunci când sunt folosite astfel de
      tool- uri este atunci când din diferite motive (s-au schimbat cerinţele proiectului, RAD-ul
      are prea multe bug- uri, etc.) vreţi să renunţaţi la el. Acest lucru a fost luat în vedere de
      ROO, acesta fiind foarte simplu de eliminate din aplicaţie, printr-o simplă comanda
      “push in refactor” în Eclipse urmată de o simpla comanda “find and replace”.




                                                                                                      2
3.      SERVICII WEB

3.1 TwitterAPI
     Twitter API este bazat în întregime pe protocolul HTTP. Metodele de preluare a datelor
     din Twitter API necesită o cerere de tip GET, iar metodele care fac introducere, modificare
     sau distrugere de date necesită cereri de tip POST. Sunt permise de asemenea cereri de tip
     DELETE, atunci când dorim să distrugem anumite informații.
     Twitter API permite modificarea formatului extensiei cererii pentru a obţine rezultatele
     într-un alt format dorit de acesta. Din formatele suportate în prezent de acest API (XML,
     JSON şi RSS sau Atom) aplicația construită de noi a folosit formatul XML.
     Din funcțiile existente în acest API am folosit în primul rând funcțiile de căutare care ne
     permit să extragem informațiile dorite din postările utilizatorilor.

3.2 Google Ajax Search API
     Google Ajax Search API propune o interfaţă REST la îndemâna utilizatorilor care vor să
     acceseze acest serviciu dintr-un alt limbaj decât JavaScript. Modul de comunicare este
     bazat pe mesaje HTTP, formatul în care răspunsul este dat fiind JSON. Aplicaţiile care
     utilizează această interfaţă trebuie să respecte toţi termenii de utilizare existenţi.
     Aplicaţiile care utilizează acest API trebuie să includă întotdeauna un HTTP Referer
     Header valid. Prin utilizarea unei chei, aplicaţia oferă un mecanism de identificare
     secundar care este util pentru a lua legătura cu utilizatorul în scopul de a corecta orice
     problemă.

3.3 Flickr API
     Deşi existau foarte multe site-uri pe care utilizatorii puteau pune poze, atunci când Flickr
     s-a lansat, acesta a atras atenţia prin flexibilitatea API-ului pus la dispoziţie
     dezvoltatorilor. Aceştia l-au putut integra cu uşurinţă în aplicaţia lor pentru a avea acces la
     pozele de pe Flickr, iar limitările API-ului au fost mai puţine faţă de API-urile altor site-uri
     de acelaşi profil.
     Cel mai bun lucrul al API-ului de la Flickr este faptul că oferă librării aproape pentru toate
     limbajele de programare (în cazul unora chiar mai multe librării). Avantajul este faptul că
     dezvoltatorul nu trebuie decât să caute o librărie pentru limbajul preferat de acesta.
     În cele ce urmează va fi prezent un exemplu de utilizare a Flickr API în Java.

     Din adresa la care se face conexiunea: http://api.flickr.com/services/rest/?method
     =flickr.photos.search&api_key=e3471e67d4ac10c64055420d9b211b4f&per_page=1&
     text=Bangalore sunt de observat următoarele lucruri:
      modul de comunicare cu API-ul de la Flickr şi anume REST
      metoda API-ului care este chemată flickr.photos.search.



                                                                                                        3
 api_key=e3471e67d4ac10c64055420d9b211b4f -> cheia necesară pentru conexiunea
     la API-ul de la Flickr. Pentru a obţine o cheie proprie dezvoltatorul trebuie să îşi creeze
     cont pe Flickr şi să îşi genereze o cheie
      per_page=1 -> Aici este specificat numărul de poze care va fi generat ca rezultat
      text=Bangalore -> Interogarea propriu-zisă


4.       STUDIU DE CAZ

     În acest capitol am realizat un studiu de caz, pentru a exemplifica modul de funcționare al
     RAD-ului Spring ROO. Aplicaţia creată este una de tip mash-up, aceasta culegând
     informaţii de la 3 webservice-uri: Twitter API, Flickr API şi Google search API.
     Rezultatul în urma apelarii web-service-urilor va fi expus, ȋn cele din urmă, ȋntr-un web-
     service propriu ȋn format JSON, creat cu ajutorul RAD-ului. Ȋn acelaşi timp aplicaţia
     salvează fiecare apel către WebService-urile menţionate anterior, conţinând, de asemenea,
     şi un modul care ajută la testarea WebService-ului creat.

     Pentru o utilizare mai uşoară a ROO-ului a fost utilizat un IDE numit SpringSource Tool
     Suite. Atunci când IDE-ul este instalat acesta işi configurează de asemenea un Maven şi
     un server local, Apache Tomcat, deja configurat, pregatit pentru a fi folosit de aplicaţiile
     nou-create.

     În cele ce urmează vor fi prezentaţi paşii necesari pentru crearea unei aplicatii web
     folosind Spring Roo:

            Pentru a crea un proiect nou, se alege tipul: Spring Roo Project, după cum se
             poate observa în Fig. 1




             Fig.1. Crearea unui nou proiect Spring ROO şi perspectiva Roo Shell


                                                                                                    4
   Urmatorul pas după crearea proiectului este accesarea pespectivei “Roo Shell”
        marcată cu chenar albastru, în Fig.1, pentru a avea acces la linia de comanda a
        RAD- ului. Pentru a primi unele sugestii cu privire la următorii paşi ce trebuie
        făcuţi se tastează comanda “hint” sau “help”.

       Legatura cu JPA (Hibernate) se realizează cu ajutorul comenzii: “persistance
        setup” urmată de parametrii necesari conectării (e.g. persistence setup --database
        ORACLE --provider HIBERNATE --hostname localhost --databaseName XE --userName alina --
        password alina); această comandă crează toate fişierele de configurare necesare
        pentru conectarea la baza de date;

       Entităţile din baza de date se crează prin intermediul comenzii “entity - - class
        classname” (e.g. entity --class ~.domain.Mashup ). Clasa definită anterior poate fi
        folosită şi pentru schimbul de date ȋn format JSON prin comanda “json
        classname”.

       Field- urile se pot adauga cu ajutorul comenzii “field” urmata de constrangerile
        necesare (e.g. field string --fieldName name --notNull --unique true).

       Pentru a reliza unor controller JSON şi pentru accesul la entităţile din baza de date
        se utilizeză comanda “controller”, prin intermediul căreia vor fi create fişierele
        AspectJ ce vor crea “handlere” pentru diferite acţiuni ce pot fi apelate la urma lor,
        dar şi pagini pentru editarea entităţii create anterior.

       Comanda “perform eclipse” va elimina toate referintele ROO din cadrul
        proiectului şi îl va converti la un proiect Eclipse. De aici utilizatorul poate
        continua dezvoltarea ȋn modul dorit.

Dupa crearea structurii aplicatiei,prezentată în Fig.2, au fost încapsulate webservice-urile
de la Flickr, Twitter şi Google. Pe baza unui cuvânt introdus aceste servicii sunt chemate,
iar raspunsul, în format JSON, este expus printr-un serviciu web creat de ROO.




                                                                                                 5
Fig.2. Structura generală a aplicației, create de Spring ROO



5.       Alternative la Spring ROO

      In cele ce urmează vor fi prezentate pe scurt doua dintre alternativele la Spring ROO,
      acestea in principiu aceleasi concepte de baza, dar unul din principalele motive pentru
      care a fost ales Spring ROO fiind faptul ca sunt necesare doar cunostiinte ale limbajului
      Java pentru ca proiectul sa poata fi extins.

5.1      Ruby on Rails

      La fel ca multe alte platforme de dezvoltare web, Rails foloseşte arhitectura Model-View-
      Controller (MVC) în organizarea programarii aplicației.

      Ruby on Rails include unelte care simlifică procedurile de dezvoltare, cum ar fi "scheletarea"
      care poate construi automat undele din modelele și vizualizările necesare pentru a construi o
      pagină web simplă. Ele includ, de asemenea, WEBrick, un server web și Rake, un sistem
      pentru construire și desfășurare. Împreună, aceste unelte creeaza un mediu simplu de
      dezvoltare.

                                                                                                   6
RAD-ul se bazează pe un server web pentru a rula. Mongrel a fost soluția preferată față de
      WEBrick în momentul în care sistemul a fost creat, însă poare fi rulat și de către Lighthttpd,
      Abyss, Apache (fie ca modula - Passenger de exemplu - sau prin metoda CGI, FastCGI sau
      mod_ruby), și multe altele. Începând cu 2008, serverul web Passenger a înlocuit Mongrel ca
      și cel mai folosit server web. În perioada recentă, serverul web Unicorn a devenit favorit în
      desfășurările noi. Rails este de asemenea cunoscut pentru folosirea extesivă a librăriilor de
      JavaScript Protoype și Script.aculo.us pentru AJAX.
      Rails de asemenea a folosit inițial "lightweight SOAP" pentru serviciile web, acesta fiind
      înlocuit ulterior de serviciile web RESTful.

5.2      Grails

      Grails reprezinta o platforma de dezvoltare a aplicaţiilor web, ȋn timp ce Groovy este
      limbajul de la baza.

      Grails este un framework open-source pentru aplicaţii web, ce ȋmbină practici utile, care
      permit sporesc agilitatea dezvoltării, cu tehnologii Java, care au dovedit ȋn timp
      consistenţă.

      Grails oferă:

       o arhitectura MVC

       un mecanism puternic de asigurare a persistenţei (exemplu: baze de date)

       o modalitate de generare a paginilor dinamice, bazată pe tehnologia Java Server Pages
        (JSP)

       o abordare convention- over- configuration, ȋn sensul că dezvoltatorul are la dispoziţie
        un arsenal de opţiuni implicite, pe care le poate particulariza la nevoie, fără a fi nevoit
        să le definească ȋn totalitate de la inceput

       mecanisme de unit testing

       un server Tomcat integrat, ce permite rularea imediată a aplicaţiei construite

       un sistem propriu de gestiune a bazelor de date, Hyper Structured Query Language
        Database (HSQLDB), ce poate fi ȋnlocuit cu altele, precum MySQL

       limbajul Groovy

       posibilitatea integrării de numeroase plugin-uri.



      Astfel, Grails nu se limitează la a propune un tipar arhitectural, ci reprezintă o platformă
      propriu-zisa de dezvoltare.

                                                                                                       7
Concluzii
   Această lucrare prezintă soluţii pentru crearea ȋntr-un timp cât mai scurt a unei aplicaţii
   web.

   RAD-ul Spring Roo a fost construit peste o serie de tehnologii cheie: Spring, AOP,
   Maven. Este recomandat pentru crearea unor aplicaţii care se bazează pe entităţi
   persistente şi aplicaţii web care să se folosească de aceste entităţi.




                                                                                                 8
Bibliografie
1. J2EE, java.sun.com/j2ee
2. Twitter API, http://apiwiki.twitter.com/
3. Flickr API, http://www.webmonkey.com/2010/02/get_started_with_the_flickr_api/
4. Google Ajax Search API , http://code.google.com/apis/ajaxsearch/documentation/
5. Spring ROO, http://www.infoq.com/presentations/Introducing-Spring-Roo
6. Spring ROO, Spring ROO in Action
7. Spring ROO, http://static.springsource.org/spring-roo/reference/html/index.html
8. Grails, http://grails.org/Documentation
9. Ruby on Rails, http://rubyonrails.org/documentation




                                                                                     9

More Related Content

Similar to Webappdev

[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2Diana Tataran
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite
Dumitru Maros
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEBPascu Catalin
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare WebAdela Bran
 
48892700 invatam-php
48892700 invatam-php48892700 invatam-php
48892700 invatam-phpdissdiss2005
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam frameworkbeatrisrusu
 
Aplicatii facebook adrian balcan -www.gamesball.info
Aplicatii facebook   adrian balcan -www.gamesball.infoAplicatii facebook   adrian balcan -www.gamesball.info
Aplicatii facebook adrian balcan -www.gamesball.info
cristiytzu
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
Costea112
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam frameworkbeatrisrusu
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLVlad Petre
 
Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 

Similar to Webappdev (20)

Axiologic quark
Axiologic quarkAxiologic quark
Axiologic quark
 
[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2
 
Microsoft zitec
Microsoft  zitecMicrosoft  zitec
Microsoft zitec
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEB
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare Web
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
48892700 invatam-php
48892700 invatam-php48892700 invatam-php
48892700 invatam-php
 
Web todo
Web todo Web todo
Web todo
 
Hotel booking Programare Web
Hotel booking Programare WebHotel booking Programare Web
Hotel booking Programare Web
 
Curs java
Curs javaCurs java
Curs java
 
Catalog online
Catalog onlineCatalog online
Catalog online
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam framework
 
Aplicatii facebook adrian balcan -www.gamesball.info
Aplicatii facebook   adrian balcan -www.gamesball.infoAplicatii facebook   adrian balcan -www.gamesball.info
Aplicatii facebook adrian balcan -www.gamesball.info
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam framework
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 

Webappdev

  • 1. RAPID APPLICATION DEVELOPMENT- SPRING ROO ALINA-ELENA MIHĂILĂ, GEORGE ALEXANDRU VLAD Universitatea “Al.I.Cuza” , Facultatea de Informatică, Iasi – Romania { elena.mihaila, george.vlad }@info.uaic.ro Abstract. Lucrarea de faţă îşi propune să prezente importanţa RAD- urilor(Rapid Application Development), modul de funcţionare şi ierarhizarea acestora. Dorinţa de a creea aplicaţii mari, stabile şi care să permită modificarea aplicaţiei în funcţie de ultimele cerinţe, într-un timp foarte scurt, a dus la dezvoltarea metodologiilor software numite RAD-uri. În această lucrare vor fi prezentate conceptele de bază ale Spring ROO, precum şi o serie de avantaje şi dezavantaje în comparaţie cu alte RAD- uri. Cuvinte cheie. RAD; Convention- Over- Configuration; Spring; JSP; Maven; Java EE; Server; JSON; Web Services; JPA; AspectJ; AOP; MVC 1. INTRODUCERE Dorinţa utilizatorilor de a avea un produs final în cel mai scurt timp şi nevoia de a avea posibilitatea modificării lui chiar înainte de a fi utilizat a dus la apariţia RAD- ului. Instrumentele de dezvoltare rapidă a aplicaţiilor au reprezentat soluţia propusă de industria software pentru ieşirea dintr-o criză, provocată de creşterea exponenţială a complexităţii aplicaţiilor moderne. 2. SPRING ROO Scopul cel mai important al acestui RAD este acela de a fundamenta şi îmbunătăţi productivitatea dezvoltării aplicaţiilor Java fără a compromite integritatea şi flexibilitatea tehnologiei. Folosind o simplă linie de comandă, ROO poate crea şi gestiona aplicaţii bazate pe Spring (un framework Java), adăuga şi configura caracteristici precum JPA, Spring MVC, Web Flow, JMS, Email şi Spring Security. Roo poate fi folosit, de asemenea şi în testare folosind framework- uri precum JUnit şi Selenium. În concluzie ROO gestionareză toate configuraţiile folosind principii arhitecturale software foarte bine optimizate, reducând astfel cantitatea de cod scrisă de programator. 1
  • 2. RAD- ul este cunoscut pentru 4 mari caracteristici: 2.1 Higher Productivity Cel mai mare avantaj este acela de a avea posibilitatea dezvoltării aplicaţiilor complexe în câteva minute. Originalitatea creerii proiectelor face ca mentanenţa lor să fie foarte uşoară de-a lungul anilor, chiar dacă se renunţă la folosirea RAD- ului. ROO implementează şi utilizeză design patterns într-o maniera convention- over- configuration, lucru ce asigură coerenţă în implementarea proiectelor bazate pe ROO. 2.2 Stock- Standard Java Pentru un programator J2EE, utilizarea acestui RAD va fi foarte familiară deoarece tehnologiile folosite sunt cele standard: Spring, Maven, JSP, JPA şi AspectJ. Aceste tehnologii sunt implementate folosind add-ons, aşadar se pot utiliza cu uşurinţă şi alte tehnologii. ROO a adoptat o tehnică conservatoare în ceea ce priveşte adăugarea de tehnologii, aşadar, de exemplu, JPA va fi instalat doar în momentul în care va fi cerută persistenţa. 2.3 Usable and Learnable Utilizarea este caracterizată de linia de comandă prin intermediul careia ROO este foarte simplu de folosit cu ajutorul comenzilor “hint” şi “help” care te ghidează pas cu pas; de asemenea este pus la dispoziţie o caracteristică de autocomplete, dar şi câteva exemple de scripturi. Învătarea este pusă în evidenţă, în primul rând prin utilizarea de tehnologii cunoscute, iar în al doilea rând uşurinţa cu care poate fi folosit; cu cât rulează automat în background, cu atât va trebui să înveţi mai puţine lucruri despre el. 2.4 Easy ROO Removal În general, una dintre cele mai mari probleme care apar atunci când sunt folosite astfel de tool- uri este atunci când din diferite motive (s-au schimbat cerinţele proiectului, RAD-ul are prea multe bug- uri, etc.) vreţi să renunţaţi la el. Acest lucru a fost luat în vedere de ROO, acesta fiind foarte simplu de eliminate din aplicaţie, printr-o simplă comanda “push in refactor” în Eclipse urmată de o simpla comanda “find and replace”. 2
  • 3. 3. SERVICII WEB 3.1 TwitterAPI Twitter API este bazat în întregime pe protocolul HTTP. Metodele de preluare a datelor din Twitter API necesită o cerere de tip GET, iar metodele care fac introducere, modificare sau distrugere de date necesită cereri de tip POST. Sunt permise de asemenea cereri de tip DELETE, atunci când dorim să distrugem anumite informații. Twitter API permite modificarea formatului extensiei cererii pentru a obţine rezultatele într-un alt format dorit de acesta. Din formatele suportate în prezent de acest API (XML, JSON şi RSS sau Atom) aplicația construită de noi a folosit formatul XML. Din funcțiile existente în acest API am folosit în primul rând funcțiile de căutare care ne permit să extragem informațiile dorite din postările utilizatorilor. 3.2 Google Ajax Search API Google Ajax Search API propune o interfaţă REST la îndemâna utilizatorilor care vor să acceseze acest serviciu dintr-un alt limbaj decât JavaScript. Modul de comunicare este bazat pe mesaje HTTP, formatul în care răspunsul este dat fiind JSON. Aplicaţiile care utilizează această interfaţă trebuie să respecte toţi termenii de utilizare existenţi. Aplicaţiile care utilizează acest API trebuie să includă întotdeauna un HTTP Referer Header valid. Prin utilizarea unei chei, aplicaţia oferă un mecanism de identificare secundar care este util pentru a lua legătura cu utilizatorul în scopul de a corecta orice problemă. 3.3 Flickr API Deşi existau foarte multe site-uri pe care utilizatorii puteau pune poze, atunci când Flickr s-a lansat, acesta a atras atenţia prin flexibilitatea API-ului pus la dispoziţie dezvoltatorilor. Aceştia l-au putut integra cu uşurinţă în aplicaţia lor pentru a avea acces la pozele de pe Flickr, iar limitările API-ului au fost mai puţine faţă de API-urile altor site-uri de acelaşi profil. Cel mai bun lucrul al API-ului de la Flickr este faptul că oferă librării aproape pentru toate limbajele de programare (în cazul unora chiar mai multe librării). Avantajul este faptul că dezvoltatorul nu trebuie decât să caute o librărie pentru limbajul preferat de acesta. În cele ce urmează va fi prezent un exemplu de utilizare a Flickr API în Java. Din adresa la care se face conexiunea: http://api.flickr.com/services/rest/?method =flickr.photos.search&api_key=e3471e67d4ac10c64055420d9b211b4f&per_page=1& text=Bangalore sunt de observat următoarele lucruri:  modul de comunicare cu API-ul de la Flickr şi anume REST  metoda API-ului care este chemată flickr.photos.search. 3
  • 4.  api_key=e3471e67d4ac10c64055420d9b211b4f -> cheia necesară pentru conexiunea la API-ul de la Flickr. Pentru a obţine o cheie proprie dezvoltatorul trebuie să îşi creeze cont pe Flickr şi să îşi genereze o cheie  per_page=1 -> Aici este specificat numărul de poze care va fi generat ca rezultat  text=Bangalore -> Interogarea propriu-zisă 4. STUDIU DE CAZ În acest capitol am realizat un studiu de caz, pentru a exemplifica modul de funcționare al RAD-ului Spring ROO. Aplicaţia creată este una de tip mash-up, aceasta culegând informaţii de la 3 webservice-uri: Twitter API, Flickr API şi Google search API. Rezultatul în urma apelarii web-service-urilor va fi expus, ȋn cele din urmă, ȋntr-un web- service propriu ȋn format JSON, creat cu ajutorul RAD-ului. Ȋn acelaşi timp aplicaţia salvează fiecare apel către WebService-urile menţionate anterior, conţinând, de asemenea, şi un modul care ajută la testarea WebService-ului creat. Pentru o utilizare mai uşoară a ROO-ului a fost utilizat un IDE numit SpringSource Tool Suite. Atunci când IDE-ul este instalat acesta işi configurează de asemenea un Maven şi un server local, Apache Tomcat, deja configurat, pregatit pentru a fi folosit de aplicaţiile nou-create. În cele ce urmează vor fi prezentaţi paşii necesari pentru crearea unei aplicatii web folosind Spring Roo:  Pentru a crea un proiect nou, se alege tipul: Spring Roo Project, după cum se poate observa în Fig. 1 Fig.1. Crearea unui nou proiect Spring ROO şi perspectiva Roo Shell 4
  • 5. Urmatorul pas după crearea proiectului este accesarea pespectivei “Roo Shell” marcată cu chenar albastru, în Fig.1, pentru a avea acces la linia de comanda a RAD- ului. Pentru a primi unele sugestii cu privire la următorii paşi ce trebuie făcuţi se tastează comanda “hint” sau “help”.  Legatura cu JPA (Hibernate) se realizează cu ajutorul comenzii: “persistance setup” urmată de parametrii necesari conectării (e.g. persistence setup --database ORACLE --provider HIBERNATE --hostname localhost --databaseName XE --userName alina -- password alina); această comandă crează toate fişierele de configurare necesare pentru conectarea la baza de date;  Entităţile din baza de date se crează prin intermediul comenzii “entity - - class classname” (e.g. entity --class ~.domain.Mashup ). Clasa definită anterior poate fi folosită şi pentru schimbul de date ȋn format JSON prin comanda “json classname”.  Field- urile se pot adauga cu ajutorul comenzii “field” urmata de constrangerile necesare (e.g. field string --fieldName name --notNull --unique true).  Pentru a reliza unor controller JSON şi pentru accesul la entităţile din baza de date se utilizeză comanda “controller”, prin intermediul căreia vor fi create fişierele AspectJ ce vor crea “handlere” pentru diferite acţiuni ce pot fi apelate la urma lor, dar şi pagini pentru editarea entităţii create anterior.  Comanda “perform eclipse” va elimina toate referintele ROO din cadrul proiectului şi îl va converti la un proiect Eclipse. De aici utilizatorul poate continua dezvoltarea ȋn modul dorit. Dupa crearea structurii aplicatiei,prezentată în Fig.2, au fost încapsulate webservice-urile de la Flickr, Twitter şi Google. Pe baza unui cuvânt introdus aceste servicii sunt chemate, iar raspunsul, în format JSON, este expus printr-un serviciu web creat de ROO. 5
  • 6. Fig.2. Structura generală a aplicației, create de Spring ROO 5. Alternative la Spring ROO In cele ce urmează vor fi prezentate pe scurt doua dintre alternativele la Spring ROO, acestea in principiu aceleasi concepte de baza, dar unul din principalele motive pentru care a fost ales Spring ROO fiind faptul ca sunt necesare doar cunostiinte ale limbajului Java pentru ca proiectul sa poata fi extins. 5.1 Ruby on Rails La fel ca multe alte platforme de dezvoltare web, Rails foloseşte arhitectura Model-View- Controller (MVC) în organizarea programarii aplicației. Ruby on Rails include unelte care simlifică procedurile de dezvoltare, cum ar fi "scheletarea" care poate construi automat undele din modelele și vizualizările necesare pentru a construi o pagină web simplă. Ele includ, de asemenea, WEBrick, un server web și Rake, un sistem pentru construire și desfășurare. Împreună, aceste unelte creeaza un mediu simplu de dezvoltare. 6
  • 7. RAD-ul se bazează pe un server web pentru a rula. Mongrel a fost soluția preferată față de WEBrick în momentul în care sistemul a fost creat, însă poare fi rulat și de către Lighthttpd, Abyss, Apache (fie ca modula - Passenger de exemplu - sau prin metoda CGI, FastCGI sau mod_ruby), și multe altele. Începând cu 2008, serverul web Passenger a înlocuit Mongrel ca și cel mai folosit server web. În perioada recentă, serverul web Unicorn a devenit favorit în desfășurările noi. Rails este de asemenea cunoscut pentru folosirea extesivă a librăriilor de JavaScript Protoype și Script.aculo.us pentru AJAX. Rails de asemenea a folosit inițial "lightweight SOAP" pentru serviciile web, acesta fiind înlocuit ulterior de serviciile web RESTful. 5.2 Grails Grails reprezinta o platforma de dezvoltare a aplicaţiilor web, ȋn timp ce Groovy este limbajul de la baza. Grails este un framework open-source pentru aplicaţii web, ce ȋmbină practici utile, care permit sporesc agilitatea dezvoltării, cu tehnologii Java, care au dovedit ȋn timp consistenţă. Grails oferă:  o arhitectura MVC  un mecanism puternic de asigurare a persistenţei (exemplu: baze de date)  o modalitate de generare a paginilor dinamice, bazată pe tehnologia Java Server Pages (JSP)  o abordare convention- over- configuration, ȋn sensul că dezvoltatorul are la dispoziţie un arsenal de opţiuni implicite, pe care le poate particulariza la nevoie, fără a fi nevoit să le definească ȋn totalitate de la inceput  mecanisme de unit testing  un server Tomcat integrat, ce permite rularea imediată a aplicaţiei construite  un sistem propriu de gestiune a bazelor de date, Hyper Structured Query Language Database (HSQLDB), ce poate fi ȋnlocuit cu altele, precum MySQL  limbajul Groovy  posibilitatea integrării de numeroase plugin-uri. Astfel, Grails nu se limitează la a propune un tipar arhitectural, ci reprezintă o platformă propriu-zisa de dezvoltare. 7
  • 8. Concluzii Această lucrare prezintă soluţii pentru crearea ȋntr-un timp cât mai scurt a unei aplicaţii web. RAD-ul Spring Roo a fost construit peste o serie de tehnologii cheie: Spring, AOP, Maven. Este recomandat pentru crearea unor aplicaţii care se bazează pe entităţi persistente şi aplicaţii web care să se folosească de aceste entităţi. 8
  • 9. Bibliografie 1. J2EE, java.sun.com/j2ee 2. Twitter API, http://apiwiki.twitter.com/ 3. Flickr API, http://www.webmonkey.com/2010/02/get_started_with_the_flickr_api/ 4. Google Ajax Search API , http://code.google.com/apis/ajaxsearch/documentation/ 5. Spring ROO, http://www.infoq.com/presentations/Introducing-Spring-Roo 6. Spring ROO, Spring ROO in Action 7. Spring ROO, http://static.springsource.org/spring-roo/reference/html/index.html 8. Grails, http://grails.org/Documentation 9. Ruby on Rails, http://rubyonrails.org/documentation 9