(Asis. Dr. Irina Tudor) [628673]

UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE ȘTIIN ȚE EXACTE
SPECIALIZAREA INFORMATICĂ/ DEZVOLTAREA
APLICAȚIILOR FOLOSIND JAVAFX

LUCRARE DE LICENȚĂ

Coordonator:
(Asis. Dr. Irina Tudor)

Absolvent:
(Simion Marian Catalin)

CRAIOVA
2020

2

Cuprins
CAPITOLUL 1 – INTRODUCERE ………………………….. ……….. 1

 1.1 LIMBAJUL DE PROGRAMARE JAVA

 1.1.1 Caracteristici ale limbajului Java

 1.1.3 Evoluția limbajului Java

 1.2 JavaFX

 1.2.1 Evoluția limbajului JavaFX

 1.2.2 Avantajele limbajului JavaFX

CAPITOLUL 2 – MEDIUL DE LUCRU ………………………….. … 2

 2.1 Eclipse

 2.1.1 Arhitectura

 2.2 JAVAFX SCENE BUILDER

3

 2.2.1 Arhitectura

CAPITOLUL 3 – DESCRIEREA APLICATIEI ……………………. 3
 3.1 Structura Aplicației
 3.2 Rularea Aplicației

CAPITOLUL 4 – CONCLUZII ………………………….. …………….. 4
CAPITOLUL 5 – BIBLIOGRAFIE ………………………….. ……….. 5

4

Aplicația Storage
INTRODUCERE

1.1 LIMBAJUL DE PROGRAMARE JAVA

Java este un limbaj de programare orientat obiect consacrat. Cele mai multe aplicații
distribuite sunt scrise in Java, iar evoluțiile tehnologice permit utilizarea sa pentru dispozitive
mobile gen telefon, agend ă electronic ă etc. în felul acesta se creeaz ă o platform ă unică, la
nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat.

Avantajele sunt evidente, at ât pentru proiectanți, care “scriu o dat ă si execut ă pe orice masin ă
virtual ă java (JVM)”, c ât și pentru utilizatori, care vor ben eficia de un spectru îmbogațit de
servicii. De aceea se poate afirma cu incredere c ă Java este un castigator, în lumea volatila a
tehnologiilor de calcul.

Inceputul limbajului Java este în toamna 1991, c ând firma Sun Microsystems a finanțat un
proiect cu numele Green condus de James Gosling. Scopul echipei Green era s ă plaseze firma
Sun MircroSystems pe piata produselor electronice comerciale. Inginerii și devoltatorii de soft
de la Sun au c ăutat microprocesoare care s ă ruleze pe o multitudine de mașini, în particular pe
sisteme distribuite care lucreaz ă în timp real. Cheia succesului firmei Sun a fost abilitatea
lucrului pe platforme multiple. Dupa patru ani de lucru, echipa Green finalizeaz ă specificațiile
limbajului Java. Apoi, compania Sun MycroSystems vinde licența firmelor IBM, Microsoft,
Silicon Graphics, Adobe și Netscape.

1.1.1 Caracteristici ale limbajului java

– limbaj interpretat și compilat. Un limbaj este interpretat dacă instruc țiunile unui program scris în
acel limbaj sunt procesate linie cu linie și traduse in cod mașin ă. Un limbaj este compilat

4

5

daca un program scris în acel limbaj este tradus într -un cod pe care calculatorul îl poate
“înțelege” mult mai ușor. Programele compilate sunt mai rapide dec ât cele interpretate îns ă sunt
de obicei dependente de platforma respectiv ă. Programele Java sunt mai întai compilate în niște
fișiere intermediare asemanatoare codului de asamblare (numite byte code), apoi acestea sunt
interpretate de mediul de executie Java in instructiuni de mașin ă asociate platformei sistem.

-limbaj independent de platform ă. La instalarea limbajului Java, se va crea o mașin ă virtual ă
Java care are drept scop traducerea instructiunilor unui byte code Java, în instrucțiun i mașin ă
pentru platforma curent ă. Astfel fișierele intermediare byte code pot fi copiate și executate pe
orice platform ă.

-Limbaj orientat obiect. Cea mai important ă proprietate a limbajului Java este orientarea obiect,
aceasta fiind privit ă ca o trasatur ă implicit ă. Java pune în evident ă toate aspectele legate de
programarea orientat ă obiect: obiecte, trimitere de parametri, încapsulare, clase, biblioteci,
moștenire și modificatori de acces.

-Limbaj concurent . Concurența (multithreading) înseamn ă capacitatea unui program de a
executa mai multe secvente de cod în același timp. O secvent ă de cod Java se numeste fir de
execuție. Datorit ă posibilitații cre ării mai multor fire de execuție, un program Java poate s ă
execute mai multe sarcini sim ultan, de exemplu animatia unei imagini, transmiterea unei
melodii spre placa de sunet, comunicarea cu un server, alocarea și eliberarea memoriei, etc.).

-Limbaj simplu . Spre deosebire de C++, care este cel mai popular limbaj orientat obiect, Java
elimină câteva dintre tr ăsăturile acestuia: posibilitatea moștenirii multiple este exclus ă, șirurile sunt
incapsulate intr -o structur ă de clasa. Spre deosebire ce C/C++, in Java nu exista pointer, iar

5

6

alocarea și dealocarea memoriei se fac automat. Exist ă un mecanism de eliberare a memoriei
( garbage collection) pus in practic ă de un fir de execuție de prioritate mic ă.

-Limbaj distribuit . Java este distribuit deoarece permite utilizarea obiectelor lo cale și de la
distanț ă. Limbajul Java oferă posibilitatea dezvolt ării de aplicații pentru Internet, capabile s ă
ruleze pe platforme distribuite eterogene. In acest sens, Java respect ă standardul IEEE ( Institute
of Electrical and Electronics Engineers ) pent ru structurile de date, cum ar fi folosirea
intregilor, numerelor in virgul ă floatant ă și șirurilor de caractere. Java se poate utiliza în
aplicații de rețea, deoarece respect ă protocoalele de rețea, cum ar fi FTP, HTTP, etc.

-Limbaj performant. Interpretorul Java este capabil sa execute un byte code aproape la fel de
repede ca un cod compilat. Avand posibilitatea să lucreze cu fire de execuție multiple, Java
justifică faptul că este un limbaj performant. De exemplu, un program java poate astepta citirea
unor date, in timp ce un alt fir de execuție poate aloca sau elibera memoria necesar ă
programului.

-Limbaj dinamic si robust . Java intarzie alocarea obiectelor si legarea dinamic ă a claselor
pentru momentul execuției. Astfel, se vor evita erorile de alocare chiar dacă mediul s -a
schimbat de la ultima compilare a programului. Faptul ca Java este robust se justific ă prin
eliminarea utilizarii pointerilor, care erau generatoare de ero ri în cazul programelor C/C++. In
schimb, Java verific ă memoria dinamic inainte de a fi alocata și are un sistem automat de
alocare/dealocare a memoriei.

-Limbaj sigur . Programele Java nu pot accesa memoria heap,stack sau alte sectiuni protejate de
mem orie, deoarece Java nu foloseste pointeri și aloca memorie doar la executie. Inainte ca
interpretorul Java să execute codul, se verifica daca este un cod Java valid prin cercetarea
accesului la date, conversiilor de date nepermise, valori și parametri inco recti, depasirea stivei.

6

7

1.1.3 Evolutia limbajului java

Limba Java a suferit mai multe modificări, deoarece JDK 1,0, precum și numeroase completări
de clase și pachete la biblioteca standard. Din J2SE 1,4, evoluția limbii Java a fost guvernată de
procesul Java Community Process (JCP), care utilizează solicitări de specificații Java (JSRs)
pentru a propune și specifica completări și modificări la platforma Java.

-JDK Alpha and Beta, aparut in 1995 -browserul web java furnizat a fost denumit WebRunner.

-JDK 1.0 , a fost lansată pe 23 ianuarie, 1996, numindu -se Java 1.

-JDK 1.1 , lansată pe 19 februarie 1997, adaugand urmatoarele:

-un ansamblu retehnologizant al modelului AWT
-clase interioare

-JavaBeans
-JDBC
-RMI

-JIT (just in Time) compilator pe platformele Microsoft
Windows, produse pentru JavaSoft de Symantec

-Internaționalizare și suport Unicode provenind de la Taligent

Sun Microsystems a creat trei versiuni de platforme Java : “Sta ndard Edition”,
“Enterprise Edition”, și “Micro Edition”.

Java 2 Standard Edition (J2SE) cuprinde un sistem de dezvoltare (SDK – System
Developement Kit), unelte(tools), componente „runtime” și API -uri pentru programatorii
care doresc să scrie aplicații în limbajul Java.

