Home >Documents >Limbajul Java

Limbajul Java

Date post:13-Jun-2015
Category:
View:2,304 times
Download:12 times
Share this document with a friend
Description:
Limbajul Java
Transcript:

www.cartiaz.ro Carti si articole online gratuite de la A la Z

IntroducereScurt istoricLimbajul 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. Aceste echipamente se definesc ca: mici, portabile, distribuite i lucrnd n timp real. De la aceste aparate, ne-am obinuit s cerem fiabilitate i uurin n exploatare. Limbajul luat iniial n considerare a fost C++. Din pcate, atunci cnd s-a ncercat crearea unui mediu de execuie care s respecte toate aceste condiii s-a observat c o serie de trsturi ale C++ sunt incompatibile cu necesitile declarate. n principal, problema vine din faptul c C++ este prea complicat, folosete mult prea multe convenii i are nc prea multe elemente de definiie lsate la latitudinea celor care scriu compilatoare pentru o platform sau alta. n aceste condiii, firma Sun a pornit proiectarea unui nou limbaj de programare asemntor cu C++ dar mult mai flexibil, mai simplu i mai portabil. Aa s-a nscut Java. Printele noului limbaj a fost James Gostling care este cunoscut ca autor al editorului emacs i al sistemului de ferestre grafice NeWS. Proiectul a nceput nc din 1990 dar Sun a fcut public specificaia noului limbaj abia n 1995 la SunWorld n San Francisco. Numele iniial al limbajului a fost Oak, numele unui copac care crete n faa biroului lui James Gostling. Ulterior, s-a descoperit c numele fusese deja folosit n trecut pentru un alt limbaj de programare aa c a fost abandonat i nlocuit cu Java, spre deliciul programatorilor care iubesc cafenelele i aromele exotice.

Ce este Java?n primul rnd, Java ncearc s rmn un limbaj simplu de folosit chiar i de ctre programatorii neprofesioniti, programatori care doresc s se concentreze asupra aplicaiilor n principal i abia apoi asupra tehnicilor de implementare a acestora. Aceast trstur poate fi considerat ca o reacie direct la complexitatea considerabil a limbajului C++. Au fost ndeprtate din Java aspectele cele mai derutante din C++ precum suprancrcarea operatorilor i motenirea multipl. A fost introdus un colector automat de gunoaie care s rezolve problema dealocrii memoriei n mod uniform, fr intervenia programatorului. Colectorul 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

www.cartiaz.ro Carti si articole online gratuite de la A la Z execuie. Astfel, 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 arhitectura calculatorului pe care lucreaz i foarte portabil. n loc s genereze cod nativ pentru o platform sau alta, compilatorul Java genereaz o secven de instruciuni ale unei maini virtuale Java (numit bytecod). Execuia aplicaiilor Java este interpretat. Singura parte din mediul de execuie Java care trebuie portat de pe o arhitectur pe alta este mediul de execuie cuprinznd interpretorul i o parte din bibliotecile standard care depind de sistem. n acest fel, aplicaii Java compilate pe o arhitectur SPARC de exemplu, pot fi rulate fr recompilare pe un sistem bazat pe procesoare Intel. Una dintre principalele probleme ale limbajelor interpretate este viteza de execuie, considerabil sczut fa de cea a limbajelor compilate. Dac nu v mulumete viteza de execuie a unei astfel de aplicaii, putei cere mediului de execuie Java s genereze automat, plecnd de la codul mainii virtuale, codul specific mainii pe care lucrai, obinndu-se astfel un executabil nativ care poate rula la vitez maxim. De obicei ns, n Java se compileaz doar acele pri ale programului mari consumatoare de timp, restul rmnnd interpretate pentru a nu se pierde flexibilitatea. Mediul de execuie nsui este scris n C, ceea ce l face extrem de portabil. Interpretorul Java este gndit s lucreze pe maini mici, precum ar fi procesoarele cu care sunt dotate aparatele casnice. Interpretorul plus bibliotecile standard cu legare dinamic nu depesc 300 Koctei. Chiar mpreun cu interfaa grafic totul rmne mult sub 1 Moctet. Limbajul Java este n totalitate orientat obiect. Cu el se pot crea clase de obiecte i instane ale acestora, se pot ncapsula informaiile, se pot moteni variabilele i metodele de la o clas la alta, etc. Singura 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 dect cel definit de clasa de baz. n Java orice element este un obiect, n afar de datele primare. Din Java lipsesc funciile i variabilele globale. Ne rmn desigur metodele i variabilele statice ale claselor. Java este distribuit, avnd implementate biblioteci pentru lucrul n reea care ne ofer TCP/IP, URL i ncrcarea resurselor din reea. Aplicaiile Java pot accesa foarte uor reeaua, folosindu-se de apelurile ctre un set standard de clase. Java este robust. n Java legarea funciilor se face n timpul execuiei i informaiile de compilare sunt disponibile pn n momentul rulrii aplicaiei. Acest mod de lucru face ca sistemul s poat determina n orice moment neconcordana dintre tipul referit la compilare i cel referit n timpul execuiei evitndu-se astfel posibile intruziuni ruvoitoare n sistem prin intermediul unor referine falsificate. n acelai timp, Java detecteaz referinele nule dac acestea sunt folosite n operaii de acces. Indicii n tablourile Java sunt verificai permanent n timpul execuiei i tablourile nu se pot parcurge prin intermediul unor pointeri aa cum se ntmpl n C/C++. De altfel, pointerii lipsesc complet din limbajul Java, mpreun cu ntreaga lor aritmetic, eliminndu-se astfel una din principalele surse de erori. n plus, eliberarea memoriei ocupate de obiecte i tablouri se face automat, prin mecanismul de colectare de gunoaie, evitndu-se astfel ncercrile de eliberare multipl a unei zone de memorie. Java este un limbaj cu securitate ridicat. El verific la fiecare ncrcare codul prin mecanisme de CRC i prin verificarea operaiilor disponibile pentru fiecare set de obiecte. Robusteea este i ea o trstur de securitate. La un al doilea nivel, Java are incorporate faciliti de protecie a obiectelor din sistem la scriere i/sau citire. Variabilele protejate ntr-un obiect Java nu pot fi accesate fr a avea

