ݺߣ

ݺߣShare a Scribd company logo
Dezvoltarea aplicatiilor Web folosind Java studiu de caz www.javaromania.com
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
www.javaromania.com
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
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)...
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
Nabble forum (exemplu integrare)
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)
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)
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)
Diagrama - arhitectura aplicatiei
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
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
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
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)
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)
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
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
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]

More Related Content

Viewers also liked (20)

TXT
Inghesuiala hm-sannicoleanca
Ionut Catalin Badea
PDF
Revista Culturism & Fitness nr.217 (2/2012)
Redis Nutritie
TXT
Pleosc ar-odontoblast
Ionut Catalin Badea
PDF
Revista Culturism & Fitness nr.218 (3/2012)
Redis Nutritie
TXT
Rugat it-loaialist
Ionut Catalin Badea
TXT
Inroti ne-autonomizat
Ionut Catalin Badea
TXT
Amprenta eu-doritor
Ionut Catalin Badea
TXT
Nafta oh-invederat
Ionut Catalin Badea
TXT
Cabinier ce-briefing
Ionut Catalin Badea
TXT
Oftalmografie sa-analogie
Ionut Catalin Badea
TXT
Imersat ia-calabrian
Ionut Catalin Badea
TXT
Antrepozit io-putrefia
Ionut Catalin Badea
PDF
Revista Culturism si Fitness nr. 211 (2/2011)
Redis Nutritie
TXT
Sanghinolent ec-certitorie
Ionut Catalin Badea
PDF
Revista Culturism & Fitness 219 (4/2012)
Redis Nutritie
PDF
Revista Culturism & Fitness nr. 210 (1/2011)
Redis Nutritie
PDF
Revista Culturism & Fitness nr. 213
Redis Nutritie
PDF
Revista Culturism & Fitness nr. 214
Redis Nutritie
PDF
Culturism & Fitness nr. 215 (6/2011)
Redis Nutritie
Inghesuiala hm-sannicoleanca
Ionut Catalin Badea
Revista Culturism & Fitness nr.217 (2/2012)
Redis Nutritie
Pleosc ar-odontoblast
Ionut Catalin Badea
Revista Culturism & Fitness nr.218 (3/2012)
Redis Nutritie
Rugat it-loaialist
Ionut Catalin Badea
Inroti ne-autonomizat
Ionut Catalin Badea
Amprenta eu-doritor
Ionut Catalin Badea
Nafta oh-invederat
Ionut Catalin Badea
Cabinier ce-briefing
Ionut Catalin Badea
Oftalmografie sa-analogie
Ionut Catalin Badea
Imersat ia-calabrian
Ionut Catalin Badea
Antrepozit io-putrefia
Ionut Catalin Badea
Revista Culturism si Fitness nr. 211 (2/2011)
Redis Nutritie
Sanghinolent ec-certitorie
Ionut Catalin Badea
Revista Culturism & Fitness 219 (4/2012)
Redis Nutritie
Revista Culturism & Fitness nr. 210 (1/2011)
Redis Nutritie
Revista Culturism & Fitness nr. 213
Redis Nutritie
Revista Culturism & Fitness nr. 214
Redis Nutritie
Culturism & Fitness nr. 215 (6/2011)
Redis Nutritie

Similar to Dezvoltarea Aplicatiilor Web (20)

PDF
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
PDF
Cu codul în "nori"
Sabin Buraga
PPTX
J boss seam framework
beatrisrusu
DOC
Fii linked data
mikaela200987
DOC
Fii linked data
teodora001
DOC
Fii linked data
teodora001
DOCX
Fii linked data
mikaela200987
DOCX
Fii linked data
mikaela200987
PPT
Irina Cureraru
Cureraru Irina-Alexandra
PDF
Cautaera multilingva
bringiton
PPT
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Vlad Petre
PPTX
Democamp Bucharest 2010 P2 Ro
Antonel Pazargic
PDF
Procesarea RDF pentru platforma Java
RalucaGheorghita
PPTX
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Codecamp Romania
PPT
Code Igniter – Framework Web Rad Pentru Php
ioanaciprian
ODP
J boss seam framework
beatrisrusu
DOCX
Music Finder
Simona Cotin
PDF
Stroia_Laurentiu
Laurentiu Stroia
PPTX
Biblioteci JavaScript pentru Ajax.pptx
Costea112
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
Cu codul în "nori"
Sabin Buraga
J boss seam framework
beatrisrusu
Fii linked data
mikaela200987
Fii linked data
teodora001
Fii linked data
teodora001
Fii linked data
mikaela200987
Fii linked data
mikaela200987
Cautaera multilingva
bringiton
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Vlad Petre
Democamp Bucharest 2010 P2 Ro
Antonel Pazargic
Procesarea RDF pentru platforma Java
RalucaGheorghita
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Codecamp Romania
Code Igniter – Framework Web Rad Pentru Php
ioanaciprian
J boss seam framework
beatrisrusu
Music Finder
Simona Cotin
Stroia_Laurentiu
Laurentiu Stroia
Biblioteci JavaScript pentru Ajax.pptx
Costea112
Ad

Recently uploaded (7)

PPTX
prezentare-competență vvvvvvvvhhbbbbbbbb
CristinaBalbasenco1
PPTX
RAPORTARE ”JOC, JOACĂ ȘI MIȘCARE - ROMANASII (PROF. Apetrei Estera- G.P.P. 16...
ApetreiEstera
PPTX
Cucer Irina -INTELIGENTA ARTIFICIALA.pptx
cuceririna10
PPTX
RAPORTARE ”JOC, JOACĂ ȘI MIȘCARE - STRUMFII (PROF. MURGU DIANA- G.P.P. 16).pptx
Diana73244
PDF
Cihicin D, Culorile si muzica plaiului.pdf
danieladany27
PPTX
ionbarbuprezentareokbacalaureatreal.pptx
CristinaAncaChiigoi
PDF
proect Culorile si musica plaiului Gabriela.pdf
Oleg Tarasenco
prezentare-competență vvvvvvvvhhbbbbbbbb
CristinaBalbasenco1
RAPORTARE ”JOC, JOACĂ ȘI MIȘCARE - ROMANASII (PROF. Apetrei Estera- G.P.P. 16...
ApetreiEstera
Cucer Irina -INTELIGENTA ARTIFICIALA.pptx
cuceririna10
RAPORTARE ”JOC, JOACĂ ȘI MIȘCARE - STRUMFII (PROF. MURGU DIANA- G.P.P. 16).pptx
Diana73244
Cihicin D, Culorile si muzica plaiului.pdf
danieladany27
ionbarbuprezentareokbacalaureatreal.pptx
CristinaAncaChiigoi
proect Culorile si musica plaiului Gabriela.pdf
Oleg Tarasenco
Ad

Dezvoltarea Aplicatiilor Web

  • 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
  • 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
  • 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)
  • 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]

Editor's Notes

  • #2: 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?
  • #3: 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
  • #5: 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 ......
  • #10: 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
  • #20: 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)