7

8

De asemenea, aici este inclusă și tehnologia JavaWeb Start ce furnizează o modalitate
extrem de facilă pentru lansarea și instalarea locală a programelor scrise în Java direct de pe
Web, oferind cea mai comodă soluție pentru distribuția și actualizarea aplicațiilor Java.

Java 2 Enterprise Edition (J2EE) își propune să simplifice dezvoltarea și exploatarea
aplicațiilor complexe de tip multistrat (multitier), prin utilizarea de componente modulare și
standardizate. Dea semenea, furnizează pentru aceste componente un set complet de servicii
și reduce efortul de programare prin gestiunea automată a anumitor modele comportamentale.

Această platformă oferă API -ul necesar dezvoltări i de aplicații complexe, formate din
componente ce trebuie să ruleze în sisteme eterogene, cu informațiile memorate în baze de
date distribuite, etc. Tot aici găsim și suportul necesar pentru crearea de aplicații și servicii
Web, bazate pe componente cum a r fi servleturi, pagini JSP, etc.

Java 2 Micro Edition (J2ME) se adresează segmentului de echipamente de larg consum.
Platforma este scalată corespunzător pentru a face față resurselor spartane existente în
aceste echipamente (telefoane, bunuri de uz -casnic etc).

Continuând procesul de rafinare, putem observa că fiecare platformă în parte include o serie
de componente, pachete opționale sau extensii ce vor fi prezentate pe scurt în cele ce urmează.

Java 2 Standard Edition (J2SE)

Platforma Java 2 Standard Edition (J2SE) include printre altele:

• Java Beans Component Arhitecture : este o specificație independentă de platformă
care definește un set de API -uri standard pentru componente software.

• Javadoc : este o unealtă pentru a genera documente în fo rmat HTML, referitoare la codul sursă
dezvoltat

8

9

• Java Foundation Classes (SWING) : reprezintă o colecție de biblioteci care oferă
suportul necesar construirii interfețelor grafice utilizator pentru aplicații Java.

• Java 2D API : bibliotecă pentru grafică bidimensională și prelucrarea de imagini.

• Java Database Connectivity (JDBC) : este o interfață de programare (API) care permite
accesul din Java la baze de date sau alte colecții de date de tip tabe lar (cum ar fi foile de calcul –
spreadsheets).

• Remote Method Invocation (RMI) : permite programatorului să creeze aplicații Java distribuite
în care metode ale unor obiecte Java aflate la distanță (remote) pot fi apelate de către mașini
virtuale Java care rulează pe sisteme diferite.

• Java Authenticated and Authorization Service (JAAS): bibliotecă pentru procedurile
de autentificare ale utilizatorilor și pentru controlul accesului acestora.

• Java Criptography Extension (JCE) : bibliotecă pentru implementar ea algoritmilor de criptare a
informațiilor, generarea de chei de criptare și a algoritmilor de autentificare a mesajelor.

• Java Media Framework (JMF) : permite adăugarea elementelor multimedia (audio,video
etc) aplicațiilor Java.

• Java Secure Socket Extension (JSSE) : bibliotecă pentru comunicarea sigură între rețele de
calculatoare. Implementează, în versiune Java, protocoalele SSL(Secure Socket Layer) și TLS
(Transport Layer Security). Include funcțiuni pentru criptarea datelor, autentificarea
server elor, integritatea mesajelor.

• Java Speech API (JSAPI) permite aplicațiilor Java să încorporeze tehnologii bazate pe voce în
interfețele utilizator.

9

1
0

• Java 3D este o bibliotecă pentru grafică tridimensională, independentă de platformă.

Java 2 Enterprise Edition (J2EE)

• Java API for XML Processing (JAXP) permite procesarea documentelor XML.

• Common Object Request Broker Architecture (CORBA) este un standar d deschis pentru calcul
eterogen care completează platforma prin furnizarea unui cadru de lucru cu obiecte distribuite,
de servicii pentru acesta și interoperabilitate cu alte limbaje.

• Enterprise Java Beans (EJB) utilizează componente model pentru a simplifica dezvoltarea
aplicatiilor prin furnizarea suportului pentru servicii ca tranzacții, securitate, conectare la
bbaze de date etc.

• Java Mail este o interfață de programare (API) care furnizează un set de obiecte abstracte ce
modelează un sistem de poștă electronică.

• Java Messaje Service (JMS) este o API care asigură cadrul pentru dezvoltarea de aplicații
portabile, bazate pe mesaje prin definirea unei mulțimi de concepte și strategii de programare
suportate de toate tehnologiile JMS compatibile.

• Java Server Page (JSP) permite dezvoltatorilor web să producă rapid și să întrețină cu
ușurință pagini web dinamice, independente de platformă. JSP permite ca paginile să aibă
separat partea de interfață utilizator de partea de generare de conținut astfe l că se poate
modifica aspectul paginii fără a altera conținutul acesteia.

• Java Servlets reprezintă modalitatea prin care Java realizează extinderea capabilităților
serverelor WEB. Furnizează componente pentru dezvoltarea de aplicații WEB fără
limitările impuse de programarea CGI (Common gateway Interface).

10

1
1

Java 2 Micro Edition (J2ME)

• Connected Limited Device Configuration (CLDC) pregătește mediul de execuție java pentru a
fi potrivit dispozitivelor ce conțin resurse limitate specifice platformei J2ME.CLDC conturează
setul de biblioteci de bază și caracteristicile mașinii virtuale care trebuie să existe în
implementarea respectivului mediu J2ME.

• Mobile Information Device Profile (MIDP) furnizează n ucleul de funcționalitate al
aplicației incluzând interfața utilizator, conectarea la rețea, memorarea de date.

• Connected Device Configuration (CDC) reprezintă un cadru de lucru standard pentru
construirea și distribuirea aplicațiilor care pot fi partaja te peste o rețea de comunicație.

-J2SE 1.2 -Lansarea pe 8 decembrie 1998 și versiunile ulterioare prin J2SE 5,0 au fost
rebranduit retrospectiv Java 2 și numele versiunii "J2SE " (Java 2 Platform, Standard Edition) a
înlocuit JDK pentru a distinge platforma de bază de la J2EE (Java 2 Platform, Enterprise
Edition) și J2ME (Java 2 Platform, Micro Edition). Aceasta a fost o versiune foarte
semnificativă de Java, deoarece triplat dimensiunea platformei Java la 1520 clase în 59 pachete.
Adăugiri majore i ncluse:

-strictfp

-API-ul grafic Swing a fost integrat in clasele de baza

-JVM Sun a fost echipat cu un JIT pentru prima data

-Java plug -in

-Java IDL, o implementare IDL pentru interoperabilitatea COBRA

-J2SE 1.3 , lansarea in 8 mai 2000, cu modificari notabile precum:

11

1
2

-HotSpot JVM incluse (HotSpot JVM a fost primul lansat în aprilie 1999 pentru
J2SE 1,2 JVM)

-RMI a fost modificat pentru a sprijini compatibilitatea opțională cu CORBA

-Java Naming and Directory Interface (JNDI) incluse în bibliotecile de
bază (anterior disponibile ca o extensie)

-Java Platform Debugger Architecture (JPDA)

-JavaSound

-J2SE 1.4 -lansat pe 6 februarie 2002 , lansarea a fost prima versiune a platformei Java dezvoltate în
cadrul procesului de comunitatea Java ca JSR 59. Schimbarile majore incluse sunt:

-assert (specificat in JSR 41)

-Expresii regulate modelate după expresii regulate Perl

-Înlănțuirea excepției permite o excepție de la Incapsularea excepției inițiale de

nivel inferior
-suport Internet Protocol version 6 (IPv6)

-Non-blocking I/O (Java) (notat NIO) specificat in JSR 51

-logare API (specificat in JSR 47)

-imagine I/O API pentru citirea si scrirea imaginilor in form ate ca JPEG si PNG

12

1
3

– integrarea XML si XSLT (specificat in JSR 5 si JSR 63)

-extensii integrate de securitate si criptografie (JCE, JSSE, JAAS)

-Java Web Start (Java Web Start a fost primul lansat în martie 2001 pentru
J2SE 1,3)

-preferinte API (java.util.pref)

-J2SE 5.0 -lansarea pe 30 septembrie, 2004 a fost inițial numerotate 1,5, care este încă folosit ca
numărul de versiune internă. J2SE 5,0 a intrat în actualizările sale de la 8 aprilie 2008;
actualizări nu mai sunt disponibile pentru public, începând cu 3 noiembrie, 2009. Actualizările
au fost disponibile pentru clienții Oracle plătiți până în mai 2015. Caracteristicile lingvistice
semnificative:

