Sunteți pe pagina 1din 5

TEHNOLOGII JAVA PENTRU APLICATII WEB

Aplicatii Web

O aplicatie Web este o aplicatie accesibil dintr-un program de navigare (Browser Web) si
aflat n general pe un alt calculator (numit si server) dect calculatorul folosit de utilizator (numit
si client al aplicatiei), ambele conectate n reteaua Internet. Programele de navigare pe Internet
(Mozilla FireFox, Internet Explorer, Opera, Chrome) comunic cu aplicatia din server prin
protocolul HTTP si limbajul HTML.
Cuvintele server si client desemneaz si programele care asigur comunicarea ntre
calculatorul server si calculatorul client.
Un server Web este un program care primeste cereri HTTP de la clienti (programe de tip
browser, dar si alte programe) si serveste rspunsuri acestor cereri sub form de pagini Web
care contin documente HTML si alte resurse asociate (imagini s.a.). Continutul unui rspuns era la
nceput static (fisiere HTML pregtite anterior si redate ca atare), iar mai apoi dinamic (paginile
Web contin, pe lng fragmente HTML si date adugate de server si rezultate din prelucrri si/sau
din baze de date folosite de server).
Utilizatorul unei aplicatii Web introduce n browser adresa (identificatorul) unei resurse Web,
numi URL (Uniform Resource Location) sau URI (Uniform Resource Identifier). Exemplu :
http://www.host.com/path/file.html

Termenul host desemneaz calculatorul server din reteaua Internet care gzduieste aplicatia
Web, iar path este calea (secventa de directoare) din server ctre fisierul file.html.
Un server de aplicatii (Application Server) este un server Web care ofer aplicatiilor gzduite o
serie de servicii suplimentare si un container n care se execut aplicatiile.
Odat cu aparitia serviciilor Web (Web Services) s-a lrgit definitia aplicatiilor Web; conform
JEE6 Tutorial o aplicatie web este o extensie dinamic a unui server Web sau a unui server de
aplicatii. Se pot deosebi dou tipuri de aplicatii Web:
- Orientate ctre prezentare (Presentation Oriented), care genereaz pagini Web interactive scrise
n diferite limbaje cu marcaje (HTML,XHTML,XML s.a.);
- Orientate ctre servicii (Service Oriented), care implementeaz un furnizor de servicii Web (Web
Service Endpoint).
Clientul unui serviciu Web, ca si clienti ai altor aplicatii Web, pot s nu foloseasc un browser
Web si s fie programe de acces la serviciile oferite de aplicatie.
Exist si aplicatii Web destinate utilizrii ntr-o retea local (Intranet), dar majoritatea lor sunt
accesibile n reteaua global Internet.
Aplicatiile Web au avantajul c orice calculator legat la Internet poate avea acces la o astfel de
aplicatie, iar modificarea aplicatiei nu necesit dect modificri n server fr a fi afectati si
utilizatorii aplicatiei. In plus, programul browser nu necesit multe resurse, ceea ce a condus la
expresia thin client pentru utilizatorul unui browser. Nu conteaz sistemul de operare sub care se
execut programul browser (Windows sau Linux sau altul), dar pot conta eventuale diferente de
implementare a standardelor Web (HTML, CSS, DOM, Javascript) de ctre browser. O aplicatie
Web poate include alte proceduri Web existente, cum ar fi cutri si posta electronic.
Exemple uzuale de aplicatii Web sunt posta electronica (e-mail sau WebMail), centre de
informare (wikis) si motoare de cutare n baze de cunostinte (Google,Yahoo,s.a.), comert
electronic, licitatii prin Internet, bloguri, forumuri de discutii, portaluri s.a.
Fiecare aplicatie are o adres de Internet URL (un nume de locatie, de site), de aceea se
foloseste uneori si expresia site sau website n loc de aplicatie.
Cele mai multe aplicatii Web au un numr nelimitat (n general foarte mare) de utilizatori, dar
exist si aplicatii Web cu numr mic de clienti si care sunt alternative la aplicatii anterioare locale
( informri si transmitere de documente n cadrul unei firme, proiectare asistat de produse s.a.)
O aplicatie Web are ca functie principal transmiterea (de la server la client) de pagini Web,
care pot fi statice (cu continut fix, stabilit de server) sau dinamice (cu continut care depinde de
cererile clientului, de informatiile extrase din baze de date si de logica aplicatiei). In general, dup
introducerea adresei de site de ctre clientul aplicatiei, aplicatia din server trimite o pagin de
prezentare (home page), care permite utilizatorului selectarea n continuare a unor operatii
prevzute de aplicatie sau care cere utilizatorului informatii de identificare (nume si parol), dac
aplicatia are restrctii de acces. In continuare dialogul client-server are loc prin cereri HTTP

