Sunteți pe pagina 1din 8

- Arhitecturi pentru sisteme software -

Investigarea i evaluarea standardului JAVA EE

Rusu Catalin
Inginerie Software
An II

Investigarea i evaluarea standardului JAVA EE


Introducere
Platforma Java, Enterprise Edition (Java EE) este standardul Oracle pentru enterprise Java
computing. Platforma ofer un API i un mediu de execuie pentru dezvoltarea i rularea de
enterprise software, incluznd servicii web i alte aplicaii de reea scalabile, sigure i pe mai
multe nivele. [1]
Tehnologia face parte din viaa noastr de zi cu zi. Datorita tehnologiei Java, dispozitivele
digitale pe care le utilizm sunt mai inteligente, mai funcionale i mult mai distractive.
Tehnologia Java a fost lansat n anul 1995. Totul a nceput ns n anii '90, pe cnd extinderea
puterii de calcul din reea la activitile vieii zilnice era considerat o viziune radical. n 1991
un grup de ingineri de la Sun, numit Green Team (Echipa Verde) credea c urmtorul pas n
ceea ce privete calculul, era unirea dispozitivelor consumabile digitale cu computerele. Condui
de James Gospling, echipa a lucrat la creerea limbajului de programare care avea s
revoluioneze lumea Java [2].
n 1995 echipa a anunat c browser-ul de Internet Netscape Navigator va incorporta tehnologia
Java. [2] Astzi Java penetreaz nu numai Internetul, ci este fora care st n spatele multor
aplicaii i dispositive care mbuntesc viaa noastr de zi cu zi.
Platforma Java, Enterprise Edition este platforma standard industrial pentru construirea de
aplicaii de clas enterprise scrise n limbajul de programare Java. De la lansarea sa n 1999, Java
EE s-a maturizat i a devenit o platform de nalt performan care ofer o funcionalitate
bogat. [7] Ultimele versiuni lansate pe pia pun accent, de asemenea, pe simplitate i uurin
n folosire. Cea mai recent versiune este Java EE 6, care aduce tehnologii noi semnificative i
simplific platforma extinznd mbuntirile existente realizate n versiunile anterioare.
Orice programator poate beneficia de aceast tehnologie pus la dispoziie ntr-o manier open
source, putndu-i dezvolta propriile aplicaii software.
Java EE este una din cele patru platforme Java: Java SE (Standard Edition), Java EE (Enterprise
Edition), Java ME (Micro Edition) i JavaFX. Toate aceste platforme ofer o main virtual Java i
un API, ceea ce permite aplicaiilor scrise pentru respectiva platform s fie rulate pe orice
sistem compatibil cu toate avantajele limbajului de programare Java. [3]

Java SE conine un API care ofer funcionalitatea core a limbajului de programare Java, o
main virtual, instrumente de dezvoltare, tehnologii de deployment i alte biblioteci de clase
i toolkits folosite n aplicaiile Java.
Platforma Java EE este construit peste platforma Java SE.
Java ME ofer un API (subset al Java SE API) i o main virtual special pentru rularea
aplicaiilor Java pe dispositive mici cum sunt telefoanele mobile. Aplicaiile Java ME sunt adesea
clieni ai serviciilor de platform Java EE.
JavaFX este o platform ce permite crearea de aplicaii internet ample ce folosesc lightweight
user-interface API. Aplicaiile JavaFX pot fi clieni ai serviciilor de platform Java EE.

Descrierea standardului Java EE


