PROGRAMUL DE STUDII DE LICENT A : Informatic a [604509]
UNIVERSITATEA DE VEST DIN TIMIS OARA
FACULTATEA DE MATEMATIC A S I INFORMATIC A
PROGRAMUL DE STUDII DE LICENT A : Informatic a
LUCRARE DE LICENT A
COORDONATOR: ABSOLVENT: [anonimizat]./Conf./Lect. Dr.Fortis ,Florin Precup Paul-Alexandru
TIMIS OARA
2020
Abstract
rezumatul in limba engleza
2
Cuprins
0.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1 Prezentarea Problematicii 6
1.0.1 Fundat ,ia Free Software . . . . . . . . . . . . . . . . . . . . . . . 6
1.0.2 Utilizarea minimal a de resurse . . . . . . . . . . . . . . . . . . . 7
1.0.3 Abord ari existente . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Implementare 8
2.1 Arhitectura aplicat ,ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Facilit at ,i aplicat ,ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Detalii de implementare . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.3 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.4 VLCJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.5 MYSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.6 Spring Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.7 RealTime Transport Protocol . . . . . . . . . . . . . . . . . . . 21
2.3.8 WEB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Aplicat ,ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Bibliography 23
3
0.1 Introducere
Transmiterea informat ,iilor este un interes al umanit at ,ii din timpuri antice. Originile
limbajului, prima form a complex a de transmitere a datelor, se presupun a data de
mai bine de 200.000 de ani ^ naintea erei noastre. Aceasta a evoluat odata cu uma-
nitatea, iar dupa 170.000 ani au ap arut primele forme vizuale de comunicare. Tot ^ n
aceeas ,i perioad a umanitatea s altat enorm de mult datorit a scrisului cuneiform creat
de sumerieni.
Dorint ,a oamenilor de a comunica a dus la crearea alfabetului fonetic, care a fost
foarte r asp^ andit ^ n Grecia s ,i lumea mediteranean a ^ n jurul anilor 1050 ^ naintea erei
noastre.
Oamenii au adus moduri noi s ,i inovative pentru a putea comunica, iar astfel primele
ziare apar ^ n epoca renas ,terii ^ n Germania, anul 1400 sub form a de pam
ete. Acestea
erau scrise de m^ an a s ,i cont ,ineau informat ,ii despre r azboaie, economie s ,i alte interese
umane, circul^ and ^ n mod privat printre negustori. Unul dintre cele mai importante
pam
ete de acest gen prezint a atrocit at ,ile unui voievod sadistic din Transilvania asupra
germanilor. Acest voievod nu este nimeni altul dec^ at Vlad T ,epes ,Dracul, ce a fost
cunoscut apoi dup a numele Dracula.
^In anul 1826, francezul Joseph Nicephore Niepce inventeaz a prima camer a fotogra-
c a, iar la scurt timp,^ n 1876, Alexander Graham Bell inventeaz a telefonul electric.Anii
1900 aduc oamenilor tehnologii noi, pentru transmiterea informat ,iilor, precum apara-
tul radio, lmele s ,i televizorul.
Epoca informat ,iei a ^ nceput c atre nalul secolului 20 odat a cu inventarea tranzis-
torilor, schimb^ and complet rata de transfer a informat ,iilor.^In zilele de ast azi, rata
transferului de date este at^ at de mare ^ nc^ at informat ,ia simpl a, precum mesajele, este
transferat a aproape instantaneu. Oamenii pot transfera ^ ntr-o secund a mai mult dec^ at
pot citi ^ ntr-o zi,iar astfel evolut ,ia comunic arii a adus numeroase avantaje.
Ast azi, schimbul de informat ,ii video este o problem a la care ^ nc a se
perfect ,ioneaz a o solut ,ie.^Intr-un mod ideal am transfera informat ,ie video cu o cla-
ritate mai mare dec^ at poate percepe ochiul uman, ^ n orice colt ,al lumii s ,i nu numai.
Principalul avantaj al tehnologiei din ziua de ast azi este viteza enorm de mare de
transfer. Acest
ux mare de informat ,ie, disponibil pentru toat a lumea, scade cantitatea
de informat ,ie stocat a. Natura uman a dicteaz a ^ n as ,a fel ^ nc^ at lucrurile procurate us ,or
prezint a un mare dezinteres de a-l det ,ine.
Aceast a lucrare abordeaz a ideea de a transmite informat ,ii video rapid s ,i ecient,
ocup^ and put ,in spat ,iu de stocare. Informat ,ia video este cea mai complex a form a de
comunicare de p^ an a acum. Dezvoltat a init ,ial pentru televizoarele mecanice, tehnologia
video avea s a evolueze din format analog, care transmitea informat ,ii doar live, ^ n
tehnologie digital a. Cu ajutorul internetului de mare vitez a, datele video au evoluat
^ n streaming video ^ ntrucat s ,i utilizatorul poate transmite informat ,ii.
Streaming-ul video este cont ,inut comprimat transmis prin intermediul internetului
s,i as ,at ^ n timp real utilizatorului. Cu ajutorul acestui serviciu, un utilizator nu mai
are nevoie s a descarce cont ,inut video s ,i apoi s a-l redea local. Utilizatorul are nevoie
doar de un software pentru redare video ce poate decomprima s ,i reda datele, f ar a a
avea nevoie de stocarea lor. Aplicabilitatea streaming-ului in timp real este innit a.
Cele mai comune aplicat ,ii sunt:
Cres ,terea securit at ,ii, ^ nregistr^ and orice mis ,care
4
Screen-sharing, oferind posibilitatea utilizatorilor s a se ajute unul pe cel alalt.
Video-conferint ,e, unde prezent ,a zic a nu este necesar a deoarece ecare utilizator
are un dizpozitiv capabil s a lmeze s ,i sa transmit a c atre celorlalt ,i participant ,i.
Transmiterea^ n timp real a s ,ierelor media f ar a a le stoca ^ n computer.
Tema acestei lucr ari este Live-streamul. Printre cele mai importante platforme ce ofera
unui utilizator acest serviciu este Youtube. Pe aceast a platform a ecare utilizator
poate ^ nc arca s ,i reda s ,iere oriunde dores ,te, e ca sunt s ,ierele proprii sau ale altui
utilizator. Dezavantajele acestei platforme apar c^ and un utilizator dores ,te s a vad a un
lm lung cu o claritate mare sau c^ and acesta ^ s ,i asculta playlistul propriu f ara cont ,inut
video.
Aplicat ,ia creat a^ n cadrul acestei lucr ari suprim a dezavantajele mai sus ment ,ionate.
Utilizatorul poate alege orice s ,ier video pentru a-l reda, cu minimul de performant , a,
f ara a avea nevoie de un browser web ce consum a resurse. De asemenea, c^ and utilizato-
rul dores ,te sa asculte muzic a, acestuia i se va reda doar cont ,inutul audio, astfel folosind
mai put ,ine resurse. Aceast a lucrare este^ mpart ,it a in Rezumat, Introducere, Descrierea
problemei, Abord ari existente, Arhitectura aplicat ,iei, Facilit at ,i ale aplicat ,iei, Detalii
de implementare, Exemple de utilizare, Concluzii s ,i Direct ,ii viitoare de dezvoltare.
introducere
5
Capitolul 1
Prezentarea Problematicii
Problema la care ^ s ,i propune sa r aspund a aplicat ,ia creat a ^ n cadrul acestei lucr ari
de licent , a este transmiterea local a a unui stream audio-video ce se poate adapta la
nevoile individuale a utilizatorilor.Streamingul local de s ,iere media nu prezint a riscuri
deoarece informat ,iile utilizatorului nu sunt transmise ^ n afar a. Datorit a faptului c a
majoritatea programelor de media streaming sunt closed source, posibilitatea de a
modica diferite particularit at ,i de c atre utilizator este absent a.
1.0.1 Fundat ,ia Free Software
Este esent ,iala ^ nt ,elegerea problemei lipsei transparent ,ei din aplicat ,iile software deoa-
rece acestea nu ofer a posibilitatea de a avea acces la codul surs a s ,i la toate informat ,iile
pe care utilizatorul le acceseaza sau ^ nregistreaza. Cu trecerea timpului se poate ob-
serva o cres ,tere^ n ceea ce prives ,te^ ngrijorarea oamenilor^ n leg atura cu datele personale
s,i informat ,iile det ,inute sau folosite de c atre aplicat ,iile acestora. ^In acest sens fundat ,ia
non-prot, Free Software, creat a de Richand Stallman ^ n anul 1985 avea sa promoveze
libertatea de a studia, distribui, crea s ,i modica programe software. Software-ul liber
este caracterizat de patru forme de libertate s ,i anume:
Libertatea de a utiliza programul dupa cum dorit ,i, ^ n orice scop
Libertatea de a studia modul de funct ,ionare a programului, s ,i de a-l adapta
nevoilor proprii. Accesul la codul-surs a este o precondit ,ie pentru aceasta.
Libertatea de a redistribui copii, ^ n scopul ajutor arii aproapelui t au.
Libertatea de a ^ mbun at at ,i programul, s ,i de a pune ^ mbun at at ,irile la dispozit ,ia
publicului, ^ n folosul ^ ntregii societ at ,i.
Un program liber trebuie s a ofere cele patru libert at ,i oric arui utilizator care obt ,ine
o copie a software-ului, cu condit ,ia c a utilizatorul s-a conformat condit ,iilor licent ,ei
libere care acoper a software-ul. L asarea la o parte a unor libert at ,i unor utilizatori,
sau solicitarea unei pl at ,i, ^ n bani sau alt a form a, pentru a putea exercita aceste li-
bert at ,i, este echivalent cu neacordare libert at ,ilor sus ment ,ionate, s ,i astfel programul
este considerat neliber[Sta09].
6
1.0.2 Utilizarea minimal a de resurse
O alt a problem a confruntat a de utilizatori este tenidnt ,a de cres ,tere a resurselor consu-
mate de c atre aplicat ,ii.De asemenea claritatea s ,i implicit dimensiunea s ,ierelor media
a crescut considerabil, limit^ and astfel spat ,iul de stocare al acestora.
1.0.3 Abord ari existente
Flash Media Server este un server folosit pentru streaming Acesta ofer a posibilitatea
comunic arii ^ n timp real a aplicat ,iilor dezvoltate ^ n cadrul Macromedia Flash 8. Con-
exiunea str^ ans a dintre client s ,i server ^ mpreun a cu abilitatea precis a a serverului ofer a
dezvoltatorilor posibilitatea de a urm ari viteza de transfer a client ,ilor s ,i a corecta rata
de transfer a bit ,ilor.
Avantaje acestui server sunt:
Viteza mare de pornire a serverului
Ecientizarea folosirii resurselor
Nivelul ^ nalt al securit at ,ii
Raportarea evenimentelor
Des ,i Flash Media Server este un server rapid, abilitiatea acestuia de a reda doar
s,iere ^ n format FLV ofer a un mare dezavantaj. Acest format poate as ,at doar
cu ajutorul unui Flash Player pentru a vizualizate, dar din p acate suportul pentru
acesta va ^ nceta ^ n data de 31 decembrie 2020.[Mic19]
Aplicat ,ia creat a ^ n cadrul acestei lucr ari de licent , a are capabilitatea de a reda
aproape orice tip de s ,ier media folosind framework-ul vlcj. De asemenea aceasta
red a s ,ierele local pentru a evita eventualele probleme de conectivitate la ret ,eaua de
internet.
7
Capitolul 2
Implementare
2.1 Arhitectura aplicat ,ie
HomePlayer este o aplicat ,ie bazat a pe arhitectura client-server. Limbajul de progra-
mare ales pentru dezvoltarea aplicat ,iei s ,i serverului este Java. Pentru o comunicare
sigur a au fost folosite limbaje s ,i frameworkuri deja existente ce vor prezentate ^ n
detaliu ^ n sect ,iunile ce urmeaz a. T ,in^ and cont de complexitatea mecanismului de co-
municare ale serverului, acesta foloses ,te un set de standarde cum ar XML, HTTP,
RTSP pentru o conexiune mai stabil a. De asemenea, nevoia de o interfat , a web pro-
duce o cres ,tere a pachetului de tehnologii folosite. ^In urm atoarele sect ,iuni vet ,i reg asi
detalii ale celor mai importante tehnologii folosite.
Figura 2.1: Comunicarea server-client
8
2.2 Facilit at ,i aplicat ,ie
Redarea oric arui tip de s ,ier media aduce utilizatorului beneciul de a renunt ,a la un
num ar moderat de aplicat ,ii folosite pentru consumul de media. De asemenea
2.3 Detalii de implementare
Tehnologia este ^ ntr-o continu a evolut ,ie. Software-ul devine mai complex de la un an
la cel alalt. Pentru a folosi un num ar mare de tehnologii ^ ntr-o aplicat ,ie este nevoie de
utilizarea unui IDE (Integrated Development Environment). Pentru aceast a aplicat ,ie
s-a folosit Eclipse.
2.3.1 Eclipse
Eclipse a fost dezvoltat de IBM la nalul anilor 1990 pentru a dezvolta o platform a
comun a produselor IBM. Acest mediu de dezvoltare integrat a fost declarat open source
^ n anul 2001 pentru a atrage dezvoltatorii, permit ,^ and acestora incorporarea s ,i folosirea
IDE-ului Eclipse dupa bunul plac.
Acest nume a fost inspirat din numele companiei ce a creat Java, s ,i anume Sun
Microsystems sporindu-i popularitatea. Eclipse a dezvoltat peste zece produse, ma-
joritatea av^ and numele inspirat din numeroasele corpuri ceres ,ti precum Luna, Mars,
Galileo, Juno, Ganymede.
Dezvoltarea aplicat ,iei folosind Eclipse
Oferind un pachet mare de unelte pentru dezvoltare, Eclipse poate dezvolta orice tip
de proiect, dar cel mai comune sunt proiectele Java.
La deschiderea programului, utilizatorul este rugat s a specice locat ,ia folderului
folosit pentru spat ,iul de lucru sau unde dores ,te s a-l creeze. La crearea unui proiect
nou, Eclipse genereaz a folderele src, classpath s ,i bin.
Acest IDE ^ nlesnes ,te utilizarea frameworkurilor ^ ntruc^ at acestea pot
ad augate proiectului folosind dialogurile de alegere ale s ,ierelor. De asemenea calea
c atre folderul classpath este generat a automat.
Figura 2.2: Eclipse IDE
9
Eclipse pune la ^ ndem^ an a de asemenea sute de opt ,iuni, scurt aturi s ,i caracteristici
precum:
Generarea rapid a a metodelor de tip "set" s ,i "get" printr-o ap asare de mouse.
Compilarea permanent a a codului. La scrierea ec arui cuvant, Eclipse compi-
leaz a codul s ,i as ,eaza erorile de compilare existente.
Auto-completarea cuvintelor sau as ,area celor relevante, ecientiz^ and astfel tim-
pul de scriere a codului.
Generarea de s ,abloane folosind combinat ,ia de taste ctrl + space.
Eclipse intr a ^ n ajutorul programatorilor oferind acestora ferestre redimensionabile
ce pot mutate oriunde, cele mai folosite ind ferestrele: Consola,Problems, Javadoc,
Servers s ,i Debug. Acestea ajut a dezvoltatorii de programe ^ n toate etapele dezvolt arii
unui proiect. O alt a unealt a foarte folosit a este cea de debugging. Eclipse permite
folosirea unor puncte numite breakpoints ce opresc execut ,ia programului cand aceasta
ajunge la ele.
2.3.2 Java
Java, limbajul dezvoltat de Sun Microsystems ^ s ,i are ^ nceputurile ^ n 1991. Este un
limbaj de programare object-oriented, ceea ce ^ nseamn a c a este orientat c atre un lucru
bine denit, spre exemplu un atom, forma geometrica, etcetera. Aceste obiecte au
anumite caracteristici cunoscute ^ n programare ca s ,i atribute. Un obiect poate crea
operat ,ii denumite metode.
Java este un limbaj de nivel ^ nalt, foarte puternic s ,i versatil ce poate executat
pe aproape orice sistem de operare, incluz^ and Solaris, Linux s ,i Windows printre multe
altele, acesta ind folosit ^ n crearea aplicat ,iilor de pe telefon sau a jocurilor. Java
de asemenea permite jocurilor s a nu ocupe mult a memorie din telefoane, ceea ce a
dus la o compatibilitate s ,i vitez a mult mai mare.Acest limbaj de programare obis ,nuia
s a e actualizat ^ n ecare lun a, iar pe pagina Sun Oracle exist a un API (application
programming interface) ce permite dezvoltatorilor de pretutindeni s a se documenteze
despre metode sau cum s a creze operat ,ii ^ n funct ,ie de nevoi.
Java e un limbaj de programare folosit internat ,ional cu un mare succes ce a reus ,it s a
rezolve o mare parte din problemele programatorilor, ating andu-s ,i obiectivul principal.
Acesta a fost creat pentru a ^ mbunat at ,i productivitatea, s a e practic s ,i pentru a
aduce benecii programatorilor. De exemplu, Java se bazeaz a pe libr arii ce permit
programelor s a ruleze mai repede. Un programator poate folosi doar libr ariile ce
cont ,in funct ,iile necesare acceler arii proceselului de dezvoltare ale unui program.
10
Figura 2.3: Sigla companiei SunMicrosystems
Istoria limbajului Java
Java a fost conceput de James Gosling ^ n cadrul companiei Sun Microsystems ^ n anul
1990 ca software pentru o gam a larg a de procesoare.
Cele trei motive fundamentale pentru crearea limbajului Java au fost:
Cres ,terea necesit at ,ii unei interfet ,e mai intuitive pentru utilizatorul comun deo-
arece interfet ,ele deja existente nu se ridicau la nivelul astept arilor.
Facilitarea creerii de cod. Creatorul Java, James Gosling a observat costul ridicat
al dezvolt arii de cod precum C sau C++. Acesta s-a concentrat pe crearea unui
limbaj ce putea rezolva problemele celorlalte limbaje de programare.
Diversitatea piet ,ei de controllere electronice. Dispozitivele electronice folosesc
microprocesoare ieftine ce sunt frecvent schimbate si folosite cu seturi de instruct ,iuni.
Java permite scrierea unui cod comun pentru toate sistemele.
Tehnologia Java a fost creat a ca un tool de programare pentru proiectul STB. Acest
proiect a facut parte din operat ,iunea "The Green Project" fondat a ^ n 1991 de c atre
Sun Microsystems.Echipa era alc atuit a din 3 oameni s ,i coordonat a de James Gosling,
la care a lucrat optsprezece luni.
Init ,ial limbajul a fost numit Oak, dar acesta ind marc a ^ nregistrat a, a fost rede-
numit Green iar ulterior Java.
Numele de Java a fost inspirat din cafeneaua ^ n care echipa lui James obis ,nuia
s a ^ s ,i petreac a timpul. ^Inc a nu se s ,tie dac a acest nume este acronimul creatorilor s ,i
anume James Gosling, Arthur Van Ho s ,i Andy Bachtolsheim.
Scopul lui James a fost s a implementeze o mas ,in a virtual a s ,i un limbaj de pro-
gramare cu o sintaxe s ,i structur a asem anatoare limbajului C++. Dup a trei zile de
g^ andit intens, ^ n 1994, James Gosling, Joy Naughton, Wayne Rosing s ,i Eric Schmidt
s,i-au reorientat platforma c atre internet. Lansarea browserului Web Mosaic urma
s a fac a internetul un mediu mai interactiv. Naughton a creat prototipul de browser
WebRunner, cunoscut ^ n cele din urm a ca s ,i HotJava.
Java 1.0a a fost lansat publicului ^ n 1994, dar Java s ,i HotJava au avut de as ,teptat
p^ an a ^ n data de 23 mai 1995, iar promisiunea lui James Gosling :"Write once, run
anywhere" (WORA)[Lan02] a fost re
ectat a cu succes de platforma Java Virtual Ma-
chine. Pe data de 27 ianuarie 2010 compania Sun Microsystems a fost cump arata de
Oracle Corporation cu suma de 7.4 miliarde de dolari, ced^ and acesteia drepturile de
proprietate pentru limbajul Java. Aceast a achizit ,ie ^ ngrijoreaz a adept ,ii programelor
de tip "open source" din cauza faptului c a Sun Microsystems era un gigant competitor
al lui Oracle. James Gosling a demisionat ^ n urma acestei achizit ,ii ^ n luna aprilie 2010.
11
Caracteristici ale limbajului Java
^In Java, sistemele sunt mai us ,or de explicat s ,i ^ nt ,eles. Scriind cod, scrii o solut ,ie a
unei probleme. Erorile din Java sunt administrate folosind except ,ii, iar aceste except ,ii
notic a utilizatorul de erorile din cod. Folosindu-le ne us ,ur am controlul asupra pro-
gramelor complexe.
Compar^ and acest nou limbaj cu alte limbaje anterioare s-a tras o concluzie, s ,i
anume c a posibilit at ,ile devin innite.Java ajunge s a se descurce mai bine dec^ at ce-
lelalte limbaje. C^ and cineva dores ,te s a scrie un program ce poate as ,a pe ecran
mesajul "Salut lume!" nu are nevoia de a folosi POO, iar aceste caracteristici r am^ an
^ ntotdeauna la ^ ndem^ ana utilizatorului.
Java de asemenea ajut a programatorii s a sar a peste rescrierea unui cod ^ ntruc^ at se
pot genera obiecte interact ,ionabile. Prin unirea unei clase noi cu una deja existent a
rezult a o alt a clas a iar acest lucru se poate ^ nt^ ampla succesiv. Av^ and acces la modi-
carea claselor de tip "copil" s ,i a celor de tip "p arinte" putem discuta despre procesul
cunoscut ca s ,i mos ,tenire.
Java funct ,ioneaz a pe principiul multithreading adic a poate executa mai multe pro-
cese simultan. ^In timp ce unul din rele de executie interact ,ioneaz a cu utilizatorul,
celelalte se ocup a de calcule, animat ,ii, comunic ari.
Java poate genera dou a tipuri de programe, applet-uri sau aplicat ,ii independente
ce funct ,ioneaz a ^ mpreun a pentru a forma un program. Applet-urile sunt programe
mici ce apar pe pagini web capabile de a executa act ,iuni complexe precum animarea
imaginilor sau stabilirea conexiunilor web.
As ,adar Java este:
Simplu
Orientat pe obiecte
Dinamic
Securizat
Portabil
Independent de platform a
Robust
Java Virtual Machine
Java virtual machine este un proces nativ ce permite executarea unui cod binar special
generat de compilatorul Java.
Codul binar al limbajului Java nu este de un nivel ^ nalt, chiar din contr a, este un
limbaj simplist ce poate folosit pe orice microprocesor.
Rolul principal al JVM este de a ^ nc arca s ,i executa s ,iere de tip .class. Acesta
foloses ,te valori primitive s ,i referint ,e iar aceasta foloses ,te o arhitectura 32-bit.Datele
de tip long s ,i double, pe arhitectura 64-bit, sunt folosite nativ dar ocup a dou a unit at ,i
de stocare.
Class loaderul este responsabil de ^ ncarcarea s ,ierelor ce sunt transmise ^ n motorul
de executare. Acesta foloses ,te metode native de apelare pentru a comunica cu sistemul
de operare.
12
Figura 2.4: Arhitectura JVM
Componentele principale sunt:
Sistemul de ^ nc arcare al s ,ierelor
Zona de procesare a datelor
Motorul de execut ,ie
Pentru execut ,ia aplicat ,iilor^ n JVM, codul este compilat^ ntr-un s ,ier .class. Pentru
un control mai bun asupra programului, mai multe s ,iere .class pot ^ mpachetate ^ ntr-
o arhiva .jar.
Acest cod este executat de JVM printr-un compilator JIT precum HotSpot creat
de Sun Microsystems. Acest compilator transform a codul de octet ,i ^ n cod mas ,in a la
executare, iar acest lucru producea o cres ,tere a timpului de execut ,ie. Dezavantajul
era c a acest lucru producea o cres ,tere a timpului de complilare ^ ntruc^ at JVM veri-
ca ^ ntregul cod la ecare execut ,ie.^In versiunile ulterioare Java a reus ,it s a sporeasc a
performant ,ele semnicativ.
Java Swing
Dezvoltatorii Java au introdus ^ n versiunea Java 1.0 o clas a de libr arii numit a Abs-
tract Window Toolkit(AWT)[CSH01] pentru programarea interfet ,elor simple. Aceast a
13
libr arie ce promitea at^ atea lucruri programatorilor s-a dovedit a o mare b ataie de
cap ^ ntrucat elemente grace precum meniuri sau casete de text se comportau atipic
pe diferite platforme.
Libr aria grac a Internet Foundation Classes (IFC) a fost dezvoltat a de Netscape
Communications Corporation pentru Java s ,i lansat a pentru prima dat a ^ n data de 16
Decembrie 1996. Aceasta urma s a e inclus a ^ mpreun a cu alte tehnologii ale momen-
tului precum AWT pentru a forma JFC iar mai apoi redenumit a simplu, Swing[oN02].
Java Swing este o interfat , a grac a ce consum a put ,ine resurse care include o gam a
larg a de widgeturi. Acesta face parte din Java Fundation Classes s ,i include multiple
pachete utilizate ^ n dezvoltarea programelor Java. Swing include diferite metode de
control precum arbori, butoane radio, slidere s ,i liste.
Modelele oferite de Swing se pot ^ ncadra ^ n dou a categorii: modele de stare ale
interfet ,elor grace s ,i modele de date ale aplicat ,iilor.
Modelele de stare ale interfet ,elor denesc statutul vizual al unei interfet ,e precum
ap asarea unui buton sau observarea elementelor selectate dintr-o list a. Aceste date
sunt relevante doar ^ ntr-un context al unei interfet ,e grace.
Un model de date ale aplicat ,iilor este o interfat , a ce reprezint a o parte din datele
cuanticabile precum valoarea unei celule dintr-un tabel sau obiectele selectate dintr-
o list a. Aceste modele de date ofer a o paradigm a puternic a programelor Swing ce
folosesc o separare clar a ^ ntre date s ,i interfat , a.
Componenetele libr ariei Swing
Majoritatea componentelor Swing sunt derivate din clasa JComponent ce
mos ,tenes ,te clasa Container din libr aria AWT, oferind astfel metode pentru redimen-
sionarea s ,i pozit ,ionarea ec arui element.
Componentele grace sunt obiecte cu o reprezentare grac a bine denit a s ,i as ,ate
pe ecranul utilizatorului permit ,^ and acestuia s a interact ,ioneze cu ele. Acestea cores-
pund la orice instant , a a claselor mos ,tenite din javax.awt.Component sau
javax.swing.JComponent.
Event handlers
Interact ,iunea dintre utilizator s ,i interfat ,a grac a este realizat a prin act ,iuni numite
evenimente s ,i ascult atori. Orice interact ,iune sub form a de clickuri ale unui buton sau
ap asarea unei taste precum enter sau space sunt cunoscute de Java ca s ,i evenimente
iar metodele ce le gestioneaz a sunt event handlers. Acesta este codul ce dicteaz a
act ,iunea respectiv a.Aceste interact ,iuni sunt aplicate pentru Swing s ,i AWT,iar toate
evenimentele s ,i ascult atorii sunt subclase ale EventObject.
Evenimentele sunt gestionate de o metoda event listener ce primeste un singur
parametru, s ,i anume evenimentul respectiv. Metodele event listener trebuie s a e pe
c^ at de rapid posibile astfel c a scrierea unui cod complex pentru un eveniment trebuie
evitat. Ele se pot ^ mp art ,i ^ n dou a categorii, evenimente semantice s ,i evenimente de
grad inferior. Evenimentele de grad inferior sunt evenimente exclusiv date de utilizator
iar cele de tip semantice sunt cele care primesc un eveniment venit dintr-o component a
grac a Java.
Se recomand a folosirea pe c^ at posibil a a ascult atorilor evenimentelor semantice
pentru a cres ,te portabilitatea s ,i ecient ,a programelor.
14
Figura 2.5: ^Incadrarea componentelor folosite de Java Swing
15
Fire de execut ,ie Java
Firele de execut ,ie sunt un aspect important al ec arui limbaj de programare. Aceste
re se coreleaz a cu abilitatea de a executa mai multe act ,iuni concomitent. ^In cazul unui
player media, num arul de act ,iuni este mic, dar programul proceseaz a datele media, le
red a s ,i as ,teapt a comenzi de la utilizator.
Java se axeaz a pe genstionarea relor de execut ,ie. Fiecare proces foloses ,te cel put ,in
un r de execut ,ie. Acestea sunt folosite pentru a act ,iona procese ^ n mod asincron sau
^ n fundal, pentru a cres ,te viteza de r aspuns al interfet ,elor, ind un avantaj pentru
sistemele cu multiprocesoare. Procesele ^ s ,i ^ mpart memoria, resursele s ,i s ,ierele prin
intermediul relor de execut ,ie, cresc^ and astfel ecient ,a lor.
Sunt trei tipuri de re de execut ,ie ^ n Swing:
Firul de execut ,ie init ,ial ce este punctul de plecare al oric arui program. Acesta
este de obicei unul singur ce invoc a metoda main, iar ^ n appleturi sunt invocate
metodele init s ,i start.
EDT (event dispatching thread) este un r de execut ,ie rulat ^ n fundal folosit
pentru a procesa evenimentele AWT sau Swing.
Firul de execut ,ie al proceselor foloste ^ n fundal.
Problema principal a a folosirii relor de execut ,ie este consistent ,a memoriei c^ and
dou a re de execut ,ie acceseaz a aceeas ,i parte a memoriei. Pentru a evita aceast a eroare
este nevoie ca programatorul s a s ,tie c^ and o variabil a este accesat a de un r de execut ,ie
sau altul s ,i s a le foloseasc a ^ ntr-un mod convenient, iar ^ n cazul ^ n care accesul la o
variabil a nu este unul sigur, trebuie folosit un bloc de comenzi sincronizate.
2.3.3 REST
REST sau representational state transfer este un stil arhitectural folosit pentru asigu-
rarea standardelor serviciilor web, facilit^ and astfel comunicarea sistemelor. Sistemele
RESTful sunt caracterizate de separarea s ,i independent ,a dintre client s ,i server.
Separarea dintre client s ,i server
Stilul arhitectural REST permite implementarea serverului s ,i a clientului independent,
f ar a ca aces ,tia s a se s ,tie ^ ntre ele. Acest lucru ^ nseamn a c a utilizatorul poate modica
oric^ and clientul f ar a a afecta serverul s ,i vice-versa.C^ at timp ecare parte s ,tie formatul
mesajelor trimise, acestea pot p astrate modulare s ,i separate. Separ^ and interfat ,a
grac a de modul de stocare al datelor se ecientizeaz a
exibilitatea interfet ,elor ^ ntre
platforme s ,i simplic a componentele serverului. ^In plus, aceast a separare permite
ec arui component s a evolueze independent. Folosind o interfat a REST, cliente diferite
pot performa aceleas ,i act ,iuni s ,i primi aceleas ,i r aspunsuri.
Apatridie
Sistemele ce folosesc paradigma Rest sunt apatridice, ^ nsemn^ and c a serverul nu trebuie
s a s ,tie nimic despre starea clientului sau invers. ^In acest fel clientul s ,i serverul pot
^ nt ,elege mesajele primite f ar a a cunoas ,te mesajele anterioare.
16
Apatridia REST este dat a de folosirea resurselor ^ n loc a comenzilor. Resursele
sunt substantivele Web-ului, descriind orice obiect, document sau s ,ier ce se poate
stoca sau trimite altor servicii.
Deoarece sistemele REST interact ,ioneaz a cu operat ,ii standarde pe resusre, acestea
nu depind de implementarea interfet ,elor. Aceste constr^ angeri ajuta aplicat ,iile RESTful
s a ating a perfomant ,e ^ nalte deoarece componentele pot actualizate, administrate s ,i
refolosite f ar a a afecta ^ ntreg sistemul, chiar s ,i ^ n timpul oper arii sistemului.
Comunicarea server-client
^In cadrul arhitecturii REST, clientul trimite cereri pentru a primi sau modica resurse,
iar serverul r aspunde la acestea. De obicei cererile sunt de tip:
HTTP
Header
URI
^In cazul cererilor de tip HTTP (HyperText Transfer Protocol), sitemul REST
foloses ,te patru verbe s ,i anume:
GET primes ,te o resursa specicat a sau o colect ,ie de resurse.
POST creaz a o nou a resurs a.
PUT actualizeaz a o resurs a specicat a.
DELETE sterge resursa.
Cererile Header specic a tipul de cont ,inut trimis de server. Acestea accept a s ,i se
asigur a c a serverul nu trimite informat ,ii ce nu pot interpretate sau procesate de
c atre client. Opt ,iunile tipurilor de date sunt de tip MIME(Multipurpose Internet Mail
Extensions).
Tipurile MIME, folosite pentru a specica tipul de cont ,inut acceptat, consist a ^ n
type s ,i subtype, separate prin slash.De exemplu, un s ,ier text ce cont ,ine informat ,ii de
tip HTML sunt specicate prin sintaxa text/html, iar in cazul s ,ierelor CSS, acestea
sunt specicate cu ajutorul sintaxei text/css.
Printre alte tipuri s ,i subtipuri folosite des se num ar a:
image – image/png, image/jpeg, /image/gif
audio – audio/wav, image/mpeg
video – video/mp4, video/ogg
application- application/json, application/pdf
Fiecare resurs a poate identicat a dup a id-ul URI al acesteia, dar dou a resurse
nu pot accesate prin acelasi id. URI este numele s ,i adresa unei resurse.
17
2.3.4 VLCJ
Vlcj, creat s ,i ment ,inut de Caprica Software Limited, este un framework Open Source
care este folosit pentru a incorpora un player media VLC ^ n aplicat ,iile Java. Utilitatea
acestui framework este dat a de abilitatea de a crea diferite tipuri de aplicat ,ii media
precum playere audio, playere pentru lme, cliente s ,i servere pentru streaming, aplicat ,ii
pentru procesarea video s ,i nu numai.[Lim14]
Vlcj pune la dispozit ,ie leg aturi Java tuturor funct ,ionalit at ,ilor native furnizare
prin LibVLC s ,i un mediu de programare cu clase s ,i constructe de nivel superior ce
^ ncapsuleaza, dac a nu toate, majoritatea dicult at ,ilor ^ nt^ ampinate ^ n lucrul cu Lib-
VLC.
Frameworkul vlcj de asemenea previne pe cat de mult posibil utilizarea incorect a
a libr ariilor native ce pot duce la terminarea fortata a aplicat ,ie. De exemplu, vlcj
^ ncapsuleaz a complet manipularea evenimentelor asincrone native media ^ nregist^ and
apeluri iar mai apoi lans^ andu-le ^ ntr-un mod familiar Java. Manipularea incorect a a
evenimentelor de asemenea poate provoca terminarea programului. Vlcj previne acest
lucru s ,i le manipuleaz a^ n as ,a fel^ nc^ at programul nu sufer a probleme de aceast a natur a.
Proiectul VLCJ ofer a acces c atre majoritatea libr ariilor LibVLC, iar acest lucru face
posibil a redarea tuturor formatelor media, streamingul ^ ntr-o ret ,ea local a sau internet
s,i chiar publicarea cont ,inutului media ^ n aplicat ,ii ale serverurilor precum stat ,iile radio
web sau video-on-demand.[Lim14]
LibVLC
LibVLC[Dox] este o interfat , a a playerului VLC folosit a pentru a-l integra ^ n diferite
aplicat ,ii sau medii de lucru.
Figura 2.6: Diagrama modulelor ce alc atuiesc LibVLC
^In gura 2.6 observ am modulele ce alc atuiesc libraria VLC:
LibVLC renderer discoverer: acesta descoper a terminale de randare disponibile
pe ret ,eaua local a.
LibVLC time: aceste funct ,ii ofer a acces la ora LibVLC.
LibVLC media list player: redarea unui s ,ier libvlc media listt ^ ntr-o anumit a
ordine.
LibVLC media player: redarea un s ,ier media.
18
LibVLC media: o reprezentare abstract a a unui s ,ier media.
LibVLC media list: stocheaz a s ,iere de tip media descriptor libvlc media t.
LibVLC core: modulul ce se ocup a de init ,ializarea LibVLC.
LibVLC media discovery: descoper a s ,ierele media disponibile prin diferite me-
tode.
19
2.3.5 MYSQL
MySQL s ,i-a f acut aparit ,ia ^ n 1995 s ,i a fost folosit ^ mpreun a cu Linux. ^In data de 8
ianuarie 1998 acest program avea s a e dezvoltat s ,i pentru platforma Windows d^ and
astfel nas ,tere stivei WAMP ( Windows Apache MySQL PHP).
MySQL este un sistem de gestionare a bazelor de date relat ,ionale folosit de obicei
pentru aplicat ,iile online. Acest program poate crea s ,i administra baze de date utile
folosite de un num ar foarte mare de utilizatori. Bazele de date sunt structuri ce
stocheaz a ^ n mod organizat informat ,ii. Majoritatea site-urilor e-commerce folosesc
baze de date pentru a ment ,ine evident ,a produselor dar s ,i informat ,iile cump ar atorilor.
Aceste site-uri folosesc un sistem de gestionare al bazelor de date precum MySQL.
Stoc^ and informat ,iile ^ n baza de date, acestea sunt mult mai usor de accesat, sortat s ,i
actualizat oferind o
exibilitate important a. Bazele de date relat ,ionale sunt capabile
s a recunoasc a relat ,iile dintre informat ,iile stocate.
MySQL este folosit ca mijloc de a stoca datele aplicat ,iilor mari de pe internet
precum FaceBook, WordPress, GitHub, Tesla, Nasa, Net
ix, etc. Acesta creaz a o
baz a de date pentru stocarea s ,i manipularea datelor, denind relat ,iile dintre tabele.
Clientul face o cerere c atre server printr-o sintax a specic a SQL iar mai apoi serverul
va raspunde cu informat ,ia ceruta as ,^ and-o pe partea de client.
MYSQL Workbench
MySQL Workbench este o interfat , a grac a us ,or de folosit pentru a lucra cu baze de
date. Aceasta integreaz a dezvoltarea, administrarea, modelarea, crearea s ,i mentenant ,a
SQL ^ ntr-o singur a aplicat ,ie.
Figura 2.7: MySQL Workbench
20
2.3.6 Spring Boot
Figura 2.8: Spring Logo
Spring Boot este un framework open source Java folosit pentru crearea unui micro
service. Este dezvoltat de Pivotal Team, scopul lui ind implementarea programe-
lor stand-alone s ,i production ready spring. Printre avantajele folosirii Spring Boot
se num ar a cres ,terea productivit at ,ii, reducerea timpului de dezvoltare a programelor
s,i us ,urint ,a de ^ nt ,elegere s ,i dezvoltare a aplicat ,iilor spring. Spring Boot congureaz a
automat aplicat ,ia baz^ andu-se pe dependent ,ele setate ^ n proiect folosing adnotarea
@EnableAutoConguration. ^In cazul ^ n care o baz a de date MYSQL se a
a ^ n class-
path dar nu este congurat a nici o conexiune, Spring Boot auto-congureaz a o baz a
de date ^ n memorie.
2.3.7 RealTime Transport Protocol
RTP denes ,te un format standard de pachete folosit pentru transmiterea informat ,iilor
media audio-video ^ ntr-o ret ,ea. Dezvoltat de Audio/Video Transport Working Group
^ n 1996, acest protocol este folosit ^ n sistemele de comunicare s ,i divertisment ce implic a
transmiterea de informat ,ii audio-video precum telefonie, video conferint ,e sau servicii
de televiziune. RTP nu garanteaz a integritatea s ,ierelor transmise sau timpul ^ n care
acestea ajung, iar acest lucru a dus la crearea RTCP (Real-time Transport Control
Protocol).
RTP este folosit ^ n conjunct ,ie cu RTCP, cel din urm a monitoriz^ and s ,i asigur^ andu-
se c a datele transmise nu se pierd. RTCP de asemenea ajut a sincronizarea
uxurilor
multiple.
Avantajele s ,i utilizare
Dup a cum implic a s ,i numele lui, RTP are ca scop transmiterea ^ n timp real a datelor
media. RIP include mecanisme ce previn bruiajul s ,i detecteaz a pierderile de pachete.
RTP permite transferul datelor c atre multiple puncte nale ^ n paralel prin multi-
castul IP astfel c a este standardul principal pentru transmiterea audio-video ^ n ret ,ea.
Mecanismul RTP este implementat la nivelul aplicat ,iei, nu la nivelul sistemului de
operare.
The mechanisms for the associated prole and payload format, referenced in the
design of the RTP architecture, are implemented on the level of the application layer,
instead of the operating system layer.
21
2.3.8 WEB
HTML
HTML este un limbaj folosit pentru dezvoltarea paginilor web as ,ate ^ ntr-un brow-
ser.Acesta a fost dezvoltat s ,i ment ,inut de World Wide Wev Consortion(W3C). Scopul
lui este prezentarea de informat ,ii pe o singur a pagin a folosind un software specializat
numit HTML user agent ce se a
a ^ n ecare browser.
Acesta ofer a modurile ^ n care cont ,inutul unui document poate adnotat cu di-
ferite tipuri de meta-data s ,i indicat ,iile pentru as ,are. Aceste indicat ,ii pot varia
de la decorat ,ii ale textului precum sublinierea acestuia p^ an a la scripturi complexe.
Informat ,ia meta-data include titlul documentelor, autorul, structura, paragrafele, et-
cetera, dar s ,i informat ,ii utile privind leg aturile dintre pagini.
Formatul HTML este unul bazat pe text, conceput pentru a citi s ,i edita informat ,iile
^ ntr-un editor de text. Existent ,a editorilor graci au adus o cres ,tere substant ,ial a a
us,urint ,ei de a crea s ,i ^ ntet ,ine paginile WEB, trat^ andu-le ca pe documente Word.
Folosirea unui astfel de editor cres ,te substant ,ial viteza de scriere a codului HTMl,
dar din p acate acesta are o calitate sc azut a.
Pagninile HTML sunt alc atuite din etichete ce au extensia "html". Majoritatea
etichetelor sunt compuse din sintaxe ^ mperecheate, una folosit a pentru a deschide s ,i
respectiv ^ nchide eticheta.
Principala sintax a folosit a pentru a putea as ,a o pagin a HTML este <html> </html>.
Aceasta trebuie s a se a
e la ^ nceputul documentului respectiv la nalul acestuia.
Majoritatea etichetelor au propriet at ,i sau atribute ce ofer a o mare varietate funct ,ionalit at ,ilor
vizuale sau logice. Browserul interpreteaz a etichetele as ,^ and rezultatele pe ecran.
2.4 Aplicat ,ie
HomePlayer ^ mbin a toate tehnologiile ment ,ionate anterior, ind o aplicat ,ie creat a ^ n
Java
22
Bibliograe
[CSH01] Gary Cornell Cay S. Horstmann. Core Java 2: Fundamentals . 2001.
[Dox] Doxygen. Libvlc. https://www.videolan.org/developers/vlc/doc/
doxygen/html/group__libvlc.html . Accesat la data de: 15-03-2019.
[Lan02] Nick Langley. Write once, run anywhere. https://www.computerweekly.
com/feature/Write-once-run-anywhere , 2002. Accesat la data de: 14-03-
2019.
[Lim14] Caprica Software Limited. Vlcj 4.4.4 api documentation, 2014.
[Mic19] Microsoft. Adobe
ash end of support on december 31, 2020.
https://docs.microsoft.com/en-us/lifecycle/announcements/
adobe-flash-end-of-support , 2019. Accesat la data de: 30-10-2019.
[oN02] Andrea Cook of Netscape. Sun and netscape to jointly develop java foun-
dation classes. https://web.archive.org/web/20120509230952/http:
//www2.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=%2Fwww%
2Fstory%2F84048&EDATE= , 1997-04-02. Accesat la data de: 01-04-2019.
[Sta09] Richard Stallman. Ce este software-ul liber? https://www.gnu.org/
philosophy/free-sw.ro.html , 2009. Accesat la data de: 21-03-2019.
23
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: PROGRAMUL DE STUDII DE LICENT A : Informatic a [604509] (ID: 604509)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
