Sunteți pe pagina 1din 20

1.

Prezentarea mediului Java


1.1. Introducere
Limbajul Java mpreun cu mediul su de dezvoltare i execuie au fost proiectate pentru a rezolva o parte dintre problemele actuale ale programrii. Proiectul Java a pornit cu scopul declarat de a dezvolta un software performant pentru aparatele electronice de larg consum. ceste ec!ipamente se definesc ca fiind" mici# portabile# distribuite i lucr$nd n timp real. %e la aceste aparate# ne&am obinuit s cerem fiabilitate i uurin n exploatare. 'dcinile limbajului Java se afl ntr&un proiect de cercetare (proiectul )*reen+, al firmei -./. 0oordonator de proiect este numit James *osling# unul din veteranii designului software&ului de reea. 1enirea proiectului era aceea de a crea obiecte casnice )detepte+ i de a le face s comunice unele cu altele. Limbajul luat iniial n considerare a fost 022. -e pare ns c 022 nu a fost limbajul care s satisfac cerinele unui astfel de proiect. 0a urmare# James *osling d natere unui nou limbaj care l va face mai t$rziu celebru. La nceput limbajul se numea )3a4+# n cinstea arborelului din faa ferestrei lui *osling. 5n urma unei demonstraii reuite a proiectului# i implicit a limbajului# firma -un are o tentativ de a folosi acest limbaj n 6nteractive 7elevision 6ndustr8# tentativ care va fi ns un eec. ceasta se nt$mpla n 9::;. 5n timp ce *reen i 3a4 i cutau cumprtorii n domeniul 7eleviziunii 6nteractive# o nou apariie sc!imb lumea 6nternet n primvara lui 9::<" 1ar4 ndersen# nc student# lucr$nd la National Center for Supercomputing Applications (NCSA) lanseaz 1osaic 9.=# primul browser >>> grafic. Pierz$nd cursa n domeniul televiziunii interactive# 3a4 ncepe o alta n >>>. ?c!ipa proiecteaz un nou browser >>># numit >eb 'unner# cu capabiliti de rulare a aplicaiilor dezvoltate n limbajul 3a4. ? momentul n care 3a4 i sc!imb numele n J @ # marca 3a4 exist$nd deja pe pia. Airma /etscape ajut lansarea limbajului Java prin cumprarea licenei i integrarea lui n browser&ele /etscape. Java intr astfel n cursa limbajelor de programare evoluate. stfel# n noiembrie 9::B este disponibil prima versiune Ceta a limbajului Java. %e atunci limbajul se afl ntr&o continu ascensiune trec$nd de la versiunea 9.= (n 9::B, la 9.9 (n 9::D,# la 9.E (n 9::F, i n acest moment la 9.< (n E===,# versiunea 9.; fiind de tip beta (vara E==9,. Aiecare versiune implementeaz noi concepte i noi unelte care i fac apariia n lumea Java. 'ezultatul este surprinztor n lumea software. Java se profileaz ca un limbaj# un mediu de programare puternic# o te!nologie a viitoarelor dezvoltri software. 5n acest moment cele mai mari firme de software au cumprat licena 9

Java de la firma -un n vederea dezvoltrii unor produse care consider te!nologia Java. 5n primul r$nd# Java ncearc s rm$n un limbaj simplu de folosit c!iar i de ctre programatorii neprofesioniti# programatori care doresc s se concentreze asupra aplicaiilor n principal i abia apoi asupra te!nicilor de implementare a acestora. ceast trstur poate fi considerat ca o reacie direct la complexitatea considerat a limbajului 022. u fost ndeprtate din Java aspectele cele mai derutante din 022 precum suprancrcarea operatorilor i motenirea multipl. fost introdus un colector automat de gunoaie (garbage collector, care s rezolve problema dealocrii memoriei n mod uniform# fr intervenia programatorului. 0olectorul de gunoaie nu este o trstur nou# dar implementarea acestuia n Java este fcut inteligent i eficient folosind un fir separat de execuie# pentru c Java are ncorporate faciliti de execuie pe mai multe fire de execuie implicit. stfel# colectarea gunoaielor se face de obicei n timp ce un alt fir ateapt o operaie de intrare&ieire sau pe un semafor. Limbajul Java este independent de ar!itectura calculatorului pe care lucreaz# ceea ce i confer portabilitate. 5n loc s genereze cod nativ pentru o platform sau alta# compilatorul Java genereaz o secven de instruciuni ale unei maini virtuale Java. ?xecuia aplicaiilor Java este interpretat. -ingura parte din mediul de execuie Java care trebuie portat de pe o ar!itectur pe alta este mediul de execuie cuprinz$nd interpretorul i o parte din bibliotecile standard care depind de sistem. 5n acest fel# aplicaii Java compilate pe o ar!itectur -P '0 de exemplu# pot fi rulate fr recompilare pe un sistem bazat pe procesoare 6ntel. .na dintre principalele probleme ale limbajelor interpretate este viteza de execuie# considerabil sczut fa de cea a limbajelor compilate. %ac nu este mulumitoare viteza de execuie a unei astfel de aplicaii# se poate cere mediului de execuie Java s genereze automat# plec$nd de la codul mainii virtuale# codul specific mainii pe care se lucreaz# obin$ndu&se astfel un executabil nativ care poate rula la vitez maxim. %e obicei ns# n Java se compileaz doar acele pri ale programului# mari consumatoare de timp# restul rm$n$nd interpretate pentru a nu se pierde flexibilitatea. 1ediul de execuie nsui este scris n 0 respect$nd standardele P3-6G# ceea ce l face extrem de portabil. 6nterpretorul Java a fost iniial g$ndit s lucreze pe maini mici# precum ar fi procesoarele cu care sunt dotate aparatele casnice. 6nterpretorul plus bibliotecile standard cu legare dinamic nu depesc <== Hb. 0!iar mpreun cu interfaa grafic totul rm$ne mult sub 9 1C# ceea ce i confer un imens avantaj. Limbajul Java este pur orientat obiectual. 0u el se pot crea clase de obiecte i instane ale acestora# se pot ncapsula informaiile# se pot moteni E