www.cartiaz.ro Carti si articole online gratuite de la A la Z drepturile necesare, verificarea fiind fcut n timpul execuiei. n 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. Acest 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. Bibliotecile de clase n Java pot fi reutilizate cu foarte mare uurin. Cunoscuta problem a fragilitii superclasei este rezolvat mai bine dect n C++. Acolo, dac o superclas este modificat, trebuie recompilate toate subclasele acesteia pentru c obiectele au o alt structur n memorie. n Java aceast problem este rezolvat prin legarea trzie variabilelor, doar la execuie. Regsirea variabilelor se face prin nume i nu printr-un deplasament fix. Dac superclasa nu a ters o parte dintre vechile variabile i metode, ea va putea fi refolosit fr s fie necesar recompilarea subclaselor acesteia. Se elimin astfel necesitatea actualizrii aplicaiilor, generat de apariia unei noi versiuni de bibliotec aa cum se ntmpl, de exemplu, cu MFC-ul Microsoft (i toate celelalte ierarhii C++).

Reprezentarea informaiilor cu obiecteObiecteInformaiile pe care le reprezentm n memoria calculatorului sunt rareori att de simple precum culorile sau literele. n general, dorim s reprezentm informaii complexe, care s descrie obiectele fizice care ne nconjoar sau noiunile cu care operm zilnic, n interiorul crora culoarea sau o secven de litere reprezint doar o mic parte. Aceste obiecte fizice sau noiuni din lumea real trebuiesc reprezentate n memoria calculatorului n aa fel nct informaiile specifice lor s fie pstrate la un loc i s se poat prelucra ca un tot unitar. S nu uitm ns c, la nivelul cel mai de jos, informaia ataat acestor obiecte continu s fie tratat de ctre compilator ca un ir de numere binare, singurele informaii reprezentabile direct n memoria calculatoarelor actuale. Putem s extindem cerinele noastre mai departe, spunnd c, atunci cnd analizm un obiect fizic sau o noiune pentru a le reprezenta n calculator, trebuie s analizm nu numai proprietile acestora dar i modul n care acestea pot fi utilizate i care sunt operaiile care pot fi executate asupra lor sau cu ajutorul lor. Uneori, setul de operaii specifice unui obiect mpreun cu modul n care acesta reacioneaz la stimuli exteriori se numete comportamentul obiectului. De exemplu, dac dorim s construim un obiect care reprezint o minge de form sferic n spaiu, este necesar s definim trei numere care s reprezinte coordonatele x, y i z relativ la un sistem de axe dat, precum i o valoare pentru raza sferei. Aceste valori numerice vor face parte din setul de proprieti ale obiectului minge. Dac mai trziu vom dori s construim o operaie care s reprezinte mutarea n spaiu a obiectului minge, este suficient s ne folosim de operaiile cu numere pentru a modifica valorile coordonatelor x, y i z. Desigur, obiectul minge este insuficient descris prin aceste coordonate i, pentru a simula n calculator obiectul real este nevoie de multe proprieti suplimentare precum i de multe operaii n plus. Dar, dac problema pe care o avem de rezolvat nu necesit aceste proprieti i operaii, este prefer

Click here to load reader

Embed Size (px)
Recommended