Java EE este proiectat pentru a oferi suport aplicaiilor care implementeaz servicii enterprise
pentru clieni, angajai, parteneri i alii care efectueaz cereri sau aduc contribuii la o
antrepriz. Astfel de aplicaii sunt complexe, accesnd date dintr-o varietate de surse i
distribuind aplicaii mai multor clieni.
Pentru a controla i administra aceste aplicaii, funciile business care ofer suport acestei
varieti de useri sunt dirijate spre nivelul de mijloc. Acest nivel este de obicei rulat pe servere
dedicate hardware i are acces la toate serviciile antreprizei.
Modelul aplicaie Java EE definete o arhitectur pentru implementarea de servicii ca aplicaii
pe mai multe nivele (multi-tier). Acest model partiioneaz munca ce trebuie efectuat pentru a
implementa un serviciu pe mai multe nivele n dou pri: logica de business i prezentare care
va fi implementat de ctre dezvoltator i serviciile standard de sistem oferite de platforma Java
EE.
Platforma Java EE folosete un model aplicaie distribuit pe mai multe nivele pentru aplicaiile
enterprise. Logica aplicaiei este mprit pe componente dup funciile pe care acestea le
ndeplinesc. Diferitele componente ale aplicaiei care formeaz o aplicaie Java EE sunt instalate
pe diferite maini n funcie de nivelul din mediul Java EE cruia i aparine fiecare component.
[4]
Stilul arhitectural pe care l definete standardul Java EE este stilul client-server.
Aplicaiile multitiered Java EE conin urmtoarele nivele:
-

Nivelul client componentele ruleaz pe maina client.

Nivelul Web i nivelul Business componente ce ruleaz pe Serverul Java EE

Nivelul enterprise information system (EIS) software ce ruleaz pe serverul de baze de


date.

Figura 1. Aplicaiile distribuite pe mai multe nivele [6]


Specificaia Java EE definete urmtoarele componente Java EE:
-

Aplicaii clieni sau appleturi sunt componente ce ruleaz pe client.

Java Servlet, JavaServer Faces i JavaServer Pages (JSP) componente de tehnologie


sunt componente web ce ruleaz pe serverul Java EE.

Enterprise JavaBeans (EJB) componente de business care ruleaz pe serverul Java EE.

Clienii Java EE pot fi clieni Web sau clieni aplicaie.


Clienii web sunt compui din dou pri: (1) pagini web dinamice coninnd diverse tipuri de
limbaj de marcare (HTML, XML, etc.) care sunt generate de componentele web ce se execut pe
nivelul web, i (2) un browser web care red paginile primite de la server. n mod obinuit un
client web nu interogheaz baze de date, nu execut reguli de business complexe, nici nu se
conecteaz la aplicaii legacy. Cnd se folosesc clieni web, astfel de operaii sunt descrcate pe

enterprise beans care se execut pe serverul Java EE unde pot beneficia de securitatea, viteza, i
sigurana tehnologiilor Java EE de pe partea de server.
O pagin web primit de la nivelul web poate include applet-uri embedded. Acestea se execut
pe maina virtual Java instalat n browser. Componentele web sunt API-ul preferat pentru
crearea unui program client web, acestea permind o proiectare mai curat i mai modulara a
aplicaiei deoarece ofer o cale de a separa programarea aplicaiilor de proiectarea paginii web.
Clienii aplicaie se execut pe maina clientului. Acetia acceseaz direct bean-urile enterprise
care ruleaz n nivelul de business. Totui, dac cerinele aplicaiei garanteaz acest lucru, un
client aplicaie poate deschide o conexiune HTTP pentru a stabili o comunicare cu un servlet ce
ruleaz pe nivelul web.
Nivelele server i client includ de asemenea i componente bazate pe arhitectura
componentelor JavaBeans pentru a administra fluxul de date dintre un client aplicaie sau un
applet i componentele ce ruleaz pe serverul Java EE, sau dintre componentele de server i o
baz de date. Componentele JavaBeans nu sunt considerate ca fiind componente Java EE de
catre specificaia Java EE. [4]
n ceea ce privete comunicarea cu serverul Java EE, clientul comunic cu nivelul business care
ruleaz pe serverul Java EE, fie direct fie, n cazul unui client ce ruleaz ntr-un browser, prin
pagini JSP sau servlete ce ruleaz n nivelul web. [5]
Nivelul enterprise information system manipuleaz software EIS i include systeme enterprise
de infrastructur cum ar fi planificare de resurse, procesare de tranzacii mainframe, sisteme de
baze de date sau alte sisteme de informaie legacy. [4]
Arhitectura Java EE bazata pe componente si independent de platform face ca aplicaiile s fie
uor de scris datorit faptului c logica de business este organizat n componente reutilizabile.
n plus, serverul Java EE ofer
servicii de baz sub form de container pentru fiecare
component.
Containerele sunt interfaa dintre o component i funcionalitatea specific de platform de
nivel redus (low level), care suport componenta. nainte ca o component client web sau
enterprise bean sau client aplicaie s fie executat, ea trebuie s fie asamblat ntr-un modul
Java EE i apoi lansat (deployed) n container-ul ei.
Datorit faptului c arhitectura Java EE ofer servicii configurabile, componentele aplicaiei din
cadrul aceleiai aplicaii Java EE se pot comporta diferit n funcie de unde sunt acestea lansate
(deployed).