-Generics: prevede compilare -timp (static) și elimină nevoia de cele mai
multe typecasts (conversie de tip)

-Metadata : numite, de asemenea, annotations; permite ca construcțiile
lingvistice, clasele și metodele, să fie etichetate cu date suplimentare, care pot
fi apoi procesate de ut ilitățile care au cunoștință de metadate

-Autoboxing/unboxing: conversii automate între tipurile primitive (cum ar fi int)

și clasele de înveliș primitiv (Integer)

-Enumerations : cuvantul cheie enum creeaza o typesafe; anterior acest lucru ar
putea fi realizat numai prin numere întregi constante non -Typesafe sau clase
construite manual (typesafe enum pattern)

13

1
4

-Varargs: ultimul parametru al unei metode poate fi acum declarat folosind un
nume de t ip urmat de trei puncte (void drawtext(String…lines));în codul de
apelare orice număr de parametri de acest tip pot fi utilizate și apoi sunt plasate
într-o matrice pentru a fi trecut la metoda, sau, alternativ, codul de apelare
poate trece o matrice de acest tip

-Semantică îmbunătățită de execuție pentru programe Java multi -threaded;
Noul model de memorie Java abordează probleme de complexitate, eficacitate
și performanță ale specificațiilor anterioare

-Importuri statice

Au fost, de asemenea, următoarele îmbunătățiri la bibliotecile standard:

-generarea automata stub pentru obiectele RMI

-Swing

-utilități de concurență in pachetul java.util.concurrent

-clasa de scaner pentru analizarea datelor din diferite fluxuri de intrare și
tampoane

Java 5 este ultima versiune de Java pentru a sprijini în mod oficial Microsoft Windows 98 și
Windows ME, în timp ce Windows Vista este cea mai nouă versiune de Windows care susține
J2SE 5 inaine ca Java 5 sa atinga sfârșitul vieții în octombrie 2009.

– Java SE 6 . Începând cu versiunea lansată la 11 decembrie 2006, Sun a înlocuit numele "J2SE
" cu Java SE și a renunțat la ". 0 " din numărul versiunii, numerotarea internă pentru

14

1
5

dezvoltatori rămâne 1.6.0. Această versiune a fost dezvoltată în cadrul JSR 270. Versiunile Beta
au fost lansate în februarie și iunie 2006, conducând până la o versiune finală care a avut loc pe
11 decembrie, 2006.

Schimbarile majore incluse in versiune sunt:

-Suport pentr u versiunile mai vechi de Win9x; neoficial, Java 6 Update 7 a fost ultima
versiune de Java pentru a lucra la aceste versiuni de Windows.

-Scripting limbaj suport (JSR 223): API generic pentru integrare strânsă cu limbaje de
scripting, și built -in Mozilla JavaScript Rhino

-Îmbunătățiri dramatice ale performanței pentru platforma de bază și Swing.

-Serviciul Wwb imbunătățit prin JAX -WS

-Suport JDBC 4.0 (JSR 221)

-Java Compiler API (JSR 199): un API care permite un program Java pentru a selecta și
invoca un compilator Java programatic.

-Upgrade -ul de la JAXB la versiunea 2.0

-Suport pentru adnotari conectabile

-Multe îmbunătățiri GUI, precum integrarea SwingWorker în API

-Îmbunătățirile JVM includ: optimizarea performanței de sincronizare și compilator,
algoritmi noi și upgrade -uri la algoritmi de colectare deșeuri existente și performanța de
pornire a aplicațiilor.

15

1
6

Java 6 poate fi instalat pe Mac OS X 10.5 ruland pe 64 bit. Java 6 este, de asemenea,
susținută de ambele 32 -bit și 64 -bit mașini care rulează Mac OS X 10.6.

Java 6 a ajuns la sfârșitul vieții sale în februarie 2013, moment în care toate actualizările
publice, inclusiv actualizări de securitate, au fost programate pentr u a fi oprit.

-Java SE7 -Java 7 este o actualizare majoră, care a fost lansat pe 7 iulie 2011 și a fost pus la
dispoziția dezvoltatorilor pe 28 iulie, 2011. Perioada de dezvoltare a fost organizată în
treisprezece etape; pe 6 iunie 2011, ultimul dintre c ele treisprezece etape a fost finalizat.
Lista de caracteristici de la OpenJDK 7 listează multe dintre modificările:

-JVM suport pentru limbaje dinamice, cu noul invokedynamic bytecode în conformitate
cu JSR -292, în urma lucrărilor de prototipuri în prez ent făcut pe mașina
virtuală Multi Language.

-Indicii comprimate 64 -bit (disponibil în Java 6 cu -XX: + UseCompressedOops)

-Mici modificări lingvistice (grupate sub un proiect numit Coin):

-Siruri de caractere în comutator

-Declararea metodei simplificate de VarArgs

-Literali întregi binari

-Prinderea mai multor tipuri de excepții și rearuncarea excepțiilor cu verificarea tipului
îmbunătățit

16

1
7

-Noua bibliotecă de fișiere I/O (definită de JSR 203) adăugând suport pentru mai
multe sisteme de fișiere, metadate de fișiere și linkuri simbolice. Pachetele noi sunt
java.nio.file, java.nio.file.attribute si java.nio.file.spi

-Timsort este utilizat pentru sortarea colecțiilor și matricilor de obiecte în loc de merge
sort.

-Suport la nivel de bibliotecă pentru algoritmi de criptografie cu curbă eliptică

-O conductă XRender pentru Java 2D, care îmbunătățește manipularea
caracteristicilor specifice GPU -urilor moderne

-API-uri noi platf ormă pentru caracteristicile grafice implementate inițial în
versiunea 6u10 ca API -uri neacceptate

-Suport îmbunătățit la nivel de bibliotecă pentru noile protocoale de rețea, inclusiv SCTP

-Actualizări pentru XML și Unicode

-Seturi de reguli de implementare Java

Lambda, Jigsaw, și o parte din Coin au fost retrase din Java 7, și a lansat ca parte a Java 8
(cu excepția pentru Jigsaw, care a fost în Java 9).

Java 7 a fost versiunea implicită pentru descărcare de pe java.com din aprilie 2012 până
cand Java 8 a fost lansat.

17

1
8

-Java SE 8 -Java 8 a fost lansat pe 18 martie 2014, și a inclus unele caracteristici care au
fost planificate pentru Java 7, dar mai târziu amânate.

Lucrările privind caracteristicile au fost organizate în ceea ce privește propunerile de
îmbunătățire a JDK (JEPs):

-JSR 335, JEP 126: suport la nivel de limbă pentru expresii Lambda (oficial, expresii
Lambda; neoficial, închideri) în cadrul proiectului Lambda și metode implicite
(metode de extensie virtuală) care permit adăugarea de metode pentru interfețele fără a
încălca implementările existente. A existat o dezbatere în curs de desfășurare în
comunitatea Java cu privire la posibilitatea de a adăuga suport pentru expre sii Lambda.

-JSR 223, JEP 174: proiectul Nashorn, un Runtime JavaScript care permite
dezvoltatorilor să încorporeze codul JavaScript în cadrul aplicațiilor.

-JSR 308, JEP 104: adnotări pe tipuri de Java

-JSR 337, JEP 120: adnotări repetate

-JEP 178: biblioteci JNI legate legate in mod static

-JEP 153: lansarea aplicațiilor JavaFX
-JEP 122: elimină generarea permanentă

Din octombrie 2014, Java 8 a fost versiunea implicită pentru a descărca de pe site -ul oficial.
"Oracle va continua să furnizeze actualizări publice și actualizări auto de Java SE 8, până
cel puțin la sfârșitul lunii decembrie 2020 pentru utilizatorii personali, și ianuarie 2019
pentru utilizatorii comerciali "

18

1
9

-Java SE 9 – La JavaOne 2011, Oracle a discutat despre caracteristicile pe care spera să le
lanseze pentru Java 9 în 2016. La începutul anului 2016, lansarea versiunii Java 9 a fost
reprogramată pentru luna martie 2017, amânată din nou încă patru luni până în iulie 2017, și s -a
schimbat din nou pentru a fi în sfârșit disponibil pe 21 septembrie 2017, din cauza acceptării
controversate a actualei punerea în aplicare a proiectului Jigsaw de către Comitetul executiv
Java, care a condus Oracle pentru a remedia unel e probleme deschise și preocupări, precum și
pentru a rafina unele întrebări critice tehnice. În ultimele zile din iunie 2017, Java procesul
comunitar a exprimat aproape unanim consens cu privire la sistemul de module propus.