variabilele i metodele de la o clas la alta# etc. -ingura trstur specific limbajelor orientate obiect care lipsete este motenirea multipl# dar pentru a suplini aceast lips# Java ofer o facilitate mai simpl# numit interfa# care permite definirea unui anumit comportament pentru o clas de obiecte# altul dec$t cel definit de clasa de baz printr&o implementare specific a unei interfee. 5n Java orice element este un obiect# n afar de datele primare. %in Java lipsesc funciile i variabilele globale. /e rm$n desigur metodele i variabilele statice ale claselor. Java este distribuit# av$nd implementate biblioteci pentru lucrul n reea care ne ofer 70PI6P# .'L i ncrcarea resurselor din reea. plicaiile Java pot accesa foarte uor reeaua# folosindu&se de apelurile ctre un set standard de clase. Java este robust. 5n Java legarea funciilor se face n timpul execuiei i informaiile de compilare sunt disponibile p$n n momentul rulrii aplicaiei. cest mod de lucru face ca sistemul s poat determina n orice moment neconcordana dintre tipul referit la compilare i cel referit n timpul execuiei evit$ndu&se astfel posibile intruziuni ruvoitoare n sistem prin intermediul unor referine falsificate. 5n acelai timp# Java detecteaz referinele nule dac acestea sunt folosite n operaii de acces. 6ndicii n tablourile Java sunt verificai permanent n timpul execuiei i tablourile nu se pot parcurge prin intermediul unor pointeri aa cum se nt$mpl n 0I022. %e altfel# pointerii lipsesc complet din limbajul Java# mpreun cu ntreaga lor aritmetic# elimin$ndu&se astfel una din principalele surse de erori. 5n plus# eliberarea memoriei ocupate de obiecte i tablouri se face automat# prin mecanismul de colectare de gunoaie# evit$ndu&se astfel ncercrile de eliberare multipl a unei zone de memorie. Java este un limbaj cu securitate ridicat. ?l verific la fiecare ncrcare codul prin mecanisme de 0'0 i prin verificarea operaiilor disponibile pentru fiecare set de obiecte. 'obusteea este i ea o trstur de securitate. La un al doilea nivel# Java are incorporate faciliti de protecie a obiectelor din sistem la scriere iIsau citire. @ariabilele protejate ntr&un obiect Java nu pot fi accesate fr a avea drepturile necesare# verificarea fiind fcut n timpul execuiei. 5n plus# mediul de execuie Java poate fi configurat pentru a proteja reeaua local# fiierele i celelalte resurse ale calculatorului pe care ruleaz o aplicaie Java. Limbajul Java are inclus suportul nativ pentru aplicaii care lucreaz cu mai multe fire de execuie# inclusiv primitive de sincronizare ntre firele de execuie. cest suport este independent de sistemul de operare# dar poate fi conectat# pentru o performan mai bun# la facilitile sistemului dac acestea exist. Java este dinamic. Cibliotecile de clase n Java pot fi reutilizate cu foarte mare uurin. 0unoscuta problem a fragilitii superclasei este <

rezolvat mai bine dec$t n 022. colo# dac o superclas este modificat# trebuie recompilate toate subclasele acesteia pentru c obiectele au o alt structur n memorie. 5n Java aceast problem este rezolvat prin legarea t$rzie a variabilelor# late binding# doar la execuie. 'egsirea variabilelor se face prin nume i nu printr&un deplasament fix. %ac superclasa nu a ters o parte dintre vec!ile variabile i metode# ea va putea fi refolosit fr s fie necesar recompilarea subclaselor acesteia. -e elimin astfel necesitatea actualizrii aplicaiilor# generat de apariia unei noi versiuni de bibliotec aa cum se nt$mpl# de exemplu# cu toate celelalte ierar!ii 022.

1.2. Tehnologia Java


7e!nologia Java reprezint pe de&o parte un limbaj de programare# pe de alt parte o platform.

1.2.1. Limbajul de programare Java


Limbajul de programare Java este un limbaj de nivel nalt care este aa cum am artat caracterizat de urmtoarele" simplitate# orientat pe obiecte# distribuit# interpretat# robust# sigur# neutru din punct de vedere al ar!itecturii# portabil# performan ridicat# fire multiple de execuie# dinamic. -pre deosebire de alte limbaje de programare# n care avem de compilat sau de interpretat un program pentru a putea fi executat ntr&un calculator# limbajul Java este mai deosebit prin faptul c un program este compilat i interpretat. 0u compilatorul se translateaz mai nt$i programul ntr&un limbaj intermediar denumit Java&b8tecode# care este un cod independent de platform i este interpretat de interpretorul platformei Java. cest interpretor analizeaz i ruleaz fiecare instruciune Java&b8tecode pe calculator. 0ompilarea se face o singur dat# iar interpretarea intervine ori de c$te ori este nevoie s se execute programul. Figura 1.1. ilustreaz tot acest proces de creare a unei aplicaii Java.