1
formulate de client prin intermediul unor elemente de interfat grafic (butoane, csute pentru
introducere text, formulare s.a.), la care aplicatia trimite ca raspuns pagini web (n HTML) ce pot
contine text, imagini, alte formulare si date extrase din baze de date existente pe server.
Pentru a face mai atractiv dialogul client-aplicatie se folosesc texte si imagini animate
(dinamice), realizate n principal prin includerea de secvente JavaScript n paginile HTML trimise
de server (secvente interpretate de browser).
Tehnologia Ajax (Asynchronous Javascript XML) permite o interactiune mai rapid ntre client si
aplicatie prin modificarea paginilor afisate de browser fr retransmiterea unei noi pagini
(modificate) de ctre server (n paralel si asincron cu actiunile utilizatorului).
Limbajul JavaScript (ECMAScript) permite si realizarea de interfete mai sofisticate pentru
aplicatiile Web, apropiate ca posibilitti de interfetele grafice ale aplicatiilor locale (desktop), ceea
ce a condus la termeni ca Rich Web Application sau Rich Internet Application (RIA).

Dezvoltarea de aplicatii Web

Orice aplicatie Web trebuie s interpreteze cererile HTTP primite de la browser (GET, POST,
s.a.) si s genereze pagini Web ca rspuns la aceste cereri. In plus, cele mai multe aplicatii
folosesc si una sau cteva baze de date din care se extrag date ca urmare a unor cereri, iar
aceste date sunt incluse n paginile de rspuns (pagini cu continut dinamic).
Fiecare aplicatie are o anumit logic (un algoritm) de tratare a cererilor primite, logic care
poate deveni destul de complex.
Servirea unui continut dinamic nseamn c multe pagini afisate de o aplicatie Web prin
intermediul unui browser au prti fixe (statice), pentru care este potrivit limbajul HTML, dar si prti
variabile care nu pot fi descrise n HTML, dar sunt inserate n paginile HTML.
Aplicatiile Web au n general o complexitate mai mare dect aplicatiile locale pentru c:
- Problemele care trebuie rezolvate presupun competente diferite si limbaje diferite: HTML si
JavaScript pentru partea de prezentare, baze de date si SQL pentru datele persistente si un limbaj
de programare (de obicei orientat pe obiecte) pentru logica aplicatiei.
- Trebuie compatibilizate limbaje si tehnologii diferite: cererile HTTP trebuie transformate n
obiecte, paginile HTML trebuie s preia date din programe Java; aceste limbaje nu au fost
proiectate s lucreze mpreun. Probleme similare apar la utilizarea datelor dintr-o baz de date
relational ntr-un limbaj cu obiecte, ceea ce a condus la aparitia unor produse de tip ORM (Object
Relational Mapping) pentru rezolvarea lor.
- Protocolul HTTP este un protocol stateless, n care o cerere nu tine seama de cererile
anterioare (de starea aplicatiei), dar n practic multe aplicatii Web functioneaz ca un automat
cu stri (de ex. Acumularea unor comenzi de produse ntr-un cos de cumprturi).
- Accesul public la aplicatiile Web si numrul mare de utilizatori ridic probleme de securizare si de
calitate a serviciilor (timp de rspuns bun, disponibilitate permanent, modificare continu).
- Testarea si depanarea aplicatiilor Web sunt mai dificile dect pentru aplicatiile locale.
- Cerintele asupra acestor aplicatii au crescut continuu att ca facilitti oferite (post electronic,
servicii Web, portaluri, s.a), ca aspect (componente grafice de interfata ct mai diverse), ca
usurint de utilizare de ctre beneficiarii (interactivitate sporit) aplicatiei si ca timp de
implementare.
Ca orice aplicatie software real si aplicatiile Web au o evolutie n timp, n sensul c se pot
modifica cerintele privind interfata de acces si functionalitatea aplicatiei. De aceea conteaz nu
numai timpul de dezvoltare a unui prototip initial al aplicatiei ci si efortul de modificare a aplicatiei
aflat n exploatare.
Solutiile pentru abordarea acestei complexitti au diverse forme:
- Modularizarea (componentizarea) aplicatiilor Web prin folosirea schemei de proiectare MVC
prin folosirea de extensii plugin (adugate static sau dinamic, fr oprirea aplicatiei)
- Utilizarea de platforme suport (Web Frameworks) pentru dezvoltarea si testarea aplicatiilor
- Utilizarea de medii IDE cu facilitti speciale pentru aplicatii Web (Eclipse,NetBeans,IDEA, s.a.).
- Folosirea unor limbaje mai noi (Python,Ruby,Groovy, Scala) si modernizarea limbajelor mai vechi
cu tehnici OOP (PHP 5, JavaScript, s.a.) pentru reducerea codului aplicatiilor.
Tehnologiile folosite pentru realizarea de aplicatii Web au evoluat rapid iar n prezent exist o
mare diversitate de solutii disponibile, clasificate n general dup limbajele utilizate n partea de
server: PHP, Perl, Python, Ruby s.a.