-JSR 376: Modularizare de JDK sub proiectul Jigsaw (Java Platform
Module System)

-JEP 222: jshell: Java Shell (un Java REPL)

-JEP 295: compilare înainte de timp

-JEP 268: cataloage XML

-JEP 266: mai multe actualizări de convalută, include o implementare Java a
fluxurilor reactive, inclusiv o nouă clasă de flux care includea interfețele furnizate
anterior de Reactive Streams

-JEP 193: java.util.concurrent.atomic și sun.misc.Unsafe

-JEP 282: jlink: a crearea unui instrument care poate asambla și optimiza un set de
module și dependențele lor într -o imagine de Run -time personalizat. Acesta permite în mod

eficient producerea unui executabil complet utilizabil, inclusiv JVM pentru a rula –
JavaDB a fost eliminat din JDK

19

2
0

-JEP 263: grafica HiDPI: scalarea și dimensionarea automată.

Primul Java 9 a fost lansat pe 9 august 2017, iar prima versiune stabilă de Java 9 a fost pe 21
septembrie 2017.

-Java SE 10 – JDK 10 a fost lansat pe 20 martie 2018, cu douăsprezece noi caracteristici
confirmate, printre aceste caracteristici au fost:

-JEP 286: variabile locale de tip deducție

-JEP 317: experimentale bazate pe Java compilator JIT. Aceasta este
integrarea compilator Graal dinamic pentru platforma Linux x64

-JEP 310: clasa de aplicații -partajarea datelor. Acest lucru permite claselor de aplicații
să fie plasate în arhiva partajată pentru a reduce pornirea și amprenta pentru aplicațiile Java.

-JEP 322: versiune de eliberare pe bază de timp

-JEP 307: GC complet paralel pentru G1

-JEP 304: Interfață Garbage -collector

-JEP 314: suplimentare Unicode

-JEP 319

20

2
1

-JEP 312: fire locale

-JEP 316: alocarea pe dispozitive de memorie alternativă

-JEP 313: eliminarea instrumentului de generare a antetului nativ – javah
-JEP 296: consolidarea JDK într -un singur depozit

-Java SE 11 – JDK 11 a fost lansat pe 25 septembrie 2018 iar versiunea este momentan deschisă
pentru remedieri de erori. Printre altele, Java 11 include o serie de caracteristici noi, cum ar fi:

-JEP 309: constantele dinamice ale fișierelor de clasă

-JEP 318: Epsilon

-JEP 323: sintaxa pentru parametrii Lambda

-JEP 321: client HTTP (standard)

-JEP 332: Transport Layer Security (TLS) 1.3

-JEP 333: ZGC

-Modulele JavaFX, Java EE și CORBA au fost eliminate din JDK

-JEP 335: motorul învechit de Nashorn JavaScript

21

2
2

-Unicode 10.0.0

O serie de caracteristici din versiunile anterioare au fost retrase; în special, Applet -urile Java
și Java Web Start nu mai sunt disponibile.

-Java SE 12- JDK 12 a fost lansat pe 19 martie 2019. Printre altele, Java 12 include o serie de
caracteristici noi, cum ar fi:

-JEP 189: Shenandoah

-JEP 325: Comutarea expresiilor

-JEP 340: un port AArch64

-JEP 341: Arhivele implicite CDS

-JEP 344: colecții mixte pentru G1

-JEP 346: returnarea memoriei neutilizate comise de la G1

1.2 JAVAFX

22

2
3

în ultimii anii tehnologiile pentru realizarea aplicatiilor web au cunoscut o evolutie
spectaculoasa deoarece standardele w3c ofera resurse web specifice,cum ar fi continut
si servicii prin intermediul unei interfete.

Aplicatiile web care furnizeaza multe din caracteristicile de baza ale aplicatiilor desktop
oferind aceeasi flexibilitate s i functionalitate ca si acestea, dar fiind in acelasi timp inzestrate si
cu capabilitatile web clasice sunt numite RIA(Rich Internet Applications). Alaturi de
Microsoft, principala alternativa in realizarea de aplicatii RIA o reprezinta tehnologia JavaFX.

Limbajul JavaFX este un limbaj declarativ si foarte tipizat. Specific domeniului de
dezvoltare de aplicatii cu grad avansat de grafica integrata.

Tehnologia JavaFX ofera posibilitmultimedia puternice prin integrarea in aplicatie de
continut audio si video si prin manipularea de grafica 3D.

JavaFX este urmașa lui F3 (Form Follows Function) ce îl are ca părinte pe Chris Oliver. În
2010 Oracle a anunțat că dezvoltarea lui JavaFX Script language va fi întreruptă, în schimb
aceasta se va porta pe Java, f ormând platforma JavaFX 2. Prin aceasta se puneau bazele ca
JavaFX să devină cel mai important mediu pentru aplicații rich client .

API-ul JavaFX este rulat de un engine compus din subcomponente. Acesta cuprinde noul
engine grafic de înaltă performanță num it Prism, sistemul eficient de windowing numit Glass
și un engine media.

Glass Windowing Toolkit este responsabil cu furnizarea unui serviciu nativ ce include
gestiunea ferestrelor, a timer -elor și a suprafețelor. De asemenea, leagă platforma JavaFX de
sistemul de operare nativ. Mai mult, Glass este responsabil de gestiunea cozii de evenimente.
Dacă AWT își gestionează propria coadă de evenimente, Glass utilizează coada nativă a
sistemului de operare. Glass Toolkit rulează în același fir ca și aplicația JavaFX. În AWT se
crea un fir de execuție paralel cu cel al Javei.

O aplicație rich client este o aplicație ce are o interfață care reprezintă backend -ul fără a
aglomera astfel interfața utilizator. JavaFX are un set complet de butoane, diagrame, tabele ș i

23

2
4

container -e de layout pe care le folosim pentru a crea interfețe utilizator rich. În plus,
putem folosi stiluri CSS. Toate componentele se conectează și afișează date din backend .

În general, o aplicație rich client are următoarele caracteristici:

• Este o aplicație stand alone executabilă.

• Conține o interfață -utilizator ce are controale sau formulare.
• Este descărcabilă din desktop sau web.
• Se conectează la o bază de date și la un server de backend .
• Este independentă față de sistemul de operare.

O aplicație JavaFX este o aplicație Java de bază, ce permite feature -uri JavaFX. Codul minim
necesar pentru a rula o aplicație JavaFX constă din:

• O clasă ce extinde clasa abstractă javafx.applicati on.Application.
• O metodă main() ce apelează metoda launch() și suprascrie metoda
abstractă start() . Ca bună practică apelul metodei launch() este singurul
apel din main()
• Un stage primar ce este vizibil, ca argument al metodei start()

Avem trei tipuri de aplicații JavaFX:

• Aplicații propriu zise, ce folosesc sintaxa Java tradițională și API –
ul JavaFX.

• Aplicații FXML. FXML se bazează pe XML și este folosit pentru a
defini interfețe -utilizator în aplicații JavaFX. Cu FXML vom defini
layout -uri statice precum formulare, controale sau tabele. Putem construi,
de asemenea, layout -uri dinamice prin includerea unui script .
FXML oferă următoarele avantaje:

24

2
5

• Fiind bazat pe XML este familiar m ultor dezvoltatori, în special
dezvoltatorilor web și celor care utilizează alte platforme RIA.

• FXML nu se compilează, de aceea nu este necesar să
recompilăm codul în caz de modificări.

• Asigură o structură ușor vizibilă a aplicației.
• Când creăm o aplicație JavaFX FXML avem de realizat
trei fișiere:

Clasa main, ce conține cod pentru crearea scenei aplicației,
a stage -ului și pentru lansarea aplicației.

• Aplicații preloader , folosite în procesul de deployment .

JavaFX este o platformă software pentru crearea și livrarea aplicațiilor desktop, precum și
aplicațiile internet bogate (RIAs) care pot rula pe o mare varietate de dispozitive. JavaFX este
destinat să înlocuiască Swing ca biblioteca standard GUI pentru Java SE, dar ambele vor fi
incluse p entru viitorul previzibil. JavaFX are suport pentru computerele desktop și
browserele web pe Microsoft Windows, Linux și macOS.

JavaFX 1.1 a fost bazat pe conceptul de "profil comun ", care este destinat să se întindă pe toate
dispozitivele suportate de JavaFX. Această abordare face posibil ca dezvoltatorii să utilizeze un
model comun de programare în timp ce construiesc o aplicație orientată atât pe desktop, cât și
pe dispozitive mobile și să partajeze o mare parte din cod, elemente grafice și conținut î ntre
versiunile desktop și mobile. Pentru a aborda necesitatea de aplicații tuning pe o anumită clasă
de dispozitive, platforma JavaFX 1.1 include API care sunt desktop sau mobile specifice. De
exemplu, profilul JavaFX desktop include Swing și efecte vizua le avansate.

