Dezvoltarea Aplicatiilor Web

  • 2,279 views
Uploaded on

Cea de-a doua prezentare din Lec Technology Meetings - editia 1

Cea de-a doua prezentare din Lec Technology Meetings - editia 1

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,279
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • O incercare de prezentare cat mai interactiva a dezvoltarii aplicatiilor Web avand drept studiu de caz www.javaromania.com 30 de minute prezentarea + 15 minute o sesiune de intrebari si raspunsuri - cea mai buna intrebare va fi premiata cu o carte. Nivelul celor care participa: cunoscatori ai fundamentelor limbajului Java. Intrebare - cati au dezvoltat o aplicatie web folosind java de la  inceput pana la sfarsit?
  • Prezentare: Olaru Cristian   Lucrez pentru IBM dar aceasta prezentare nu are legatura cu actualul loc de munca - mai mult cu timpul meu liber. Blog: http://olaru.blogspot.com   Carti: Java de la 0 la expert si Dezvoltarea aplicatiilor Web folosind Java, coautor in editura Polirom Site: www.javaromania.com
  • Scopul de baza al aplicatiei - motor de stiri - proiectat din start cat mai generic cu putinta Functionalitati de baza: impartirea pe tipuri de articole cu posibilitatea de a vizualiza doar articolele care apartin unui anumit tip; tipurile au asociate un icon specific   cautare in articolele expuse si afisarea rezultatelor sub forma tabelare usor de vizualizat     logare in aplicatie cu 2 roluri - administrator si editor - fiecare rol aduce optiuni diferite in meniul lateral (vizitatorul este considerat utilizator anonim)   nor de taguri; utilizatorii pot introduce tag-uri aferente articolelor lor care sunt prezentate intr-un nor de taguri     articolele mai vechi pot fi regasite in arhive lunare ultimile comentarii sunt disponibile in meniul lateral     ......      
  • Criterii in alegerea unei librarii In general trebuie sa fim foarte atenti in alegerea librariilor si tehnologiilor pe care le vom folosi, deoarece o alegerea lor are o mare influenta in succesul sau esecul proiectului pe care il dezvoltam. Comunitatea de dezvoltatori - ofera un indiciu asupra starii librariei respective; se poate verifica timpul de raspuns la expunerea unei probleme - raspunsul poate fi in ordin de ore, zile, saptamani Evolutia release-urilor - reprezinta primul lucru la care trebuie sa ne uitam in alegerea unei librarii; unele librarii se releaseaza foarte rar ceea ce poate insemna doua lucruri - ori libraria nu reprezinta interes ori a ajuns intr-o stare de maturitate (deci trebuie urmarita evolutia librariei pana in momentul curent) Documentarea produsului - poate fi o cauza a cresterii curbei invatarii si poate influenta folosirea cu succes/insucces a produsului; o dovada a influentei librariei pot fi numarul de carti publicate despre respectiva librarie (articole, post-uri pe bloggere, etc) Activitatea de pe forum-uri, liste de discutii, issue trackere - ofera un indiciu clar asupra popularitatii produsului respectiv; o comunitate vibranta ofera o garantie a feed-back-ului in cazul poblemelor intampinate in folosirea librariei Licenta librariei respective - licenta te poate obliga sa publici codul dependent de libraria respectiva (GPL) sau te poate constrange sa nu o folosesti in proecte comerciale O firma sau organizatie care sa sprijine libraria respectiva - este cazul unor firme Open Source de succes cum ar fi JBoss sau Spring Source sau consortii Open Source care garanteaza intr-un fel pentru libraria respectiva
  •   Posibile noi features de adaugat   posibilitatea de a adauga articole ca anonim fara a fi nevoie de logare; un user sau rol trebuie creat pentru aceasta   aplicatia trebuie sa ofere posibilitatea de a crea meniuri laterale in mod dinamic prin adaugarea de nume de resurse si link-urile aferente adaugarea unei rubrici de configurare in care sa se poate face setari in runtime: numarul de articole vizibile, daca se vad comentarii sau nu   de separat atributele unui articol intr-o tabela separata articolul sa poata fi setat sa nu primeasca comentarii   de creat un al doilea look and feel pentru aplicatie de generalizat gestiunea de comentarii si la nivel de utilizator   de aprobat/dezaprobat crearea de utilizator, articol, comentariu direct din email-ul trimis (acesta trebuie sa contina tot continutul pentru a putea fi citit)

