Documente Academic
Documente Profesional
Documente Cultură
Coordonator :
Sl.dr.ing. Mocanu Stefan Alexandru
Student :
Mincu Cristian Marian
Cuprins :
Bucuresti 2014
Tehnologia Java este alcatuita dintr-un conglomerat de concepte dintre care amintim
:
2. Arhitectura multi-tier
Arhitectura multi-tier este o arhitectura client/server cu mai multe niveluri. n
acest arhitectur componenta server este la rndul ei client pentru o alt component
server.
Aplicaiile distribuite N-Tier se refer la folosirea oricrui numr de combinaii ntre
nivele Hardware i/sau nivele Software cu scopul de a furniza o colecie modularizat de
servicii de informaii. Pot exista astfel nivele de: client, interfa, agent, tranzacie, servere de
date etc. De asemenea, aceste nivele opereaz ca uniti logice, pe aceeai main sau pe un
5
numr oarecare de maini, acest lucru ducnd la o flexibilitate i scalabilitate crescute ale
sistemului.
O astfel de abordare a unei aplicaii permite:
tot mai mare parte a aplicaiei este eliminat din partea clientului, ducnd astfel la
situaia unui thin client;
deprtarea clientului de date i prelucrarea lor;
nivelul client are ca sarcin doar manevrarea interfeei grafice cu utilizatorul;
integrarea diverselor colecii de resurse ntr-un sistem unic.
Aplicaiile distribuite N-Tier pot fi create folosind o larg varietate de limbaje de
programare, sisteme de operare i platforme.
Scopul unei asemenea arhitecturi este acela de a permite fiecrui nivel al aplicaiei s
fie dezvoltat, dirijat, instalat, extins, absolut independent de celelalte nivele.
Java, ca limbaj i main virtual, este un nou tip de client n sistemele pe 2 sau mai multe
nivele. Deoarece noul client poate rula pe orice computer i sistem de operare, software-ul
ncepe s fie scris nu pentru aplicaii pe 2 sau 3 nivele ci pentru N nivele.
Arhitectura Middleware
Arhitectura Middleware reprezint o soluie software pe un nivel intermediar care
ofer servicii pentru dezvoltarea aplicaiilor distribuite.
Arhitectura Middleware simplifica constructia sistemelor distribuite:
3.1. Swing
Tehnologia Swing face parte dintr-un proiect mai amplu numit JFC (Java Foundation
Classes) care pune la dispozitie o serie intreaga de facilitati pentru scrierea de aplicatii cu o
interfata grafica mult imbogatita functional si
estetic fatta de vechiul model AWT. In JFC sunt incluse urmatoarele:
Componente Swing
Sunt componente ce inlocuiesc si in acelasi timp extind vechiul set oferit de modelul AWT.
Look-and-Feel
Permite schimbarea infatisarii si a modului de interactiune cu aplicatia
in functie de preferintele fiecaruia. Acelasi program poate utiliza diverse moduri Look-andFeel, cum ar fi cele standard Windows, Mac, Java, Motif sau altele oferite de diversi
dezvoltatori, acestea putand fi interschimbate de catre utilizator chiar la momentul executiei .
Accessibility API
Permite dezvoltarea de aplicatii care sa comunice cu dispozitive utilizate
de catre persoane cu diverse tipuri de handicap, cum ar fi cititoare
de ecran, dispozitive de recunoastere a vocii, ecrane Braille, etc.
Java 2D API
Folosind Java 2D pot fi create aplicatii care utilizeaza grafica la un
nivel avansat. Clasele puse la dispozitie permit crearea de desene complexe,
efectuarea de operatii geometrice (rotiri, scalari, translatii, etc.),
prelucrarea de imagini, tiparire, etc.
Drag-and-Drop
Ofera posibilitatea de a efectua operatii drag-and-drop ntre aplicatii
Java si aplicatii native.
Internat ionalizare
Internationalizarea si localizarea aplicatiilor sunt doua facilitati extrem
de importante care permit dezvoltarea de aplicatii care sa poata fi configurate
pentru exploatarea lor in diverse zone ale globului, utilizand
limba si particularitatile legate de formatarea datei, numerelor sau a
monedei din zona respectiva.
Toate caracteristicile spring pot fi instalate ntr-un singur container web free cum ar fi Tomcat,
ntruct facilitile containerului EJB sunt obionale. ntr-un scenariu web, gruparea clasic
este un fisier WAR coninnd fiierele JAR. Componentele majore ale unei aplicaii web
Spring clasice includ:
Componentele i codul care nu sunt administrat de Spring: Spring este folosit doar
pentru a lega i administra obiecte unde se adaug valori concrete. Unele clase de
obiecte nu sunt administrate, cum ar fi obiecte de transfer de date, obiecte de domeniu,
cod third-party, etc. Aceste obiecte nc mai pot folosi serviciile API enterprise Spring
ntr-o manier programatic.
Cadre web: MVC-ul Spring reprezint un cadru web integral care este cu uurin
legat la o aplicaie spring existent. Spring suport de asemenea orice alt cadru, i
include clase de integrare direct pentru Struts, JSF, i alte platforme gata fcute.
Orice container web standard poate susine o aplicaie web spring. SpringSource recomand
Apache Tomcat care s-a dovedit a fi popular, rentabil, fr cost, sau cu un cost mic de hostare
a aplicaiilor bazate pe spring.
Arhitectura spring
Spring const n 7 module bine definite:
Spring AOP Una dintre componentele cheie ale spring este cadrul AOP. Acesta este
folosit pentru a oferi servicii enterprise declarative, mai ales ca un nlocuitor pentru
serviciile EJB declarative. Cel mai important asemenea serviciu este managementul
tranzacional declarativ. Alt utilitate a AOP este de a permite utilizatorilor s
implementeze aspecte personalizate, completnd utilitatea OOP-ului cu AOP.
Spring ORM Pachetul ORM este legat de accesul la baza de date. Ofer niveluri de
integrare pentru mapri obiectual-relaionale populare, incluznd JDO, Hibernate i
IBatis.
Spring Web Acesta este o parte a modulului spring de dezoltare de aplicaii web
care include Spring MVC.
Spring DAO Suportul DAO (Data Access Object) n spring are ca rol principal
standardizarea accesului de date folosind tehnologii ca JDBC, Hibernate i JDO.
Spring Context Acest pachet este construit mprejurul pachetului beans pentru a
adauga suport pentru surse de mesaje i pentru ablonul Observer, i abilitatea
obiectelor aplicaiilor de a obine resurse folosind un API consistent.
Spring Core Aceast component este cea mai important a cadrului spring. Suport
injecia de dependene. BeanFactory ofer un ablon de construcie care separ
dependenele ca iniializarea, creearea i accesarea obiectelor din logica programului
propriu.
10
3.3
Java Server Faces este un framework folosit pentru dezvoltarea de aplicatii web
gazduita in cadrul unui web server. A fost creat de Java Community Process (JPC) format
din experti in dezvoltarea de aplicatii web din diferite grupuri, ca: Jakarta Struts, Oracle,
Sun, IBM, ATG etc.
URL (date)
Nivel Achiziie (Java)
XML
(parametrii)
Administrator
Arhitectura aplicaiei cu nivelele aferente: Achiziie Server - Client
JSF face parte din sabloanele Web bazate pe MVC (Model-View-Controller) design
pattern. Aplicatiile create folosind framework-ul JSF sunt usor de dezvoltat si de intretinut
comparativ cu alte aplicatii create folosind JSP si Servlet.
Ce ofera JSF:
Componente JSF:
1. Caracteristi
JSF este un framework orientat pe partea de server, nu pe partea de client. Acest lucru
inseamna ca in arhitectura JSF, majoritatea evenimentelor legate de UI management sunt
tratate pe partea de server. Un exemplu de framework UI orientat pe partea de client este
Swing.
O caracteristica importanta a framework-ului JSF este faptul ca se separa tipurile de
activitati efectuate la crearea unei aplicatii web:
12
Internationalizare
Custom GUI controls JSF ofera un set de API si taguri associate pentru a
crea forme HTML cu interfete complexe
Suport mai bun pentru Ajax mai multe librarii third-party au support
pentru Ajax ( Apache Tomahawk, Jboss, RichFaces, Oracle ADF,
IceFaces).
Suport pentru alte tehnologii Struts este limitat doar la HTML si HTTP.
14
Diagrama Model-View-Controller
Modelul, view-ul si controller-ul sunt strans legate intre ele si intr-un continuu contact.
Diagrama de mai sus ilustreaza modul de comunicare dintre cele trei componente. Modelul
comunica cu view-ul, fara sa stie informatii despre acesta, transmitandu-i notificari asupra
schimbarilor intamplate, iar view-ul comunica la randul lui cu modelul, dar acesta stie tipul
modelului observat, ceea ce ii ofera posibilitatea sa apeleze metodele modelului. View-ul
comunica deaseamenea si cu controlerul, dar acesta nu-i poate apela decat metodele din clasa
de baza. Controlerul comunica cu amandoua: model-ul si view-ul si stie tipul ambelor
componente, deoarece acesta trebuie sa stie sa raspunda corect la orice input primit de la user.
15
Modelul claselor UI
Modelul de prezentare
Modelul de conversie
Modelul de validare
Modelul claselor UI
Modelul de prezentare:
Modelul de conversie:
Modelul Event-Listener
16
4. Limitele framework-ului
Nume de fisiere confuse paginile folosite in JSF se termina in .jsp, dar url-urile
folosite se termina in .faces sau .jsf, acestea pot cauza confuzii
Postback action - fiecare buton sau link activat va avea ca efect o actiune de
postback. Destul de problematic este exemplul in cazul in care sunt folosite
ferestre modale si o actiune de postback ca avea ca effect inchiderea respetivei
ferestre.
Componentele de tip dataTable solicita aceleasi date din bean la restore view
phase.Daca datele din bean sunt obtinute din baza de date, aceasta va avea impact
asupra performatei.
5. Utilitatea framework-ului
17
Cand expertii JSF au inceput sa lucreze la specificatiile JSF, acestia vroiau sa creeze
un framework care sa indeplineasca anumite conditii.
Sa fie user-friendly sa ofere posibilitatea de a crea aplicatii web prin drag and
drop de componente UI (asemanator cu Swing)
18
XML a fost dezvoltat de ctre un grup de lucru (XML Working Grup - cunoscut la
nceput ca i SGML Editorial Review Board) format sub auspiciile Consoriului World Wide
Web (W3C), n anul 1996.
Scopurile proiectate pentru XML sunt:
Trebuie s fie simplu de utilizat pe Internet/Intranet;
Trebuie s suporte o mare varietate de aplicaii;
Trebuie s fie compatibil cu SGML;
Trebuie s fie uor de scris programecare vor procesa documente XML;
Numrul facilitilor opionale din XML sunt reduse la minimum, ideal, la zero;
Documentele XML trebuie s poat fi citite uor de ctre utilizatori;
Proiectarea XML ar trebui s fie pregtit rapid;
Designul XML trebuie s fie formal i concis;
Documentele XML trebuie s fie uor de creat.
Problemele apar atunci cnd dorim s schimbm date ntre aceste programe. Trebuie s
realizm programe de conversie care s transmit datele de la program la altul, ceea ce
nseamn timp, resurse i rata de erori mai mare. Mai mult, sunt cazuri n care datele
nu sunt portabile de pe o platform pe alta.
De aceea, s-a pus problema gsirii unui format comun de stocare a datelor care s poat fi
recunoscut de toate programele i care s fie portabil de pe platforma pe alta. Astfel, a aprut
ideea descrierii datelor cu marcaje, Tag-uri. Un exemplu de cod XML utilizat :
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
Limbajul SQL
SQL (Structured Query Language) este n prezent, unul din cele mai puternice
limbaje structurate pentru interogarea bazelor de date relaionale.
Este un limbaj neprocedural i declarativ, deoarece utilizatorul descrie ce date vrea
s obin, fr a fi nevoie s stabileasc modalitile de a ajunge la datele respective. Nu poate
fi considerat un limbaj de programare sau unul de sistem, ci mai degrab face parte din
categoria limbajelor de aplicaii, fiind orientat pe mulimi. Foarte frecvent, este utilizat n
administrarea bazelor de date client/server, aplicaia client fiind cea care genereaz
instruciunile SQL.
Lansat iniial de IBM. Standardizat prima dat de ANSI, apoi ISO. Actualmente, ISO
92. Pentru c exist o standardizare a limbajului SQL, multe SGBD (Oracle, Access, Sybase)
recunosc principalele instruciuni ale acestuia.
Caracteristicile adugate standardului se numesc extensii. De ex, n standard sunt
specificate 6 tipuri diferite de date pentru o BD SQL. n multe implementri, aceast list este
completat cu o diversitate de extensii. Fiecare implementare se numete dialect. Dialectul
ACCSES conine unele particulariti, fiind conceput mai mult pentru crearea interogrilor de
selecie.
Exist 3 metode de baz privind implementarea limbajului SQL:
apelare direct (Direct Invocation): const n introducerea instruciunilor direct de la
prompter
modular (Modul Language): folosete proceduri apelate de programele aplicaie
20
21
4. Platforma Android
Applications layer
Kernel-ul Linux, care include drivere pentru hardware, retea, accesul la fiierele din
sistem i comunicarea inter-proces.
23
Include, de asemenea, Java Development Kit, Apache Ant, i Python 2.2 sau o
versiune ulterioar.Mediul IDE este Eclipse (3.2 sau o versiune ulterioar);foloseste
Android Development Tools (ADT) Plugin.
Dalvik virtual machine- execut fiiere cu extensia .dex, provenite din fisiere cu
extensia .class.
Activity
Content Providers
Telephony
LocationManager
Resource Manager
24
Baza de date - API-ul Android contine suport pentru crearea i utilizarea bazelor de
date SQLite. Fiecare baz de date este asociata aplicaiei care o creeaz.Obiectul
SQLiteDatabase reprezint o baz de date ce contine metode pentru a interaciona cu
acesta - de interogri i gestionarea a datelor. Pentru crearea unei baza de date, se
apeleaza
rutina
SQLiteDatabase.create()
i,
de
asemenea,
subclasa
SQLiteOpenHelper.
Un serviciu Web (Web Service) este o aplicatie Web de tip client-server, n care un server
furnizor de servicii (numit si "Service Endpoint") este accesibil unor aplicatii client (care nu
sunt de tip browser) pe baza adresei URL a serviciului. Serviciul Web si clientii si pot rula pe
platforme diferite si pot fi scrise n limbaje diferite,deoarece se comunic prin protocoale
standard HTTP, XML, SOAP, JSON, s.a. De aceea principalul merit al serviciilor Web este
acela c asigur interoperabilitatea unor aplicatii software implementate pe platforme diferite
si cu instrumente (framework-uri) diferite. In acelasi timp aplicatiile sunt slab cuplate
(loosely coupled), n sensul c mesajele schimbate sunt standard (self-contained) si
oricare dintre aplicatii nu presupune existenta la cellalt capt a altor facilitti dect cele
continute n standarde.
Furnizorul de servicii expune un API pe Internet, adic o serie de metode ce pot fi apelate
de clienti. Aplicatia client trebuie s cunoasc adresa URL a furnizorului de servicii si
metodele prin care are acces la serviciul oferit (nume, parametri, rezultat). Interfata API este
limitat la cteva operatii n cazul serviciilor de tip REST si nelimitat ca numr si ca
diversitate a operatiilor n cazul serviciilor de tip SOAP.
Diferenta dintre o aplicatie Web clasic si un serviciu Web const n principal n formatul
documentelor primite de client si a modului cum sunt ele folosite : ntr-o aplicatie Web
clientul primeste documente HTML transformate de un browser n pagini afisate, iar clientul
unui serviciu Web primeste un document XML (sau JSON) folosit de aplicatia client, dar care
nu se afiseaz direct pe ecran (dect n anumite programe de verificare a serviciilor Web).
Pentru comparatie vom folosi exemplul unui client care foloseste un browser pentru a intra
pe un site ca s afle rata de schimb ntre dou valute , dar o aplicatie de comert electronic va
apela un serviciu Web cu rate de schimb pentru a calcula si comunica clientilor suma de plata
n valuta local.
Din punct de vedere al tehnologiilor folosite exist dou tipuri de servicii Web:
- Servicii de tip REST ( RESTful Web Services), n care cererile de la client se exprim prin
comenzi HTTP (GET, PUT, POST,DELETE), iar rspunsurile sunt primite ca documente
XML sau JSON;
- Servicii de tip SOAP (Simple Object Access Protocol), n care cererile si rspunsurile au
forma unor mesaje SOAP (documente XML cu un anumit format) transmise tot peste HTTP.
In astfel de servicii furnizorul expune si o descriere a interfetei API sub forma unui document
WSDL (Web Service Description Language), care este tot XML si poate fi prelucrat de client.
Un client trebuie s cunoasc metodele oferite de ctre Service Endpoint, pe care le poate
afla din descrierea WSDL.
Serviciile de tip SOAP ofer mai mult flexibilitate, o mai bun calitate a serviciilor si
interoperabilitate dect serviciile REST si sunt recomandate pentru un API mai mare oferit
clientilor. Serviciile de tip SOAP pot fi combinate pentru realizarea de operatii complexe,
ceea ce a condus la o arhitectur orientat pe servicii (SOA=Service Oriented Architecture).
In JEE cele dou tipuri de servicii sunt numite JAS-RS (REST) si JAX-WS (SOAP),
iar JavaEE Tutorial contine o comparatie ntre avantajele si limitele fiecrei solutii si
recomandri privind alegerea uneia sau alteia.
Majoritatea serviciilor Web reale sunt de tip SOAP, dar exist si cteva servicii de tip
REST notabile : Amazon S3 (Simple Storage Service) pentru memorarea si regsirea de
obiecte, reteaua Twitter si alte site-uri de blog, n care se descarc fisiere XML n format RSS
sau Atom cu liste de legturi ctre alte resurse.
Ca exemple de servicii SOAP larg utilizate sunt servicii pentru rate de schimb ntre diferite
valute, servicii bancare pentru verificare si operare n conturi (de ctre aplicatii Web de
comert electronic, de exemplu), servicii de memorare si regsire date, s.a.
Exist mai multe instrumente software pentru dezvoltarea de servicii Web pe platforma
Java, dintre care mai cunoscute sunt:
26
27
Web API este o extindere in Web Services, al carei scop este de a trece de la serviciile de
tip SOAP la comunicatiile de tip Representional State Transfer (REST). Serviciile de tip
REST nu necesita API-urile XML, SOAP sau WSDL.
Web API-urile permit combinarea mai multor Web Services in aplicatii noi cunoscute si ca
mashups.
Cand sunt folosite in cadrul Web development-ului, Web API este definit ca un set mesaje
HTTP impreuna cu o definitie a structurii mesajelor raspuns, de obicei sub forma de XML sau
de JSON (JavaScript Object Notation).
Utilizari
Cele mai folosite sunt RPC, SOA si REST.
28
1.Daca cunoastem ca unica interfata la WS este prin SOAP, este natural ca arhitectura
aplicatiei sa fie definita ca urmarind SOA.
2.Daca WS este RESTful, construirea aplicatiei pentru a urmari principiile REST este
adecvat. Fiecare componenta a unei aplicatii poate fi construita intr-o modalitate, iar alta intro modalitate diferita .Aplicatia ca intreg orice stil arhitectural care este necesar pt. proiect
(client/server, Model-View- Controller MVC, etc.), pe cand componentele urmaresc
propriile modele pe cat ai eficient posibil
29