2
Web Frameworks

Expresia Web Framework (infrastructur, platform, suport), ca si Application Framework,


este mult folosit dar destul de vag definit; o definitie general este aceea de infrastructur pe
baza creia se construiesc aplicatii de o anumit complexitate.
Ideia general este aceea c dezvoltarea unei noi aplicatii nu trebuie s plece de la zero si c
o bun parte din codul aplicatiei poate fi preluat din biblioteci si/sau poate fi generat conform
unui model comun unei clase de aplicatii. Exist prea multe sarcini si aspecte comune aplicatiilor
Web pentru ca ele s nu fie reutilizate n mai multe aplicatii. Ce si ct se reutilizeaz depinde de
fiecare framework, dar obiectivele sunt comune: reducerea timpului de dezvoltare si de punere la
punct a aplicatiilor si o calitate ct mai bun a lor (cerinte oarecum contradictorii).
Un framework Web se poate reduce la o bibliotec de clase sau de functii Javascript sau la un
mecanism de utilizare a paginilor sablon (template); unele au obiective partiale iar altele se vor a
fi ct mai complete si includ alte produse framework (Full Stack Framework).
Un framework Web cu obiectiv limitat poate fi folosit pentru ORM (Hibernate,..), pentru obiecte
grafice interactive de interfat (widgets), pentru a include functionalitate Ajax n aplicatii
(Prototype, jQuery, s.a.), pentru reducerea fisierelor de configurare prin conventii, pentru
generarea unui schelet al aplicatiei (Scaffolding), pentru testarea aplicatiilor etc.
Anumite produse framework sunt cunoscute mai ales pentru nouttile introduse n domeniu si
care au marcat anumite pietre de hotar (JEE, .NET, Spring, Ruby on Rails =RoR), iar altele au
perfectionat aceste inovatii si le-au fcut mai accesibile (Grails simplific utilizarea Spring,
Hibernate, Prototype, RoR s.a.).
Un framework complet include un server Web si o baz de date pentru a simplifica si accelera
dezvoltarea si testarea aplicatiilor. Aplicatia final (cu multe fisiere si foldere) este de obicei
arhivat ntr-un format standard pentru a fi transferat pe un server Web unde va fi exploatat
(proces numit deployment= instalare).
Produsele de tip framework sunt clasificate de obicei dup limbajul utilizat (altele dect HTML
sau XML): PHP, Pyton, Java, s.a.
Un framework Web poate fi utilizat n mod linie de comand sau dintr-un IDE; de exemplu
Grails poate fi folosit din IDEA, Eclipse si NetBeans.
Multe produse framework actuale sunt de tip MVC adic impun aplicatiilor Web o structur
conform schemei MVC (Model-View-Controller), avnd 3 prti distincte:
- M (Model) desemneaz datele folosite de aplicatie (date preluate de obicei dintr-o baz de date
relational);
- V (View) desemneaza partea de prezentare a aplicatiei (pagini HTML cu JavaScript);
- C (Controller) desemneaz logica care controleaz accesul la date si generarea de pagini Web,
pe baza cererilor HTTP primite de aplicatie.
Pe lng implementarea schemei MVC o aplicatie Web mai poate contine si alte componente,
cum ar fi:
- componente de autentificare utilizatori autorizati
- componente de cutare pe Internet de informatii
- componente de generare mesaje prin posta electronic
- componente de generare fisiere n formate diferite (PDF, formate MSOffice: DOC,XLS)
- componente de conectare la servicii Web.

Java Enterprise Edition (Java EE)