Containerul administreaz de asemenea i servicii neconfigurabile cum ar fi ciclurile de via ale


unui enterprise bean sau ale unui servlet, persistena de date, resource pooling al conexiunii la
baza de date i accesul la API-urile platformei.
Containerele pot fi: Java EE server (partea de runtime a produsului Java EE; ofer EJB i
containere web), Enterprise JavaBeans (EJB) container (administreaz execuia enterprise beanurilor), Web Container (administreaz execuia paginilor JSP i a componentelor servlet),
Application client container i Applet Container. [4]

Analiza proprietilor, compromisurilor i aplicabilitii


Bazat pe fundaia solid a platformei Java SE, Java EE adaug biblioteci i servicii care
promoveaz atribute de calitate importante, i anume: scalabilitatea, accesibilitatea,
securitatea, integritatea. [7]
Java EE ofer de asemenea stabilitate aplicaiilor datorit stabilitii limbajului Java. Nu exist
schimbri distrugtoare (breaking changes). Platformele Java EE 6 i Java EE 5 sunt compatibile
backward, permind livrarea plicaiilor legacy J2EE 1.X pe mediul Java EE i migrarea lor ntr-o
manier fin, uoar. [8]
O tehnologie de servicii web pe care o prezint Java EE este tehnologia serviciilor RESTful.
Representational State Transfer (REST) este un stil architectural care specific constrngeri cum
ar fi cea de interfa uniform. Aceste constrngeri aplicate unui serviciu web promoveaz
atribute de calitate cum ar fi performana, scalabilitatea, modificabilitatea. [10]
Integrarea limbajului i a altor produse cum ar fi Share Point, Exchange sau Office Products este
mai dificil pe platforma Java EE.
Hosting-ul este un punct slab pentru Java EE. Exist cteva posiblititi n direcia aceasta, cum
ar fi: Amazon Web Services, Cloud Foundry, Google Apps Engine, dar fiecare dintre ele au
anumite restricii: costuri mari, depinderea de un anumit service provider i de API-ul acestuia,
etc. Jelastic este un serviciu nou care ncearc rezolvarea acestor restricii. [9]
n ceea ce privete securitatea n Java EE, securitatea componentelor este dat de containerele
acestora. Un container ofer dou feluri de securitate: declarativ i programatic.
Securitatea declarativ exprim cerinele de securitate ale componentelor unei aplicaii,
folosind descriptori. Descriptorii de lansare sunt externi unei aplicaii, i includ informaia care
specific modul n care rolurile de securitate i cerinele de acces sunt mapate pe rolurile de