Figura 1.1. Etapele necesare n crearea i execuia unei aplicaii Java

Java&b8tecode se poate interpreta ca fiind instruciuni n limbaj main pentru procesorul denumit 1aina @irtual Java ( Java irtual !ac"ine J Java @1# J@1,. 3rice interpretor Java# c!iar dac este un mediu de dezvoltare sau este un browser >eb capabil s ruleze applet&uri# este o implementare a J@1. Java&b8tecode ajut ca sintagma )scrie o singur dat# ruleaz oriunde+ ( #rite once$ run an%#"ere, s fie posibil compilarea unui program n Java&b8tecode pe orice platform care are un compilator Java instalat. cest cod binar rezultat poate fi executat pe orice implementare a Java @1. cest lucru nseamn c at$t timp c$t un calculator are instalat Java @1# acelai program poate fi rulat pe o staie cu >indows E===# o staie -olaris# sau pe un 1ac (Figura 1.2.).

Figura 1.2. Java ! pe diverse platforme

1.2.2. Platforma Java


3 platform este un mediu !ardware sau software n care se execut un program. 0ele mai populare platforme# de exemplu >indows E===# Linux# -olaris# 1ac3-# pot fi descrise ca fiind o combinaie dintr&un sistem de operare i un sistem !ardware adecvat. Platforma Java difer de celelalte platforme prin faptul c este o platform exclusiv software care ruleaz deasupra altor platforme bazate pe !ardware. Platforma Java este compus din dou componente" &1aina virtual Java (Java irtual!ac"ine J Java @1, &6nterfaa de programare a aplicaiilor Java ( Java Application &rogramming 'nterface J Java P6, 1aina virtual Java# introdus n sub&capitolul precedent# este baza platformei Java i a fost portat pe diverse platforme bazate pe !ardware.

Java P6 este o colecie de componente software care furnizeaz multe posibiliti utile# cum ar fi utilitare pentru interfaa grafic cu utilizatorul. Java P6 este grupat n biblioteci de clase i interfee# aceste biblioteci purt$nd numele de pac!ete (pac(ages,. Aigura urmtoare (Figura 1.3), descrie un program care ruleaz pe platforma Java. %up cum se vede Java P6 i Java @1 izoleaz programul de partea !ardware a sistemului.

Figura 1.3. &latforma Java i de*voltarea unei aplicaii 0odul nativ este codul care dup compilare# (codul compilat, ruleaz pe o platform !ardware specific. %eoarece este un mediu independent de platform# platforma Java este mai lent dec$t codul nativ# totui# compilatoarele mai inteligente# interpretoarele bine configurate# i compilatoarele de b8tecode pot s fie suficient de rapide# aproape ca i codul nativ fr s afectm portabilitatea programului.

1.2. . !plica"ii #n Java


0ele mai nt$lnite tipuri de aplicaii scrise n limbajul de programare Java sunt applet&urile i aplicaiile de sine stttoare (stand alone,. .n applet este un program care se supune unor convenii i ruleaz ntr&un browser >eb care suport Java. 3 aplicaie de sine stttoare este un program independent care ruleaz direct pe platforma Java. 6n Java se poate realiza i un applet&aplicatie# appletcation care funcie de context poate fi tratat ca i" &applet de ctre un browser sau appletviewer &aplicaie grafic de ctre interpretorul Java. .n alt tip de aplicaii Java sunt servlet&urile. .n servlet se aseamn cu un applet# prin faptul c ruleaz n interiorul unei alte aplicaii care suport mediul Java# i respect regulile impuse de aceasta. 5n cazul servlet&ului aplicaia este un server de >eb. -ervlet&urile Java sunt folosite pentru construirea de aplicaii >eb interactive# fiind un nlocuitor al script&urilor 0*6. 7oate aceste tipuri de aplicaii Java sunt suportate de ctre Java P6 prin intermediul pac!etelor de componente software care ofer o gam larg de K

funcionaliti. 0ele mai importante trsturi oferite de acestea se refer la trsturi" &de baz# obiecte# iruri# fire de execuie# lucrul cu numere# operaii inputIoutput# structuri de date# informaii sistem# data i timpul# etc. &applet&uri# setul de convenii folosite de applet&uri. &reea# lucrul cu .'L&uri# lucrul cu protocoalele 70P ( +ransmission Control &rotocol,# .%P (,ser -atagram &rotocol,# i 6P ('nternet &rotocol,. &internaionalizare# ajut la scrierea de programe care pot fi localizate oriunde pe glob. stfel programele se pot adapta automat la setrile locale i coninutul va fi afiat n limba local. &securitate# de nivel mic sau mare# care cuprinde semntura electronic# gestiune de c!ei publice i private# controlul accesului# i certificarea. &componente software# sunt cunoscute sub denumirea de JavaCeans# sunt componente software reutilizabile care se pot integra ntr&o ar!itectur de componente existent. &serializare de obiecte# permite persistena obiectelor i comunicaia folosind te!nologia '16 (.emote !et"od 'nvocation,. &acces la baze de date# J%C0 (Java -atabase Connectivit%, asigur accesul la o gam foarte larg de baze de date relaionale. Platforma Java mai cuprinde i P6&uri pentru grafic E% i <%# accesibilitate# servere# colaborare# telefonie# te!nica vorbirii# animaie# i multe altele. Aigura urmtoare (Figura 1.4., arat modul de alctuire a platformei Java E -%H (Soft#are -evelopment /it, -tandard ?dition.

Figura 1.4. Java 0 S-/$ Standard Edition$ versiunea 1)2) 1ediul de execuie Java E (J'? J Java .untime Environment, este compus din maina virtual Java# clasele nucleu# i alte fiiere. Java E -%H D

include J'? i instrumentele de dezvoltare cum ar fi compilatoarele i debuggerele. 1.2. .1. $e%crierea pachetului J$& ?ste important ca nainte s trecem la realizarea unei aplicaii Java s discutm despre uneltele i bibliotecile de care dispunem. La baza dezvoltrii unui program Java st mediul de dezvoltare pus la dispoziie de firma -un. cesta este Java %eveloper Hit (J%H, i trebuie considerat ca mediu de referin n programarea Java. cest 4it a evoluat# ncep$nd ce versiunea J%H 9.= i apoi J%H 9.9# J%H 9.E# p$n la versiunea J%H 9.<# actualmente apr$nd versiunea beta pentru 9.;. -e consider important ca un programator Java s cunoasc mai nt$i uneltele standard i apoi s treac la utilizarea uneltelor mai performante. 1ediul J%H conine pe de&o parte o serie de biblioteci de clase Java necesare scrierii unui program i pe de alt parte un set de utilitare necesare compilrii# testrii# execuiei i documentrii unei aplicaii Java. .n fiier cu extensia L.class# reprezint unitatea fundamental a unui program executabil Java. 3 bibliotec de clase cuprinde o serie de clase ce au un numitor comun. 3 astfel de bibliotec este cunoscut n Java sub numele de pac(age. J%H&ul include c$teva pac4age&uri fundamentale# care conin clase fr de care nu se pot dezvolta aplicaii Java performante. Pac4age&urile Java incluse n J%H# formeaz principalul P6& Application &rogramming 'nterface numit i Java Core. 3rice alt mediu care poate executa aplicaii Java diferit de mediul J%H trebuie s includ acest P6. Pe l$ng aceste pac!ete fundamentale grupate n Java 0ore utilizatorul poate folosi i altele dezvoltate de ctre utilizatori. 7rebuie ns s se asigure c aceste pac!ete adiionale# sunt disponibile i pe platforma pe care aplicaia se execut# nu numai unde aceasta a fost creat. 1.2. .2. Pachete de baz' J$& 1. . J%H 9.<. conine urmtoarele pac4age&uri de baz" pac4age java.applet 0onine clase necesare dezvoltrii unui applet# a unui program Java care se execut n cadrul unui browser >>> sau este rulat cu appletviewer&ul. pac4age java.awt# java.awt.datatransfer# java.awt.event# java.awt.image -unt utilizate pentru dezvoltarea de interfee grafice standard. pac4age java.beans F

cesta include clasele necesare lucrului cu stream&uri (comunicare cu device&uri 6nputI3utput# comunicare cu consola# accesul la fiiere# etc.,. pac4age java.lang 0onine clasele fundamentale fr de care nici un program Java nu poate exista. .tilizarea unei clase din oricare alt pac!et dec$t java.lang ntr&un program Java# se specific n clar prin directiva import numeMpac!et. . cest pac!et este inclus automat de ctre compilator fr a fi nevoie de precizri suplimentare. pac4age java.lang.reflect ?ste utilizat pentru a putea face o verificare a entitilor Java# a claselorIobiectelor Java. ceast verificare este foarte util n cazul dezvoltrii de aplicaii flexibile i dinamice. pac4age java.mat! -e folosete pentru utilizarea de funcii matematice standard implementate. pac4age java.net ?ste utilizat pentru programarea n reea i conine o sumedenie de clase pentru aceasta. pac4age java.rmi# java.rmi.dgc# java.rmi.registr8# java.rmi.server ceste pac!ete sunt utilizate pentru crearea unor aplicaii Java ce lucreaz n sisteme distribuite ( '16 J .emote !et"od 'nvocation ,. Aaciliteaz apelul unor metode din obiecte disponibile pe fiecare din calculatoarele conectate n reea. pac4age java.securit8# java.securit8.acl# java.securit8.interfaces -unt pac!ete ce privesc asigurarea unui mecanism de securitate al sistemului software dezvoltat. pac4age java.sNl ?ste utilizat pentru lucrul cu bazele de date. pac4age java.text ?ste utilizat pentru lucrul cu texte. pac4age java.util 3fer suport pentru lucrul cu liste# vectori# dicionare# informaii legate de dat i timp# etc. :

pac4age java.util.zip# java.util.jar -unt pac!ete necesare atuci c$nd se lucreaz cu algoritmi de compresie i decompresie. pac4age java.awt.color Aurnizeaz clase pentru lucrul cu culori. pac4age java.awt.font 0lase pentru lucrul cu fonturi. pac4age java.awt.geom Arunizeaz clase E% pentru lucrul cu geometrie bidimensional. pac4age java.awt.im 0lase i interfae pentru metode de intrare. pac4age javax.naming# javax.naming.director8# javax.naming.event# javax.naming.ldap# javax.naming.spi Aurnizeaz o interfa pentru dezvoltarea metodelor de intrare care pot fi utilizate cu orice J'?. pac4age javax.sound.midi Aurnizeaz interfee i clase pentru secvene audio de intrareIieire. pac4age javax.sound.sampled Aurnizeaz interfee i clase pentru captarea# prelucrarea i rularea fiierelor audio. pac4age javax.swing Aurnizeaz un set de componente grafice pentru toate limbajele Java# care lucreaz la fel pe orice platform. pac4age org.omg.03'C Aurnizeaz maparea P6&ului 31* 03'C n limbajul de programare Java # incluz$nd clasa 3'C care este implementat pentru ca un programator s o poat utiliza complet ca i un 3b4ect .e5uest 6ro(er (3'C,. Pe l$ng P6&ul Java 0ore pac!etul J%H pune la dispoziia programatorului o serie de unelte necesare dezvoltrii# testrii# analizei i documentrii programelor. 9=

Principalele unelte utilizate n Java sunt" javac 7 Java 8anguage Compiler ?ste compilatorul Java care transform sursele text av$nd extensia L.java scrise n limbaj de programare Java# n cod executabil pe maina virtual Java (J@1,# n b%tecode# adic fiiere de tip class. Exemplu" javac nume_fiier.java java J Java 'nterpreter 6nterpretorul Java execut programele Java# realiz$nd nivelul de J@1 deasupra platformei reale. Prin lansarea n execuie a acestui utilitar se pornete de fapt J@1. Programul emuleaz J@1 convertind instruciunile J@1 din b8tecode n instruciuni ale mainii reale. 3bservaie" ceast unealt este util doar pentru aplicaiile stand9 alone sau appletcation. javadoc cest program genereaz documentaia programelor Java n format !tml. %ocumentarea se face pa baza comentariilor specifice Java din program i acest program se aplic doar asupra fiierelor surs Java. Exemplu: javadoc nume_fiier.java 3rice main virtual Java (fie interpretor fie browser, se presupune c are acces la fiierele b8tecod existente n mediul J%H. ceasta n cazul n care se formeaz versiuni. @ariabila de mediu 0L --P 7O este cea care definete cile de acces la biblioteci.

1. . $e%crierea limbajului Java prin compara"ie cu limbajul ()(**


Limbajul 0 i limbajul Java sunt foarte asemntoare. 0uvintele c!eie i operatorii sunt motenii de Java din 0# n mod particular tipurile de date# fluxurile de control# toi operatorii constituie corpul tuturor aplicaiilor. 'estul aplicaiei Java este reprezentat de construcii orientate obiect i se refer mai mult la cadrul de lucru i proiectare al aplicaiei i mai puin la implementare. 99

3 aplicaie Java este format doar din clase# o singur clas implement$nd metoda main) -pre deosebire de 022# limbajul Java este n ntregime orientat pe obiecte (33P J 3b4ect 3riented &rogramming,. Java este robust# mrind gradul de siguran al codului# exist$nd dou nivele de verificare" unul la compilare i unul la rulare. ccesul la tablourile Java este verificat la rulare# elimin$nd astfel accesul accidental sau maliios n afara domeniului tabloului. Pentru a crea i a lansa n execuie o aplicaie sunt necesare mai multe operaii. 5n continuare sunt prezentate etapele necesare dezvoltrii i lansrii n execuie a unei aplicaii stand9 alone. cestea sunt" &scrierea codului &compilarea &interpretarea i lansarea n execuie ceste etape sunt reprezentate sugestiv in diagrama din Figura 1.1. ?ditarea unui program Java se face utiliz$nd orice editor simplu de text# care salveaz datele n format text. ?ste important ca fiierul n care se salveaz programul s aib numele clasei respective (doar n cazul n care clasa este declarat public,. 6ar n cazul dezvoltrii aplicaiilor stand9alone este obligatoriu ca n clas s fie metoda main() de forma" public static void main(String args[] ){..} ceast metod trebuie s existe n orice aplicaie Java# fiind prima metod apelat de interpretor c$nd se lanseaz n execuie un program Java. Exemplu de program: class plicatie!ava { public static void main (String args []){ S"stem.out.println(# plicatie demonstrativa $%)& } } cest program va fi salvat cu numele plicatieJava.java ns nu obligatoriu pentru c# clasa nu este public. 5n continuare se va realiza compilarea programului prin comanda" javac plicatie!ava.java

9E

%ac compilarea se face cu succes va rezulta un fiier cu extensia class" plicatieJava.class# fiier care conine programul executabil (b8tecod, Java. %up ce am obinut fiierul cu extensia class se lanseaz n execuie folosind interpretorul Java cu comanda" java plicatie!ava 5n urma acestei comenzi se va afia la consol" P plicatie demonstrativa Q+ @om face n continuare o scurt trecere n revist a principalelor componente comune ntre limbajul 0 i Java. Cuvintele c"eie i operatorii dau simul i expresivitatea unui limbaj de programare ele fiind luate de Java din 0. Java reine elementele coincise lipsite de posibile erori i compacte ce duc la dezvoltarea aplicaiilor eficiente. Cuvintele c"eie comune celor dou limbaje constituie nucleul aplicaiei. ceste cuvinte c!eie mpreun cu operatorii determin majoritatea construciilor folosite n realizarea funciilor dorite. 0adrul de realizare a aplicaiei poate fi obiectual dar implementarea este foarte aproape de cea din 0. Limbajul Java folosete i cuvinte c!eie specifice 022 av$nd i propriile cuvinte c!eie (pac(age$ import$ extends$ instance3f$ super# etc., 3peratorii sunt clasificai n acela mod ca i cei din limbajul 0 dar sunt mai clar definii. %ac n limbajul 0 se permite a converti o valoare numeric n una boolean expresia (xR9=, fiind convertit n valoarea boolean true# n limbajul Java acest lucru nu este posibil. 6n limbajul Java se determin un cost pornind de la un tabel de costuri cu 9K intrri care permite conversia ntre tipuri de date. 0ostul = (zero, este pentru conversia unui tip n el nsui. %ac costul este mai mare de 9= atunci precizia se pierde semnaliz$ndu&se un avertisment. 0ompararea a dou obiecte din punct de vedere al coninutului lor se face cu metoda e5uals()# operatorul de comparaie# RR compar$nd doar adresele obiectelor respective. 6n plus Java introduce operatorul SSS ca i operator de deplasare dreapta fr extensia semnului. /u se folosesc operatorii si*eof pentru determinarea dimensiunii# indirectare L# adresare T# acces &S iar operatorul virgul # ca i evaluare secvenial se mai poate folosi doar n structuri de control de tip for. ?xist patru modaliti de a considera variabilele n Java" &declarareU boolean o'& 9<

float aria& &asignare# ce permite asignarea unei valori la o variabil declarat n prealabil" aria()*.+& &iniializri# ce sunt asignri combinate cu declaraiiU boolean o'(true& &cast&uri# dac dorim s plasm o valoare de un tip intr&o variabil de alt tip lucru ce e permis doar pentru tipuri compatibile" int iaria ( (int) aria& -e observ c i n acest caz Java este mai robust. 'dentificatorii respect aceleai reguli ca i n limbajul 0 lungimea lor fiind ori c$t de mare recomand$ndu&se ca" &numele clasei# a variabilelor din metode i a parametrilor s nceap cu liter mic &numele metodelor s nceap cu M &constantele s se scrie cu litere mari. Constantele se declar n afara corpului funciilor din cadrul claselor n general fiind prefixate de cuvintele c!eie public static i final nsemn$nd c asignarea e final public i nu poate fi modificat. Aiind statice accesul la aceste constante se va face prefix$ndu&le cu numele clasei si operatorul punct. 0onstanta de tip caracter se mai poate reprezenta i ca o notaie de tip ,nicode de forma" VWuxxxxX. ?xist unele modificri de asemenea la secvenele escape. 3 expresie este ori ce combinaie de operatori i operanzi care trebuie s fie evaluat pentru a produce o valoare. Java a adoptat puterea i facilitile expresiilor din 0I022 cu unele diferene in$nd cont de faptul c Java este independent de platform i internaional. %e aceea tipurile de date primitive sunt erxtrem de clar i precis definite fa de limbajul 0 ele fiind" &b%te# reprezint 9 octet ca o valoare cu semn &boolean# este pe bit av$nd dou valori# true i false neput$nd fi convertit n alt tip de dat i nu poate fi obinut din alt tip de dat &c"ar se reprezint pe E octei n ,nicode respect$nd regulile de conversie la ntregi din 0 &s"ort$ int$ long sunt ntregi cu semn pe 9K# <E i K; bii mprirea cu zero activ$nd excepia Arit"meticException &double$ float sunt reali pe K; respectiv <E de bii. ?xist constante predefinite" &P3-676@?M6/A6/67Y

9;

&/?* 76@?M6/A6/67Y ce apar la cazurile de depire c$nd nu se declaneaz excepii. Java a adoptat standardul 6??? DB; prin care toate tipurile de date au o lungime fix evit$nd ambiguiti i independena fa de platform. Limbajul Java ofer de asemenea pentru fiecare tip elementar c$te o clas ale cror instane reprezint obiecte similare valorilor cu tipuri elementare. ( S"ort$ 'nteger$ ;loat$ 6oolean# etc., 1etodele din aceste clase permit diverse operaii ce pot fi efectuate cu obiectele respective. Structurile de control din Java ofer abilitatea de a selecta diferite ramuri de urmat funcie de unele puncte de decizie precum i efectuarea de cicluri n program. ceste structuri de control au fost adoptate de Java din 0 cu urmtoarele observaii" &condiia pe baza creia se ia decizia trebuie s fie o expresie de tip boolean &instruciunile brea( i continue pot avea i variabile ca i etic!ete permi$nd forarea ieirii nu neaprat imediat dup ea respectiv reluarea unui ciclu exterior av$nd etic!eta precizat &s&a eliminat instruciunea goto rezerv$ndu&se ns cuv$ntul# etc. Pentru tratarea excepiilor s&au introdus pe l$ng instruciuni specifice 022 i alte instruciuni Java. stfel se folosesc instruciunile tr%$ catc"$ t"ro#$ t"ro#s i finall%. lte instruciuni specifice limbajului Java sunt s%nc"roni*ed$ pac(age i import) +ablourile i irurile de caractere sunt tratate n Java ca nite obiecte de clas primar ce nu sunt ns supuse la erori i confuzii ca cele din 022. +ablourile n Java pot deci pstra la fiecare indice un obiect sau o valoare primitiv toate datele fiind ns de acela tip. 7ablourile n Java " &se declar oferind o referin &se creeaz aloc$ndu&se spaiu de memorie dinamic &se asigneaz valori tabloului &se distrug c$nd nu mai sunt folosite. 7ablourile difer fa de cele din limbajul 0 prin urmtoarele" &se creeaz folosind operatorul ne## dimensiunea tabloului fiind introdus doar n expresia ne#$ int i,ablou[]( ne- int[+]& &fiind derivate direct din clasa 3bject aceast clas rdcin a ierar!iei definete mai multe metode i date astfel nc$t toate tablourile memoreaz lungimea de alocare ntr&o variabil numit lengt" care poate fi accesat ori c$nd astfel# int lung,abl( i,ablou.lengt.& 9B

&ele sunt protejate la depirea indicilor at$t inferior c$t i superior decan$ndu&se o ntrerupere Java Arra%'ndex3ut3f6oundException &tablorile multidimensionale se declar ca i tablouri de tablouri put$nd aloca dimensiune specific fiecrei coloane ulterior &copierea tablourilor se face folosind metoda arra%cop%()) %ei nu avem pointeri n Java c$nd se d ca i parametru ntr&o metod un tablou practic se transfer referina ctre acel tablou i nu valoarea componentelor. a cum am mai spus irurile de caractere reprezint obiecte derivate din clasa 3bject. ?le se implementeaz cu ajutorul claselor" &String# pentru iruri constante &String6uffer# pentru iruri modificabile &String+o(eni*er# permite mprirea unui ir pe componente pentru a putea fi extrase. .n obiect al clasei String poate fi privit ca i un tablou de caractere reprezentate n .nicode el nefiind terminat printr&un octet cu valoarea = ca i n limbajul 0. 7oate aceste clase specifice irurilor de caractere din Java posed diverse metode ce permit prelucrarea lor. %ac tablourile odat ce au fost create i pstreaz dimensiunea# n cadrul clasei ector putem aduga sau elimina n continuare elemente. @ectorii se folosesc n locul tablourilor atunci c$nd" &avem un numr variabil de elemente i vrem s adugm sau s tergem unele elemente &elementele trebuie s fie obiecte iar datele primare pot fi convertite uor n obiecte folosind clasele Java &dorim s determinm uor unde e plasat un obiect i care e poziia lui. @ectorii reprezint o facilitate extrem de util oferit de ctre limbajul Java n realizarea unor aplicaii care utilizeaz date variabile sau transfer un numr variabil de argumente la o funcie. !etodele (funciile) din Java sunt foarte asemntoare cu cele din limbajul 0I022 doar c Java a simplificat lucrurile prin faptul c metodele sunt incluse doar n clase. 6n acest mod metodele normale vor fi invocate folosind un obiect instaniat iar cele statice prin intermediul numelui clasei n care au fost definite. 1etodele statice permit definirea de funcii utilitare care pot fi de sine stttoare dac declarm i clasa public. -i n limbajul Java metoda main() permite utilizarea argumentelor n linia de comand< av$nd un singur argument de tip tablou de iruri de caractere. Practic nu este nevoie de un alt parametru care s specifice numrul de 9K

argumente# acesta fiind pstrat n variabila lengt! asociat tabloului iar argumentul dependent de sistemul de operare a fost eliminat pentru a pstra facilitatea multiplatform a limbajului. rgumentele se preiau ca i iruri de caractere urm$nd a fi apoi convertite la alte tipuri cu metode oferite de ctre limbaj. Java nu mai transfer ca prim argument numele aplicaiei. &ointerii nu exist n limbajul Java ei cre$nd multe probleme n limbajul 0 n cazul n care ei nu erau bine gestionai de ctre programatori. /umele unor tablouri sau obiectele neinstaniate din Java sunt ns similare ca i funcionalitate cu pointerii din 0. proape toate cerinele se pot rezolva asfel privind accesul la date prin adrese cu urmtoarele excepii" &nu se poate realiza transferul datelor n cadrul metodelor prin adres dei tablorile i obiectele sunt transferate prin adres# implicit n funcia apelat fc$ndu&se o copie a lor. %ac se dorete o modificare a unor valori se vor folosi metode care returneaz valori. &nu se pot folosi pointeri la funcii# aceast funcionalitate put$nd fi obinut cu ajutorul funciilor virtuale sau a motenirii. 7abelele de pointeri spre funcii pot fi realizate cu ajutorul variabilelor neinstaniate ale clasei 3b4ect precum i cu ajutorul identificatorilor de tip run9time. 6ntre bibliotecile standard oferite de ctre limbajul 0 i ierar"ia de clase oferit de ctre limbajul Java exist similariti funcionale# clasele Java adug$nd multe alte faciliti. %ac n limbajul 022 clasele au fost adugate peste un limbaj secvenial# limbajul 0# limbajul Java este un limbaj pur obiectual totul fiind implementat n cadrul claselor. Pentru a lucra cu un obiect este nevoie de o clas care s descrie structura i funcionalitatea obiectului. stfel definirea unei clase n Java se face dup cum urmeaz" [list/_modoficatori] class id0las/ [e1tends id0las/2a3/] [implements lista_ interface] { corp_clas/ } %in definiie se observ c obligatoriu pentru a defini o clas trebuie s avem cuv$ntul c!eie class. Pentru a defini o clas dintr&o alt clas de baz sau supreclas se folosete cuv$ntul c!eie extends urmat de numele clasei de baz. 5n Java spre deosebire de 022 poate exista o singur clas de baz.

9D

3 interfa< n Java reprezint un fel de clas abstract n care nici una din metode nu a fost definit ele fiind doar declarate fr a utiliza cuv$ntul c!eie abstract (lipsete corpul metodei dar s&a declarat metoda,. 0a i concluzie corpul clasei conine o list de declaraii atribute# metode i constructori. 7otalitatea atributelor caracterizeaz starea unui obiect din acea clas. 7otalitatea metodelor reprezint interfaarea clasei i caracterizeaz funcionalitatea clasei. 0onstructorii unei clase au un scop bine definit n iniializarea unui obiect din acea clas. %iferenele principalele ntre clasele Java i cele 022 constau din" &omiterea operatorului de scop# ""# la definirea funciilor membre &abilitatea din 022 de a folosi variabile multiple folosind un singur specificator de acces &utilizarea cuv$ntului c!eie extends n Java pentru procesul de derivare &utilizarea cuv$ntului c!eie super n Java pentru apelul constructorilor sau a altor metode i variabile din clasa aflat mai sus n ierar!ie &prin utilizarea conceptului de pac(age Java a sc!imbat scopul modificatorului protected astfel nc$t clasele din acela pac4age au acces la variabilele protected c sunt sau nu derivate ele fiind considerate friendl%) 6n Java se poate utiliza metoda finali*e() care dac se declar n cadrul unei clase ea va fi apelat c!iar nainte ca procesul de garbagecollection s distrug obiectul din memorie. ici practic se pot nc!ide fiiere care au fost uitate desc!ise sau elibera alte resurse cum ar fi soclurile# soc(et&uri. 3peratorul instance3f ne arat dac un obiect aparine sau nu unei clase. %ac dorim ca o clas s nu mai poat fi derivat ea se declar de tip final$ compilatorul put$nd efectua diferite optimizri. 6n acest caz i metodele pot fi declarate de tip final ceea ce nseamn c ele vor fi legate n mod static adic stau pe postul funciilor de tip inline din 022. 6n cazul motenirii upcastingul permite crearea unui obiect referit de o clas derivat prin instanierea unui obiect folosind clasa de baz. -o#ncastingul se face doar prin folosirea operatorului cast permi$nd conversia unui tip de baz ntr&unul derivat. Java permite folosirea unor pac"ete predefinite dar i crearea unor pac"ete proprii n cazul n care se dorete a oferi o mai mare funcionalitate procesului de dezvoltare a unei aplicaii. *rafica n programare s&a impus pornind de la consideraia c o imagine nseamn mai mult dec$t 9=== de cuvinte. 6niial grafica n Java folosind pac!etul >7 (Abstract =indo# +ool(it, s&a bazat pe ideea folosirii unui singur standard *.6 (>rap"ic ,ser 'nterface, standard ce a pornit de la 9F

dezvoltatorii .nix fiind cunoscut sub numele 0%?# Common -es(top Environment) >7 folosete principiul Common ;unctionalit% Specific 'mplementation derivat din 0%? urmrind s conserve aa numitul loo( and feel caracteristic platformei specifice. cest pac!et a suferit cele mai mari modificri pornind de la versiunile Java dezvoltate de&a lungul timpului. @ersiunea 9.= cu pac!etul java.awt se baza pe aa numitele "andlere definite n interiorul componentelor grafice iar de la versiunea 9.9 pac!etul java.awt.event permite definirea "andlere9lor n alte clase asocierea fc$ndu&se cu diferite metode. *rafica bazat pe s#ing9uri ofer un nou nivel mai profesional n realizarea aplicaiilor grafice. cest mecanism al utilizrii graficii l nt$lnim i n limbajul 022 unde dup cum se tie grafica nu este standardizat. Lucrarea de fa consider noile elemente introduse de Java odat cu utilizarea noului concept Java E ?nterprise ?dition. -e vor prezenta principalele faciliti JE?? precum i unele exemple privind dezvoltarea de aplicaii dedicate domeniului procesrii imaginilor i domeniului multimedia.

1.+. ,ibliografie
9. E. <. ;. B. K. D. F. Irina !tana%iu- ,. (o%tine%cu- .. !. $r'goi- /.I. Popovici # Limbajul Java o perspectiv pragmatic# 0omputer Libris gora# 9::F 0illiam ,uchanan# 1astering Java# 1ac1illan# 9::F Jud1 ,i%hop# Java *entl8 2Programming Principles ?xplained# 9::K /. 2ircea ,oian# Programarea distribuit n 6nternet. 1etode i aplicaii# ?ditura lbastr# 9::D 2. $aconta# Java for 0I022 Programmers# Jo!n >ile8 T-ons# 9::K 3. /a4cet- Terr1 5idge# Java a Practical *uide# Cutterwort! Oeinemann# 9::D (a1 6or%tmann# 0omputing 0oncepts wit! Java# Jo!n >ile8T-ons# 9::F Laura Lema1# 7eac! Yourself Java in E9 %a8s# - 1# 9::F

9:

:.

2ircea7/lorin 8aida# Procesarea 6maginilor 1edicale. 6ngineria programrii n vederea dezvoltrii de aplicaii n domeniul bio& medical# 0artea 0rii de -tiin# E===

9=. ('lin 8'duva# Programarea n Java# ?ditura lbastr# 9::: 99. 5u%%el 0inder- 9raham 5obert%# %eveloping Java -oftware# Jo!n >ile8 T-ons# 9::F

E=

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