Transcript

  • 1. Dezvoltarea aplicatiilor Web folosind Java studiu de caz www.javaromania.com
  • 2. Prezentare Cristian Olaru   8 ani de programare in Java si tehnologii aferente Lucrez pentru IBM dar aceasta prezentare nu are legatura cu actualul loc de munca - mai mult cu timpul meu liber! Blog: http://olaru.blogspot.com   Carti: Java de la 0 la expert si Dezvoltarea aplicatiilor Web folosind Java , coautor in editura Polirom
  • 3. www.javaromania.com
  • 4. Prezentarea aplicatiei ( javaromania.com )
      • domeniul aplicatiei: motor de stiri (stiri din domeniul Java raportate la Romania)
      • entitatea de baza: articol
      • entitati auxiliare: comentariu, utilizator, tag, categorie, media, rating
      •   functionalitati de baza:
        •   adaugare/stergere articole, comentarii
        •   autentificare si autorizari pe roluri
        •   gestiune articole, comentarii, utilizatori
        •   cautare in articole
        •   sistem de votare pentru articole si nor de taguri
        •   obiecte multimedia embedabile in articole
        •   internationalizare
  • 5. Tehnologii de baza folosite
    • Biblioteci (librarii) si framework-uri Java:
    • Spring (container usor), Struts 2 (prezentare), Hibernate (persistenta), Compass (search), Sitemesh (templating), Acegi (securitate), Rome (RSS), JCaptcha (CAPTCHA), DWR (AJAX)...
    •  
    • Unelte de dezvoltare:
    • Maven 2 (build), Eclipse (IDE  + plugins: Hibernate Extensions, Spring IDE), Mysql (baze de date), Jetty (dezvoltare), Tomcat (productie), GIMP (editare imagini), Firebug (Web dev), Navicat (client baze de date)...
    •  
    •  
  • 6. Alte tehnologii folosite
    • Java TM Platform, Standard Edition 6
    • Librarii de tag-uri: Dispalytag, JSTL
    • Lucene este folosit implicit de Compass
    • SEO folosind libraria UrlRewriteFilter
    • ClickStreams pentru informatii despre utilizatorii aplicatiei
    • Log4J - pentru logging
    • XFire - Web services
    •  
    • Integrari: Google  WebMaster/AddSense/AddWords/Analytics,  MailChimp, Nabble Forums (embedded)
    •  
    • JAVA SCRIPT : JQuery
  • 7. Nabble forum (exemplu integrare)
  • 8. Librarii, framework-uri si containere
    • Librariile (biblioteci) reprezinta unitati binare reutilizabile in runtime care ofera un set de functionalitati standard avand in general un scop bine definit. (Java SDK = toolkit, log4j)
    •  
    • Prin framework intelegem ceva mai mult decat o librarie  in care aplicatia doar face apeluri. Diferenta ar fi faptul ca un framework prea controlul aplicatiei pe care o implementam conform principiului  inversarii controlului . (Struts, Spring)
    • Containererele ofera un mediu runtime pentru componente. Componentele se bucura de mediul oferit de container (life cycle) dar trebuie sa respecte contractul pe care containerul il ofera. (EJB, Spring, JSF, Serlets)
    •  
  • 9. Criterii in alegerea unei librarii
    • Cateva criterii in alegerea unei librarii:
    •  
      • Comunitatea de dezvoltatori si evolutia release-urilor - ofera un indiciu asupra starii librariei respective
      • Documentarea produsului - poate fi o cauza a cresterii curbei invatarii
      • Activitatea de pe forum-uri, liste de discutii, issue trackere
      • Licenta librariei respective - licenta te poate obliga sa publici codul dependent de libraria respectiva
      • Daca exista o firma sau organizatie care sa sprijine libraria respectiva (JBoss, Spring Source, Apache)
    •  
  • 10. Arhitectura aplicatiei
      • Impartirea pe layere – o buna mentenanta a aplicatiei in timp [Prezentare - Servicii - Persistenta]
      • Apelurile intre layere se fac intr-un singur sens dispre prezentare spre baza de date astfel:
        • Prezentare -> Servicii -> Persistenta
        • Prezentare => Struts Actions
        • Servicii => Spring Singletons
        • DAO – Data Acces Objects => Spring Singletons – incapsuleaza codul de acces spre baza de date – in acest caz HQL
      • Obiectele din domeniul aplicatiei (model) sunt folosite si ca DTO-uri si ca entitati (pentru simplificarea aplicatiei)
  • 11. Diagrama - arhitectura aplicatiei
  • 12. Conventii de nume
      • Impartirea pe layere este respectata de conventia de nume data pachetelor si claselor   
      • Distinctie clara intre clasele din domeniul aplicatiei (business) si cele tehnice (tehnologie) 
      • Exemlpu:
        •   Model: com.ip.mengine.model.Article
        •   DAO: com.ip.mengine.dao.ArticleDao
        •   Service: com.ip.mengine.service.ArticleManager
        •   Action: com.ip.mengine.webapp.action.ArticleAction
  • 13. Mod de lucru
      • experienta cu toate tehnologiile implicate
      • template gasit pe Web => prototip
      • schema de baze de date - consolidarea ei cat mai devreme
      • constituirea domeniului aplicatiei - generare entitati (Hibernate Ext.)
      • generarea maparilor Hibernate (Hibernate Ext.)
      • implementarea claselor DAO
      • implemenatrea serviciilor
      • implementarea Action-urilor de Struts
      • scrierea de JSP-uri
    •  
  • 14. Spring Framework
      • Dependency injection container (DI) – este in esenta inima aplicatiei (a nu se confunda cu Spring MVC)
      • Ridica in runtime un graf de obiecte POJO gata injectate (singletons) din configurari - serviciile, obiectele DAO
      • Ridica in runtime si celelalte framework-uri si librarii – Hibernate, Compass, etc
      • Containerul este startat odata cu pornirea aplicatiei Web – un listener in web.xml
      • Este utila folosirea de mai multe fisiere de configurare pe diverse teme: services, DOA, resurse, capcha, etc
  • 15. Struts 2
      • Framework Web bazat pe request/response
      • MVC Model 2 – Java Beans/JSP/Servlets
      • Fisier de configurare – mapari catre action-uri care trebuiesc suprascrise
      • Validari
      • Librarii de tag-uri (se poate folosi JSTL)
      • Fata de Struts 1 este orientat spre POJO/fara a mai fi nevoie de ActionForms (fuziune cu WebWork)
  • 16. Hibernate
      • DE fapt JPA (Java Persistence API) – peste Hibernate (noile Entity Beans)
      • ORM – Object Relational Mapping – in fapt se persista obiecte – SQL-urile sunt generate in spate (transparent) pentru fiecare SGBD
      • Maparii facute cu adnotari – generate cu Hibernate Extensions (@Entity, @Table, @Column, @Transient)
      • Configurare facuta cu Spring
      • In DAO se ascunde toata partea de access pre baza de date (HQL sau Criteria objects)
  • 17. Compass
      • Compass - Java Search Engine Framework
      • Foloseste Lucene is spate drept motor de search (search engine); mod de lucru: indexare, cautare in index
      • Compass  ofera indexare “on the fly” pentru  obiectele persistente – integrare cu Hibernate in acest sens
      • Obiectele indexabile sunt marcate prin configurari (am preferat fisiere de configurare XML)
      • Concurent: Hibernate Search
      • Usor de integrat in aplicatie – o chestiune de configurari
  • 18. TODO
    • Noutati:
    • Configuration - Apache Commons Configurations
    • Optimizare: Caching - OSCache; Stress test - JMeter; profiling
    • DMS: document management system cu Apache Jackrabbit
    • Inbunatatiri:
    • Logging -  o mai buna utilizare a Log4j
    • JUnit - acoperire maxima cu teste
    • XFire - crearea unui API Web consistent
    • Maven - generare info center site
    • Documentarea aplicatiei - JavaDoc + documentare functionalitati
  • 19. Planuri de viitor
    • Multimedia Engine?
    •  
    • Un prim plan este conturarea clara a un motor de stiri destinat firmelor mici si mijlocii care doresc sa expuna continut multimedia pe  internet (ziare, magazine, blog-uri)
    • www.multimediaengine.eu
    • Open Source?
    • O posibilitate ar fi deschiderea engine-ului spre open source pentru a putea accelera dezvoltarea. Un set de functionalitati si suportul vor fi disponibile contra cost intr-o versiune enterprise.
    • [email_address]