JavaFX 1.x a inclus un set de plug -in-uri pentru Adobe Photoshop și Illustrator care permit
integrarea grafică avansată direct în aplicațiile JavaFX. Dezvoltatorii pot adăuga cu ușurință
animație sau efecte la grafica statică importate. Nu a fost, de asemenea, un instrument de

25

2
6

convertor de grafica SVG (de asemenea, cunoscut sub numele de Media Factory), care permite
importul de grafică și de previzualizare a activelor după conversia la formatul JavaFX.

Platforma JavaFX 2. x include următoarele componente:

-SDK -ul JavaFX: instrumente de execuție. Grafică, servicii web media și
biblioteci de text îmbogățite.

-NetBeans IDE pentru JavaFX: NetBeans cu drag -and-drop pentru a adăuga obiecte cu
transformări, efecte și animații, plus un set de mostre și cele mai bune practici. Pentru

JavaFX 2 aveți nevoie de cel puțin NetBeans 7.1.1. Pentru utilizatorii de Eclipse există

un plugin -ul sprijinit de comunitate găzduit pe e(fx)clipse.

-JavaFX scene builder:acest lucru a fost introdus pentru Java FX 2,1 și mai târziu.

O interfață de utilizator (UI) este creată prin glisarea și fixarea controalelor dintr -o paletă.
Aceste informații sunt salvate ca fișier FXML, un format XML special.

– Plug-in-uri pentru Adobe Photoshop și Adobe Illustrator care pot exporta
grafice active în codul de script JavaFX, instrumente pentru a converti grafica
SVG în codul de script JavaFX și a activelor de previzualizare convertite în
JavaFX de la alte instrume nte (în prezent nu sunt acceptate în versiunea
JavaFX 2.x)

JavaFX Mobile

JavaFX Mobile a fost punerea în aplicare a platformei JavaFX pentru aplicatii internet bogate
care vizează dispozitive mobile.

Aplicațiile JavaFX Mobile 1.x pot fi dezvoltate î n aceeași limbă ca aplicațiile JavaFX 1.x
pentru browser sau desktop, și folosind aceleași instrumente: JavaFX SDK și JavaFX de

26

2
7

producție Suite. Acest concept face posibilă partajarea de cod -bază și elemente grafice pentru
aplicații desktop și mobile. Prin integrarea cu Java ME, aplicațiile JavaFX au acces la
capacitățile receptorului care stau la baza, cum ar fi: sistemul de fișiere, camera, GPS, Bluetooth
sau accelerometru.

O platformă independent ă de aplicații construită pe Java, JavaFX mobile este capabilă să
ruleze pe mai multe sisteme de operare mobile, inclusiv Android, Windows Mobile și sisteme
de operare în timp real.

JavaFX mobile a fost disponibil public ca parte a lansării JavaFX 1,1 anu nțată de Sun
Microsystems pe 12 februarie 2009.

1.2.1 Evoluția limbajului JavaFX

-JavaFX 1.0 -Pe 4 decembrie, 2008 Sun a lansat JavaFX 1.0.2.

– JavaFX 1.1 -JavaFX pentru dezvoltarea mobilă a fost în cele din urmă puse la dispoziție
ca parte a lansării JavaFX 1,1 (numit Franca) anunțata oficial pe 12 februarie 2009.

-JavaFX 1.2 -JavaFX 1.2 (denumit Marina) a fost lansat la JavaOne pe 2 iunie 2009. Această
versiune a introdus:

-Beta suport pentru Linux și Solaris

-controale și machete încorporate

-Controale skinnable CSS

-widget -uri diagramă încorporate

27

2
8

-JavaFX I/O management, mascarea diferențelor între desktop și
dispozitivele mobile

-Îmbunătățiri ale vitezei

-Windows Mobile Runtime cu Sun Java Wireless Client

-JavaFX 1.3 -JavaFX 1.3 (denumit Soma) a fost lansat pe 22 aprilie 2010.
Această versiune a introdus:

-Îmbunătățiri de performanță

-Suport de platforme suplimentare

-Suport îmbunătățit pentru controalel e interfeței utilizator

-JavaFX 1.3.1 -Această versiune a fost lansat pe 21 august 2010. Această versiune a introdus:

-Timp de pornire rapidă a aplicației JavaFX

-Bară de progres particularizată pentru pornirea aplicației

-JavaFX 2.0 – Această versiune (denumită Presidio) a fost lansată pe 10 octombrie 2011.

Această versiune a introdus:

28

2
9

-Un nou set de API -uri Java de deschidere a capabilităților JavaFX pentru
toți dezvoltatorii Java, fără a fi nevoie ca ei să învețe un nou limbaj de
scripting. Sprijinul Java FX Script a fost abandonat definitiv.

-Suport pentru legare de înaltă performanță

-Suport pentru JavaFX Mobile

Diverse îmbunătățiri au fost făcute în librăriile JavaFX pentru multithreading. API -uri de
activitate au fost actualizate pentru sprijinul mult mai concis al capabilități de Threading (de
exemplu, clasa JavaTaskBase nu mai este necesară, deoarece toate API -urile sunt în Java, iar
cerința de a a vea o interfață de apelare inversă și clasa de implementare Java nu mai sunt
necesare). În plus, graficul scenei a fost proiectat pentru a permite scenei să fie construite pe
fire de fundal și apoi atașat la "Live " scene într -un mod threadsafe.

Pe 26 ma i 2011, Oracle a lansat JavaFX 2,0 Beta. Versiunea beta a fost făcută numai pentru 32
și 64 bit Microsoft Windows XP, Windows Vista și Windows 7. O versiune Early Access
pentru Mac OS X a fost, de asemenea, disponibil pentru membrii programului de partener
JavaFX la momentul respectiv, în timp ce suportul Linux a fost planificat pentru o versiune
viitoare a JavaFX. JavaFX 2,0 a fost lansat doar cu suport Windows. Suportul pentru Mac OS
X a fost adăugat cu JavaFX 2,1. Suport Linux a fost adaugat cu JavaFX 2, 2.

JavaFX 2,0 folosește un nou limbaj XML declarativ numit FXML.

-JavaFX 2.1 – Pe 27 aprilie 2012, Oracle a lansat versiunea 2,1 JavaFX, care
include următoarele caracteristici principale:

-Prima versiune oficiala pentru OS X (numai pentru desktop)

29

3
0

-Sprijin H.264/MPEG -4 AVC și Advanced Audio Coding

-Text CoolType

-Îmbunătățiri UI, inclusiv controale casetă combo, diagrame
(diagramă suprapuse) și bare de meniu

-Componenta WebView permite acum JavaScript pentru a
efectua apeluri la metode Java

-JavaFX 2.2 – Pe 14 august 2012, Oracle a lansat versiunea 2.2 a JavaFX, care
include următoarele caracteristici principale:

-Suport Linux (inclusiv plug -in și WebStart)

-Controale noi: Selector culoare, paginare

-Asistență pentru HTTP Live Streaming

-Manipularea imaginilor API

-Ambalaje native

JavaFX 2.2 adaugă noua opțiune de ambalare, care să permită ambalarea unei aplicații ca un
"pachet nativ ". Acest lucru oferă utilizatorilor o modalitate de a instala și rula o aplicație fără
dependențe externe pe un sistem JRE sau FX SDK.

-JavaFX 8 – JavaFX este acum parte din JRE/JDK pentru Java 8 (lansat pe 18 martie, 2014).
JavaFX 8 adaugă mai multe caracteristici noi, inclusiv:

30

3
1

-Suport pentru grafica 3D

-Suport senzor

-Suport MathML, cu JavaFX 8 Update 192

-Imprimare și suport text îmbogățit

-Șabloane de dialog generice prin includerea ControlsFX pentru a înlocui
JOptionPane cu JavaFX 8u40

-JavaFX 9 -Caracteristicile JavaFX 9 au fost centrate pe extragerea unor API -uri private
utile din codul JavaFX pentru a face aceste API -uri publice:

-JEP 253: pregăti JavaFX UI Controls și CSS API -uri
pentru Modularization

-JavaFX 11 -Aparut in septembrie 2018.

-JavaFX 11.0.2 este cea mai recentă versiune publică a JavaFX 11

-JavaFX 11.0.3 este cea mai recentă versiune de JavaFX 11 pentru cei cu
un contract de sprijin pe termen lung.

-Suport MathML, cu JavaFX 11

-FX Robot API

31

3
2