securitate specifice pentru mediul respectiv, useri i metode. ntr-un fisier de clas, informaiile
legate de securitate sunt specificate cu ajutorul anotaiilor (numite i metadate).
Securitatea programatic este incorporat ntr-o aplicaie i folosit pentru a lua decizii de
securitate. [11]
Scalabilitatea i disponibilitatea sunt date de folosirea clusterelor ca mediu de execuie pentru
platforma Java EE. [12, 13]
Un alt atribut de calitate care este promovat de Platforma Java EE este sigurana (reliability).
Mecanismele care asigur obinerea livrrii sigure de mesaje sunt: controlarea confirmrii
mesajelor (se pot specifica nivele de control al confirmrii mesajelor), specificarea persistenei
mesajelor (se poate specifica faptul c mesajele sunt persistente, pentru ca acestea s nu fie
pierdute n cazul unui eec la nivel de provider), setarea nivelelor de prioritate a mesajelor
(aceste nivele afectaz modul n care mesajele vor fi livrate), permiterea expirrii mesajelor
(acestea nu vor mai fi expediate dac au depit un anumit termen), crearea de destinaii
temporare (acestea rmn doar pe perioada conexiunii). [14]
Testabilitatea n Java EE 6 poate fi nbuntit cu ajutorul framework-ului Arquillian. Testarea
de integrare este un punct important n Java EE, deoarece componentele de business
interacioneaz adesea cu resursele container-ului sau cu subsistemul, i multe servicii
declarative sunt aplicate componentei la runtime. Dei cea mai mare parte a logicii de business
poate fi testat acum n afara container-ului, multe servicii de infrastructur (tranzacii,
securitate, etc.) au fost adugate n construcii de programare declarative cu scopul de a izola
serviciile de logica de business. Framework-ul Arquillian pentru rularea de teste n container
ajut la confirmarea faptului c logica de business funcioneaz corect n context i verific dac
serviciile de infrastructur sunt aplicate corect. [15]

Documentaie
Documentaia pentru standardul Java EE se gsete n cea mai mare parte pe site-ul oficial
Oracle. Este o documentaie ampl, cuprinztoare, bine structurat, disponibil att online ct i
n format de download (PDF). Un lucru de menionat este c poate fi gsit att documentaia
pentru versiunea cea mai actual a standardului, ct i documentaiile pentru versiunile
anterioare.
Documentaia de pe site-ul Oracle este de asemenea prezentat ntr-o manier user-friendly,
usor de accesat i este uor de navigat prin ea. Seciunea FAQ ofer rspunsuri utile i la obiect
pentru cele mai frecvente ntrebri.

Exist i alte site-uri i blog-uri pe care pot fi gsite informaii legate de standardul Java EE i mai
ales aspecte practice din utilizarea Java EE. Numeroase opinii i soluii sunt date de diveri
utilizatori/arhiteci, acestea fiind mai mult sau mai puin obiective. Dar pot fi de folos pentru cei
interesai n a analiza avantajele/dezavantajele standardului sau n a gsi soluii pentru propriile
aplicaii.
n general documentaia de pe site-urile oficiale cum e Oracle, prezint cu precdere avantajele,
punctele tari i beneficiile, cutnd s minimalizeze sau s nu pomeneasc de punctele slabe
sau de defectele platformei. O mbuntire a documentaiei, din punctul de vedere al
utilizatorului, ar fi ca documentaia s fie mai explicit i mai onest cu privire la deficienele i
inconvenientele pe care le prezint.

Bibliografie
[1] http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition
[2] http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html
[3] http://docs.oracle.com/javaee/6/firstcup/doc/firstcup.pdf
[4] Curs Tehnologii Web, an III, prof. S. Mihalas
[5] http://docs.oracle.com/cd/E19798-01/821-1841/bnabh/index.html
[6] http://docs.oracle.com/javaee/6/tutorial/doc/bnaay.html
[7] http://www.oracle.com/technetwork/articles/javaee/javaee6overview-141808.html
[8] http://www.adam-bien.com/roller/abien/entry/java_ee_or_net_an
[9] http://blog.jelastic.com/2012/03/19/jelastic-holy-grail-of-java-hosting/
[10] http://docs.oracle.com/javaee/6/tutorial/doc/gijqy.html
[11] http://docs.oracle.com/javaee/5/tutorial/doc/bnbwk.html
[12] http://marakana.com/bookshelf/javaee_tutorial/high_availability_and_scalability.html
[13] http://docs.oracle.com/cd/E18930_01/html/821-2432/gktqx.html
[14] http://docs.oracle.com/cd/E19798-01/821-1841/bncfv/index.html
[15] http://java.dzone.com/articles/arquillian-making-integration

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