Java EE este o platform pentru dezvoltarea de aplicatii Web (distribuite) n limbaj Java,
aplicatii complexe (large-scale), portabile, scalabile, sigure si modulare si care s se poat
integra usor cu tehnologii anterioare (legacy technologies).
In jargonul JEE o aplicatie distribuit complex este numit aplicatie de firm (Enterprise
Application) pentru c apare n firmele mari informatizate.
Java EE este n primul rnd o colectie de specificatii care ar trebui respectate de serverele
compatibile JEE (SPI=System Programmer Interface) si respectiv de aplicatiile JEE
(API=Application Programmer Interface).
Specificatiile se refer la:

3
- interfete API si biblioteci de clase care s unifice programarea aplicatiilor distribuite complexe:
JDBC pentru acces la baze de date SQL, JMS pentru mesagerie, JNDI pentru registre de nume,
JAX-WS si JAX-RS pentru servicii Web, JTA pentru tranzactii, JPA pentru persistent, etc.
- componente standard ale aplicatiilor Web: servleti, pagini JSP, biblioteci de tag-uri, module EJB
(Enterprise Java Beans), portleti, conectori, etc.
- servicii care trebuie asigurate de ctre un server de aplicatii (un container de aplicatii Web)
- fisiere de configurare si structura arhivelor ce contin aplicatii Web
Ideea principal era de a reduce diversitatea aplicatiilor Web scrise n Java si diversitatea
serverelor de aplicatii Java pentru a reduce timpul de dezvoltare si de instalare pe diferite servere
a unor aplicatii, inclusiv prin reutilizarea unor module si servicii comune.
Unele dintre tehnologiile introduse de JEE pentru aplicatii Web scrise n Java se folosesc si n
servere sau produse framework care nu sunt total compatibile JEE: servleti, JSP, logging, s.a.
Un server care suport aplicatii Web scrise n Java trebuie s contin un container de servleti.
Principalele servere compatibile Java sunt Apache Tomcat si Jetty.
Un server de aplicatii (AS=Application Server) ofer servicii suplimentare fat de un server
container de servleti (pe care-l contine): tranzactii, jurnalizare (logging), servicii de nume, s.a.
Un server de aplicatii expune clientilor posibilitatea de a utiliza aplicatii aflate pe un alt calculator.
Un server compatibil JEE implementeaz toate interfetele API de pe platforma JEE si ofer
serviciile considerate standard pentru toate aplicatiile.
In prezent exist mai multe servere de aplicatii compatibile Java EE, unele comerciale (IBM
Websphere, JBoss, Weblogic) si altele gratuite ( Glassfish, Geronimo s.a.).

Tehnologii Web pe platforma JEE

Platforma JEE este destinat n primul rnd aplicatiilor mari si admite o diversitate a acestor
aplicatii, n sensul c pot exista mai multe servere, c utilizatorul final (client) poate folosi si alte
programe dect un browser Web, c poate fi necesar integrarea n aplicatia JEE a unor baze de
date sau fisiere existente anterior.
Aplicatii JEE au si atributul de multi-tiered adic sunt structurate pe mai multe niveluri, iar
tehnologiile folosite sunt clasificate dup nivelul pe care se folosesc. Cele 3 niveluri sunt:
- Nivelul Web (Web Tier) : partea care preia cererile client si le transmite nivelului urmtor.
- Nivelul Business (Business Tier): partea de logic a aplicatiei, care compune rspunsuri
- Nivelul EIS (Enterprise Information System): partea de lucru cu date persistente (externe).
Tehnologiile JEE folosite pe nivelul Web sunt:
- Servleti
- JSP (Java Server Pages) si biblioteci de taguri JSP (JSP Tag Library)
- JSF (Java Server Faces)
- JSF Facelets
- Limbajul unificat de expresii (Unified Expression Language)
- Clase JavaBeans folosite n paginile JSP si JSF
Tehnologiile JEE folosite pe nivelul Business sunt:
- Componente EJB (Enterprise Java Beans)
- Servicii Web de tip REST
- Furnizori/clienti de servicii Web SOAP
- Entitti persistente JPA (Java persistence API)
Tehnologiile JEE folosite pe nivelul EIS sunt:
- JDBC (Java Data Base Connectivity) care integreaz limbajul SQL n Java
- JPA (Java Persistence API)
- Java EE Connector Architecture, pentru cuplare cu produse non-JEE
- JTA (Java Transaction API) pentru utilizare de tranzactii
Dezvoltarea de aplicatii Java EE se poate face n linie de comand (folosind programul ant)
sau folosind mediul NetBeans.
Mediul integrat pentru dezvoltare de programe NetBeans ofer suport pentru dezvoltarea de
aplicatii JEE, incluznd multe biblioteci, serverul Glassfish si o baz de date (Derby). Pentru
exemplele din tutorialul JEE sunt descrise proceduri de operare n NetBeans (exist fisiere proiect
NetBeans), dar este posibil si utilizarea lor n linie de comand.