-JavaFX 12 -Aparut in martie 2019, JavaFX 12.0.1 fiind cea mai recentă versiune.

Oracle a anunțat, de asemenea, în noiembrie 2012, un limbaj DSL Shader pentru JavaFX care
să permită generarea Shaders pentru OpenGL și Direct3D

1.2.2 Avantajele limbajului JavaFX

Principalele avantaje care recomand ă JavaFX pentru crearea de aplica ții RIA sunt:

1. Posibilitatea rul ării pe orice PC ce are JRE.

2. Ușurința de utilizare a mediului de dezvoltare NetBeans IDE ce permite realizarea
de func ții grafice complexe și adaugarea de onente in pa și simplii.

3. Permisiunea instalarii pachetului Prodaction Swing ce faciliteaz ă lucrul între
programator și grafician prin instalarea de plug -in-uri în Adobe Photoshop sau Adobe
Illustrator care convertesc un fisier Adobe într-un fisier JavaFX.

4. Sustinerea HTTP request care joac ă un rol important in lucrul cu serverul de aplicatii.

Frame -ul JavaFx poate distribui usor aplicatiile RIA pentru o gam ă foart e divers ă de
dispozitive micsorand totodat ă ciclul de productie pentru proiectare si dezvoltare.

Pe lang ă solutiile clasice oferite de c ătre marile companii din domeniu au ap ărut si alternative
Open Source care pot oferi un nivel similar de performante si capabilitati in realizarea de

32

3
3

aplicatii RIA. Printre acestea, cele mai notabile sunt framework -urile Vaadin si Google
Web Toolkit.

Vaadin reprezint ă un framework Java Open Source ce se concentr ează mai mult pe partea de
server. Pe partea de browser web este folosit ă cu prec ădere tehnologia Ajax, pentru a asigura
o interfat ă bogat ă si interativa programator.

Peste masina virtual ă Java se adaug ă nivelul corespunz ător dezvolt ării multimedia (Media
Engine) , iar la nivelul superior se gasesc API -urile JavaFX.

Graful scenei presupune un arbore de componente.

Fiecare nod este clasificat ca fiind:

• Branch sau un părinte, ceea ce înseamnă că poate avea descendenți.
• O frunză .

si pot reprezenta forme 3D sau 2D
Caracteristicile unui nod sunt:
1. Are proprietati precum ID unic
2. Contine efecte speciale: transformari, umbre, opagitate.
3. Pune la dispozitie manipulator de evenimente (pentru mouse si
tastatura)
4. Ofera detalii despre starea aplicatiei la diverse momente.

API-ul scenei grafice JavaFX este un retained mode , adică el gestionează un model intern al
tuturor obiectelor grafice din aplicație. În orice moment el știe ce obiecte să afișeze, ce zone
ale ecranului necesită redesenare și cum să fie renderizat în cel mai eficient mod. Aceasta
reduce semnificativ cantitatea de cod necesar în aplicație.

33

3
4

In ceea ce priveste dezvoltarea aplicatiilor RIA, schimbul de informatii poate fi categorisit
astfel: federalizarea datelor, procesarea interfetei si copierea multipla a bazelor de date.

In ceea ce priveste solutiile de procesare a interfetei se sustin implementari bazate pe procesarea
interfetei prin oferirea de adaptori care sa core cteze cat mai multe aplicatii obisnuite,
externalizand aplicatia.

Crearea unei aplicatii JavaFX presupune suprascrierea unor metode precum : start, show, slt,
scene, stop si totodata adaugarea nodurilor in grupuri (folosim clasa grup) sau folosind metoda
get children apelata pentru nodul radacina sau pentru un nod deja creat.

Crearea unei animatii in cadrul unei aplicatii JavaFX presupune utilizarea unor clase precum :
paralel transition, translate transition, etc.

Tratarea evenimentelor in cadrul unei aplicatii JavaFX se face la nivel de arbore,
clasa corespunzatoare fiind EventDiscpochClain.

Tratarea evenimentelor presupune parcurgerea urmatoarelor etape:
1. Selectia tintei
2. Construirea rutei
3. Capturarea evenimentului
4. “Consumarea” evenimentului

Dezvoltarea accentuata a aplicatiilor de tip RIA a condus la aparitia a numeroase platforme de
dezvoltare (JavaFX, Vaadin, etc) care sa tina pas cu tendintele moderne si care sa ofere un grad
de interactivitate si continut multimedia similar cu cel care s e regaseste in aplicatiile traditionale
de tip desktop.

34

3
5

MEDIU DE LUCRU

2.1 Eclipse

Eclipse este un mediu de dezvoltare integrat (IDE) utilizat în programarea calculatoarelor, și
este cel mai utilizat Java IDE. Conține un spațiu de lucru de bază și un sistem de inserție
extensibil pentru personalizarea mediului. Eclipse este folosit mai ales pentru scrierea în Java și
utilizarea sa primară este pentru dezvoltarea aplicațiilor Java, dar poa te fi, de asemenea, folosit

pentru a dezvolta aplicații în alte limbaje de programare prin intermediul plug -in-uri,
inclusiv Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, groovy, Haskell,

JavaScript, Julia, Lasso, lua, NATURAL, Perl, PHP, prolog, Python, R, Ruby (inclusiv Ruby
on Rails Framework), Rust, Scala, și schema. Acesta poate fi, de asemenea, utilizat pentru a
dezvolta documente cu LaTeX (prin intermediul unui plug -in TeXlipse) și pachete pentru
software -ul Mathematica. Mediile de d ezvoltare includ instrumente de dezvoltare Eclipse Java
(JDT) pentru Java și Scala, Eclipse CDT pentru C/C++, și Eclipse PDT pentru PHP, printre
altele.

Codebase -ul inițial provine de la IBM VisualAge. Kit -ul de dezvoltare a software -ului Eclipse
(SDK), care include instrumentele de dezvoltare Java, este destinat dezvoltatorilor Java. Utilizatorii
pot extinde abilitățile sale prin instalarea plug -in-uri scrise pentru platforma Eclipse, cum ar fi
Toolkit de dezvoltare pentru alte limbaje de programare, și poate scrie și contribui la propriile lor
module plug -in. De la introducerea implementării OSGi (Equinox) în versiunea 3 a Eclipse, plug –
in-uri pot fi conectate -oprite dinamic și sunt denumite pachete (OSGI) .

Eclipse Software Development Kit (SDK) este gratuit și software -ul open -source , lansat în
conformitate cu termenii de Eclipse Public License, deși este incompatibil cu GNU General
Public License. A fost unul dintre primele IDEs pentru a rula sub GNU Classpath și se
execută fără probleme în cadrul I cedTea.

35

3
6

Eclipse Public License (EPL) este licența fundamentală în cadrul căreia proiectele Eclipse sunt
eliberate. Unele proiecte necesită licențe duble, pentru care este disponibilă licența de
distribuție Eclipse (EDL), deși utilizarea acestei licențe trebuie solicitată și este luată în
considerare de la caz la caz.

Eclipse a fost lansat inițial sub licența publică comună, dar a fost ulterior relicențiată sub licența
publică Eclipse. Fundația p entru software liber a declarat că ambele licențe sunt licențe gratuite
de software, dar sunt incompatibile cu licența publică generală GNU (GPL).

Diferite versiuni ale Eclipse au fost date diferite legate de știință. Versiunile numite după
Callisto, Eur opa și Ganymede, care sunt sateliții lui Jupiter, au fost urmate de o versiune numită
după Galileo, descoperitorul acelor luni. Acestea au fost urmate de două nume de soare –
tematice, Helios de mitologie greacă, și Indigo, una dintre cele șapte culori de un curcubeu
(care este produsă de soare). Versiunea după aceea, Juno, are o semnificație triplă: o figură
mitologică romană, un asteroid și o navă spațială către Jupiter. Kepler, Luna și Marte au
continuat tema astronomiei, iar apoi Neon și Oxygen constituie o temă de elemente chimice.
Photon reprezintă o întoarcere la numele de soare -tematice.

Incepand cu versiunea 4,9, proiectul a optat pentru eliminarea acelei convenții de denumire, în
scopul de a alinia mai bine cu noua strategie de lansare simultană și de a adopta o dată pe bază
de convenție de denumire pentru a reflecta versiunile trimestriale.

2.1.1. Arhitectura

Eclipse utilizează plug -in-uri pentru a oferi toată funcționalitatea în interiorul și pe partea de sus
a sistemului de Run -Time. Sistemul său de execuție se bazează pe Equinox, o punere în aplicare
a specificației cadrului de bază OSGi.

36

3
7

