marți, 2 decembrie 2008

Aplicatii web in Java (1)

Site-uri web in java .. complicat? Cumplit? Provocare?

Simti ca te pierzi in multitudinea de fisiere de configurare XML si in sutele de acronime de tipul JSP, JSTL, RMI, JAX-RPC? :) Nu-i nici o problema, ai nimerit unde trebuia. In 2 timpi si trei miscari iti explicam conceptele de baza pentru a putea intelege mai usor ce ai de facut.

Ingrediente:
* o bucata JBoss, ne-maruntita
* trei bucati framework-uri, asortate: Spring, Struts si Hibernate
* niscaiva cunostiinte despre XML si Java, dupa gust si posibilitati

In continuare, vom descrie fiecare din ingrediente:

JBoss: "application server", asculta conexiuni TCP/IP (by default pe portul 80), si in functie de calea request-urilor, mapeaza aceste request-uri catre "aplicatii" Java, care vor prelucra mai departe request-ul HTTP, livrand in final o pagina cu continut HTML (de obicei) catre clientul HTTP care a facut cererea.

O astfel de aplicatie este o aplicatie normala Java. Nu are chiar metoda Main(String[] args), dar are un fisier web.xml numit "deployment descriptor", care descrie o serie de "filtre" si "servlets", precum si alte configurari, care stabileste care metode din codul Java vor fi apelate atunci cand request-ul contine anumite pattern-uri.

Spring: framework "bun la toate", ale carui principale "arme impotriva concurentei sunt":
- container-ul cu Inversion of Control - mentine niste obiecte (le putem asemana daca vreti cu niste variabile globale in contextul unei aplicatii web) instantiate in memorie si are grija ca anumiti membri ai lor sa fie setati automat, asa cum este specificat in niste fisiere de configurare (XML, bineinteles:) )
- suporta framework-uri de persistenta: bune la casa omului, cand motorul curent de baze de date nu-ti mai satisface nevoile; in caz de "nevoie", se migreaza datele de la un engine de baze de date la altul, se modifica configurarile framework-ului de persistenta (can be a pain in the ass sometimes..) si voila, nu a trebuit modificata aplicatia cu nimic
- suporta "Aspect Oriented Programming": interceptarea unor apeluri de functii si rularea unor "advice-uri" la momente cheie din viata apelurilor respective. Folosind "advice-uri" putem specifica declarativ ca vrem ca anumite metode care modifica baza de date sa fie tranzactionale, de exemplu, sau ca vrem sa faca numai citiri (si la prima scriere sa se genereze o eroare)
- suporta MVC, atat sub forma de plugin, cat si prin propriul framework, Spring MVC

Struts: workflows, web-pages, MVC, input-forms, validation
Toate aceste cuvinte cheie definesc succint pe bunul nostru prieten Struts. Si el foloseste fisiere de configurare XML, pentru ca nu a vrut sa fie oaia neagra a familiei J2EE. Si suporta si plugin-uri, si de toate, numai ca sa va aduca voua pe ecrane paginile voastre favorite. Struts face practic afisarea si nu face altceva decat sa mapeze anumite path-uri la servleti JSP, care pot fi precedati de "actiuni" care "populeaza" "form-uri" si forwardeaza mai departe la alte "actiuni". Nu va speriati, nu e chiar atat de rau pe cat pare.. pana cand dati de internationalizare :)

Hibernate: unul dintre cele mai folosite framework-uri de persistenta. Incearca sa abstractizeze accesul la baza de date prin mai multe metode:
- defineste un limbaj HQL, asemanator cu SQL, care apoi este translatat in dialectul nativ al bazei de date folosita
- defineste (folosind XML, evident:) ) mapping-uri intre obiecte Java ("POJO" - Plain Old Java Objects) si randuri in baza de date
- ne ofera API-uri de interogare a bazei de date, care acum este privita ca si continand obiecte (cel mai cunoscut este Criteria API)
- ofera o arhitectura de cache avansata, pluggable, cu suport pentru cache distribuit, absolut necesar daca vreti ca site-ul web sa nu ruleze numai pe un singur server

In episodul urmator, va vom povesti despre JBoss, si cum sa imblanzim aceasta "bestie".

Niciun comentariu:

Trimiteți un comentariu