4
Evolutia platformei JEE

Principala noutate a platformei initiale Java EE a fost introducerea unor noi componente,
numite EJB (Enterprise Java Beans) care se executau sub controlul containerului JEE. Un EJB
era o clas Java care trebuia s respecte anumite interfete pentru metodele din EJB apelate de
container.
Initial erau trei tipuri de clase EJB:
- EJB sesiune (Session EJB)
- EJB entitate (Entity EJB)
- EJB mesaj (Message EJB)
Aceste componente EJB nu puteau fi depanate dect dup instalare n container (deci numai
pe un server JEE), ceea ce s-a dovedit a fi un dezavantaj important si o piedic n adoptarea lor.
In acelasi timp au aprut alte solutii ORM pentru accesul din Java la date persistente (din baze de
date SQL), mai simple si care foloseau clase Java obisnuite (POJO=Plain Old Java Objects).
Cele mai mari modificri de la o versiune la alta au avut loc pe nivelul Business, prin renuntarea
treptat la componentele Entity EJB si trecerea la alte tehnologii pentru obiecte persistente.
O modificare important a avut loc dup ce s-au introdus n limbajul Java (1.5) adnotrile
(annotations), care au simplificat fisierele de configurare XML necesare unei aplicatii JEE.
Ajuns acum la versiunea 6, Java EE a suferit n timp schimbri importante:
- Pe partea de persistent a datelor (componenta M din MVC) s-a renuntat la ideea initial de
clase EJB entitate n favoarea unor clase Java obisnuite (POJO=Plain Old Java Objects); clasele
Entity EJB pot fi testate numai pe serverul de aplicatii, dar clasele POJO pot fi testate si nainte de
instalare pe server. Ultima versiune, EJB3 (JPA), are multe simplificri si mbunttiri, dar exist
alternative pentru clasele persistente preferate n multe cazuri (Hibernate de ex.).
- Pe partea de prezentare (componenta V din MVC) s-a trecut (n ultima versiune) de la pagini JSP
la tehnologia JSF (Java Server Faces) si la componente facelet.
Platforma Java EE evolueaz n continuare prin aparitia de noi interfete API.

Alternative la platforma JEE

Cerintele impuse de Java EE unui server de aplicatii urmresc asigurarea tuturor serviciilor
care ar putea fi cerute de aplicatii, chiar dac multe aplicatii nu folosesc aceste servicii. De aici si
complexitatea sporit a unor astfel de servere, care se reflect si n complexitatea procesului de
elaborare a unor aplicatii Java EE.
Mai nou, exist servere JEE modulare, care au cteva niveluri de complexitate n functie de
cerintele aplicatiilor (Apache Geronimo, Glassfish s.a.), dar si containere lightweight cum este
Spring Framework, care impun mai putine conditii aplicatiilor Web dezvoltate n Java.
Spring ofer mai multe tehnologii Java pentru dezvoltare de aplicatii Web, ntre care se poate
opta, iar unele erau mai simple dect solutiile JEE (cel putin ntr-o anumit etap a platformei JEE)
Produsele framework pentru dezvoltare de aplicatii Web n Java pot s fie sau nu compatibile
cu specificatiile Java EE. Dintre cele compatibile JEE mai folosite sunt: Spring, Seam (JBoss),
s.a. Aplicatiile dezvoltate cu Spring pot fi exploatate pe un server JEE dar si pe un server mai
modest (Tomcat sau Jetty).
Unul din obiectivele initiale si ambitioase ale platformei JEE era acela de a permite scalarea
aplicatiilor Web pentru mentinerea unor performante bune pe msur ce numrul clientilor si
facilittile oferite cresteau (de unde si atributul multi-tier pentru aplicatii JEE). Mai nou, pentru
aplicatii Web scalabile se ofer platforme bazate pe un nor de calculatoare (Cloud Computing)
cum este Google Application Engine si altele.
O alternativ la JEE dar si la utilizarea limbajului Java o constituie platforma .NET de la
Microsoft, considerat ca principala optiune fat de solutiile Java. Exist si o variant Spring
pentru .NET.

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