Unul dintre cele mai importante concepte despre Eclipse este că totul este un plug -in. Dacă
plug-in-ul este inclus în platforma Eclipse, sau îl scrii singur, plugin -uri sunt toate
componentele de primă clasă ale aplicației asamblate. Figura 1.1 prezinta clustere de
funcționalitate legate de contribuiția plug -in-urilor în versiunile timpurii ale Eclipse.

Figura 1.1: Arhitectura Eclipse

Workbench este cel mai familiar element UI pentru utilizatorii platformei Eclipse, deoarece
oferă structurile care organizează modul în care Eclipse apare utilizatorului pe desktop.
Workbench constă în perspective, vizualizări și editori. Editorii sunt asociați cu tipuri de
fișiere astfel încât editorul corect este lansat atunci când se deschide un fișier. Un exemplu de
vizualizare este "problema ", vizualizare care indică e rori sau avertismente în codul Java.

37

3
8

Împreună, editorii și punctele de vedere formează o perspectivă care prezintă scule pentru
utilizator într -o manieră organizată.

Workbench Eclipse este construit pe Standard Widget Toolkit (SWT) și Jface.

Widget -urile sunt, în general, clasificate ca fie native sau emulate.

Un set de instrumente de widget nativ utilizează apelurile de sistem de operare pentru a
construi componente de interfață utilizat or, ar fi liste și butoane Push. Interacțiunea cu
componentele este tratată de sistemul de operare. Un set de instrumente widget emulat
implementează componente în afara sistemului de operare, manipularea mouse -ul și tastatura,
desen, focus și alte funcțio nalitate widget în sine, mai degrabă decât amânarea la sistemul de
operare. Ambele modele au puncte forte și puncte slabe diferite.

Widget -ul nativ este "pixel perfect". Widget -urile lor arata si se simt ca omologii lor în alte
aplicații de pe desktop. Furnizorii de sisteme de operare schimbă în mod constant aspectul de
widget -uri și se adaugă caracteristici noi. Widget -ul nativ obține aceste actualizări pentru
drum liber. Din păcate, kiturile de instrumente native sunt dificil de implementat, conducând
la inconsistențe și programe care nu sunt portabile.

Widget -urile emulate oferă aspectul lor propriu, sau încearcă să atragă și să se comporte
ca sistemul de operare.

Avantajul lor fata de cele native este flexibilitatea (deși instrumentele moderne widg et native,
cum ar fi Windows Presentation Framework (WPF) sunt la fel de flexibile).

Deoarece codul pentru a implementa un widget face parte din setul de instrumente, mai
degrabă decât încorporat în sistemul de operare, un widget poate fi făcută pentru a desena și să
se comporte în orice mod.

Programele care folosesc widget -uri emulate sunt extrem de portabile. Începutul widget -urilor
emulate a avut o reputație proastă. Ele au fost de multe ori lente și a făcut o treabă slabă.

38

3
9

JFace este un strat pe partea de sus a SWT care oferă instrumente pentru sarcini comune de
programare UI, cum ar fi cadre pentru preferințe și experți. Ca și SWT, JFace a fost proiectat
pentru a lucra cu multe sisteme de fe restre. Cu toate acestea, codul Java este pur și nu conține
nici un cod nativ platforma.

Platforma a furnizat, de asemenea, un sistem de ajutor integrat bazat pe unități mici de
informații numite subiecte. Un subiect constă dintr -o etichetă și o referinț ă la locația sa.
Locația poate fi un fișier de documentație HTML sau un document XML care descrie linkuri
suplimentare. Subiectele sunt grupate împreună în cuprins (TOCs).

1.2 JavaFX Scene Builder

JavaFX Scene Builder este un instrument vizual care suportă tehnologia drag & drop pentru
crearea interfețelor grafice de utilizator în aplicații JavaFX fără a fi nevoie de codificare.
Utilizatorii doar "trag" componentele de pe desktop, modifica proprietățile lor, și se aplică
stiluri diferite, în tim p ce rezultatul, codul FXML este generat în fundal, care este, evident,
editabil.

Modificările manuale sunt vizibile imediat în Vizualizare proiect.In Scene Builder se scrie
ca intr -o aplicație JavaFX și arată puterea și eleganța acestei noi platforme, c are face parte
din biblioteca standard Java de la lansarea versiunii Java 8.

Instrumentul este conceput doar pentru a crea aplicații construite pe platforma JavaFX,
astfel încât nu este posibil să se dezvolte o interfață grafică pentru alte limbaje.

În timp ce instrumentul vă permite să creați o parte grafică a aplicației, alte părți (logica
aplicației și fișiere CSS) nu poate crea instrumentul. Prin urmare, este recomandat să utilizați

39

4
0

Scene Builder în combinație cu un IDE disponibil. Ieșirile din instrumentele de dezvoltare sub
formă de fișiere Java sau CSS pot fi legate de un proiect creat în Scene Builder, de asemenea,
ieșirea de la Scene Builder poate fi folosit în diverse instrumente de d ezvoltare.

Versiunea beta deschisă a acestui instrument a fost lansată în luna aprilie a 2012 și de atunci a
suferit o dezvoltare ulterioară. Versiunea 2,0 este listat în prezent, care a apărut în luna aprilie a
anului 2014 și vine cu multe îmbunătățiri.

Caracteristici genereale ale versiuii Beta 1.0

-Interfață utilizator Authoring Tool – Scene Builder permite să plasați cu ușurință componente
grafice, forme, panouri de control, containere, precum și animații și efecte pentru o interfață de
utilizator mai sofisticată.

-FXML Visual editor – FXML este un limbaj de marcare bazat pe XML și permite
utilizatorului să definească o interfață de utilizator. De asemenea, permite deschiderea și
editarea fișierelor FXML de la alți utilizatori

-Integr ated Developer Workflow – Scene Builder poate fi utilizat în combinație cu orice
IDE, dar NetBeans este recomandat, el poate interacționa direct cu constructorii de scene.
Modificările FXML în NetBeans sunt reflectate în Scene Builder.

-Examinari in timp ul lucrului -în orice moment în timpul dezvoltării, utilizatorul poate
vedea exact modul în care arată interfața cu utilizatorul . Alternativ, puteți adăuga date de
testare pentru a testa în continuare interfața pe care o creați.

-Scene Builder este scri s ca o aplicație JavaFx, care garantează beneficiile unei aplicatii
Java clasic. Scene Builder este acceptat de sistemele Windows, Mac OS X și Linux.

40

4
1

-Suport CSS -puteți adăuga propriile fișiere CSS pentru fiecare interfață de utilizator pentru
a influența direct aspectul fiecărei componente.

Versiunea 1.1

Această versiune vine în primul rând cu suport pentru platforma Linux, care este susținută de
pachetul JavaFX 2,2 SDK. În același timp, Scene Builder devine o aplicație independentă și
nu mai este necesar să aveți Java Runtime Environment (JRE) instalat înainte de a instala
Scene Builder.

Este disponibil un nou analizor CSS care vă ajută să înțelegeți ce aspecte ale elementului
curent af ectează documentul CSS.

De asemenea, sortează proprietățile definite ale elementelor în mod prioritar, astfel încât să
poată vedea ce proprietăți au prioritate față de altele (în cazul mai multor surse de formatare) și,
de asemenea, pentru claritate.

Versiunea 2.0

Noua versiune suportă în primul rând toate bibliotecile JavaFX API vine cu noua versiune
a platformei (Java SE 8), și aduce o serie de caracteristici noi și îmbunătățiri.

În același timp, întreaga aplicație a fost reproiectată astfel încât componentele sale
individuale să poată face parte dintr -o aplicație mai mare,cum ar fi IDE însăși. Această
proprietate se numește JavaFX Scene Builder Kit. Compoziții grafice de la terți în arhiva JAR
pot fi acum adăugate la biblioteca de componente deja existente.

41

4
2

SceneBuilder poate acum deschide și edita fișiere FXML care conțin obiecte 3D și edita
proprietățile acestor obiecte prin intermediul panoului inspector. Cu toate acestea, capacitate a
de a crea obiecte 3D încă lipsește.

A fost implementat un nou container TextFlow în biblioteca grafică. Elemente modificate
ale panoului bibliotecă, panoului ierarhie, panoului conținut, panoului inspector, fereastră de
previzualizare.

FXML

Limbajul este bazat pe XML, oferind o structură pentru construirea UI separat de logica
aplicației. Un fișier FXML descrie numai aspectul aplicației, în timp ce manipularile de
evenimente pentru control individual sunt descrise într -un fișier separat în Ja va, JavaScript
sau php.

Deși limbajul nu are propria schemă, are o structură de bază predefinită de elemente și
atribute. Datorită faptului că structura FXML este direct parte din Java, dezvoltatorul poate
utiliza documentația pentru a verifica ce elemen te și atribute sunt permise.

Deoarece limbajul se bazează pe XML, exista, desigur, posibilitatea de a deschide și edita
codul în orice editor XML. În principiu, fiecare clasă JavaFX este un element, iar cele mai
multe dintre proprietățile acestor clase pot fi utilizate ca atribute.

FXML este proiectat în principal pentru a proiecta o interfață de utilizator care are o
structură mare și complexă. Este util atât pentru crearea de forme statice sau tabele, precum
și pentru crearea de modele dinamice care conțin scripturi.

42

4
3

2.2.1 Arhitectura

Figura 2.0 – Scene Builder

În secțiunea 1 (Library) este disponibilă o bibliotecă de componente cu care se poate construi
interfața cu utilizatorul. Ele pot indica modul de dispunere al obiectelor sau pot constitui
controale propriu -zise. Acestea sunt grupate pe categorii: Containers, Controls, Menu,
Miscellaneous, Shapes, Charts, 3D.

În secțiunea 2 (Document) este prezentată:

43

4
4

• ierarhia de noduri (Hierarchy). Un obiect care conține și alte obiecte la rândul său
va avea asociată un semn de plus sau minus, după cum conținutul său poate fi
expandat, respectiv restrâns;
• elementele care pot fi injectate în codul sursă (Controller). Este specificată clasa
controller asociată fișierului FXML precum și componentele care au precizat un
identificator unic pe baza căruia pot fi accesate în codul sursă.

În secțiunea 3 se poate previzualiza interfața cu utilizatorul. Aici aceasta se construiește
propriu -zis scena prin operații de tip drag and drop. În partea de sus a secțiunii este indicată
scena de grafuri pentru nodul curent. Dacă nodul care se adaugă inter feței se află deasupra unui
alt obiect, acesta va fi evidențiat în mod deosebit, astfel încât să se poată determina cu exactitate
ierarhia nodurilor din interfața cu utilizatorul. În situația în care un nod este adăugat peste un alt
obiect, acesta va fi in clus în nodul respectiv, stabilindu -se o relație de tip părinte -fiu.

În secțiunea 4 (Inspector) pot fi căutate elemente fie din biblioteca de controale, fie din interfața
grafică. O astfel de funcționalitate este deosebit de utilă în special pentru inter fețele cu
utilizatorul mai complexe, în care identificarea unui element este mai dificilă.

În secțiunea 5 (Properties) se pot stabili proprietățile obiectului selectat în mod curent (efecte,
transformări, asocierea unor foi de stil, aliniere, vizibilit ate, opacitate, orientare).

În secțiunea 6 (Layout) sunt tratate aspecte legate de modul de dispunere a nodului (dimensiuni,
aliniere, poziție, transformări, limite).

În secțiunea 7 (Code) sunt indicate metodele executate din clasa controller atunci când o
acțiune de tipul respectiv se produce asupra interfeței respective. Categoriile de evenimente

44

45

incluse sunt main, drag and drop, evenimente legate de tastaura și mouse, precum și eveniment e specifice
dispozitivelor cu ecran tactil (rotire, glisare, atingere, modificarea rezoluției de vizualizare).

Storage

3.1 Structura aplicatiei

Aplicatia “Storage” contine 4 pachete, impartite dupa cum urmeaz ă:

Figura 3.1 – package

-Controller – reprezint ă legătura dintre interfața grafic ă cu utilizatorul și core -ul aplicației. Acest package conține 5 clase după cum urmează:

Figura 3.1 – package controller

46 Clasa AddItemConroller conține modul in care se transmite itemul de la interfața grafică la baza
de date.

Figura 3.1.1 AddItemController

Clasa DetailController conține modul in care interfața grafică solicită informații despre un
anumit item din baza de date.

47
Figura 3.1.2 DetailContrller

Clasa EditItemController conține modul in care interfața grafică solicită editarea anumitor
informații despre un item din baza de date.

Figura 3.1.3 Ed itItemcController

Clasa FilterController conține modul in care interfața grafică solicită căutarea itemelor după
anumite criterii.

48
Figura 3.1.4 FilterController

Clasa MainController este cea mai complexă clasă din acest package , aceasta conține legătu ra
cu baza de date și modul de gestionare a claselor de mai sus, dar si a altor elemente care nu se
afla in aceste clase.

49 Figura 3.1.5 MainController

-Model – acest package reprezinta partea de core a aplicatiei si contine 5 clase.

Figura 3.2 – package model

Clasa CSVFileManager conține modul de salvare/importare a unui fișier.

Figura 3.2.1 CSVFileManager

Clasa DatabaseManager contine legatura cu baza de date a aplicatiei

50
Figura 3.2.2 DatabaseManager

Clasa FilterManager conține modul de sortare a itemelor

Figura 3.2.3 FilterManager

Clasa Item conține toate atributele pe care trebuie sa le conțină un obiect.

51
Figura 3.2.4 Item

Clasa ItemManager conține metodele de utilizare ale unui Item

Figura 3.2.5 ItemManager

-Utility – acest package conține o singura clasă

52
Figura 3.3 package utility

Clasa Constants este destinata exclusiv pentru stocarea variabilelor constante

Figura 3.3.1 Constants

-view in acest package se afla partea de interfață grafică a aplicației

Figura 3.4 package view
Clasa Alerts conține doua alerte pentru cazul in care se adaugă conținut inadecvat.

53 Figura 3.4.1 Alerts

Clasa EditingCell conține editarea itemului in cel ulele tabelului

Figura 3.4.2 EditingCell

Clasa Storage este clasa principala a aplicației, din aceasta clasa se pornește aplicația

Figura 3.4.3 Storage

54

3.2 Rularea aplicației

Figura 3.5 Home Page

În aceasta fereastră se poate observa elementele din depozit

Figura 3.6 Add Item

55

În aceasta fereastra se adaugă datele elementului, data și descrierea produsului nu sunt afișate in
aplicație, doar in secțiunea de detalii sau in momentul exportării.

Figura 3.7 Home Page after adding

Home Page după adăugarea produselor

Figura 3.8 Item Details

56

În aceasta fereastra se pot observa datele care nu sunt vizibile in Home Page.

Figura 3.9 Edit Item
În aceasta fereastra se poate modifica eventualele erori la inserarea elementelor.

Figura 3.10 Home Page after editing
Așa va arata Home Page după editare(a se observa Quantity)

57
Figura 3.11 Delete Item

În aceasta fereastra se prezintă modul in care se șterge un produs

Figura 3.12 Hom e Page after deleting

Asa va arata Home Page dupa ce se va efectua stergerea unui element

58

Figura 3.13 Export File

În aceasta fereastra se exportează datele din tabel într -un document excel.

Figura 3.14 File Destination
În aceasta fereastra se alege locul unde se va salva fișierul excel exportat din tabel și i se va
atribui un nume.

59
Figura 3.15 Exported File
Acesta este fișierul exportat.

Figura 3.16 Filters
În aceasta fereastra se poate selecta anumite filtre pentru găsirea mai usoară a anumitor produse
din tabel.

Figura 3.16 Filters by name

60 Un mic exemplu de filtrare a datelor.

CONCLUZII

JavaFX reprezintă o tehnologie nouă pentru crearea aplicațiilor desktop și web avansate vizual.
Cu toate că este încă într -un stadiu incipient, din punctul meu de vedere, are multe avantaje fata
de vechiul Swing, una dintre ele fiind fapul că aceeași aplicație poate fi rulată de sine stătător,
ca applet, sau ca aplicație de tip Web Start.
În plus, orice component din JavaFX poate fi modificat ca aspe ct folosind directive CSS.
Pentru JavaFX există o aplicație care permite dezvoltarea vizuală de interfețe grafice, numită
JavaFX Scene Builder.
Aplicația “Gestionarea Depozitului” susține evolutia continua a tehnologiei, oferind
posibilitatea și comoditate a reazirării unei rezervări doar introducand cateva date.
Pe viitor exista mai multe direcții în care aplicația poate fi dezvoltată, una dintre ele fiind
posibilitatea de a vedea camerele.

61
BIBLIOGRAFIE

1) https://books.google.ro/books/about/Pro_JavaFX_8.htmlid=RloWBAAAQBAJ&printsec=fro
ntcover&source=kp_read_button&redir_esc=y#v=onepage&q&f=false
2) http://www.informit.com/articles/arti cle.aspx?p=2273822

3) https:// www.amazon.com/Learn -JavaFX -Building -Experience -Interfaces/dp/148421143X/
ref=sr_1_1?s=books&ie=UTF8&qid=1460398710&sr=1 -1&keywords=javafx

Similar Posts