Sunteți pe pagina 1din 9

I.

ELEMENTE GENERALE
1. Ce este JAVA ? este un limbaj de programare dezvoltat de JavaSoft, companie n cadrul firmei Sun Microsystems. este complet orientat pe obiecte si ofera posibilitatea real\ de refolosire a codului (care este de fapt promisiunea f\cut\ la apari]ia program\rii orientate pe obiecte). este neutru din punct de vedere arhitectural, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeas[i aplica]ie rulnd, f\r\ nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substan]iale firmelor care dezvolt\ aplica]ii pentru Internet. limbajul Java este modelat dup\ C [i C++, trecerea de la C, C++ la Java f\cndu-se foarte u[or. elimin\ sursele frecvente de erori ce apar n programare prin eliminarea pointerilor, administrarea automat\ a memoriei [i eliminarea fisurilor de memorie printr-o procedur\ de colectare a gunoiului care ruleaz\ n fundal; este cel mai sigur limbaj de programare disponibil n acest moment, asigurnd mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamic\ a codului pentru detectarea secven]elor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distan]\ (acestea nu au acces la re]eaua local\, la fi[ierele stocate n sistemul local [i nu pot lansa n execu]ie programe locale), etc. permite creearea unor documente Web mbun\t\]ite cu anima]ie [i multimedia. a fost proiectat pentru a fi folosit n medii distribuite [i sisteme deschise. 2. Evolu]ia limbajului JAVA In 1991, firma SUN, mergnd pe direc]ia dezvolt\rii sistemelor deschise de lucru n re]ea, a creat un proiect de lucru numit

Green, care avea drept scop punerea la punct a unor procesoare care s\ poat\ rula pe diferite tipuri de aparate [i punerea la punc a unui sistem care s\ poat\ rula pe platforme diferite. Planul ini]ial prevedea dezvoltarea proiectului n C++, dar au ap\rut foarte multe probleme n ncercarea de dezvoltare acompilatorului de C++. Ca urmare, James Gosling, membru al grupului Green, a nceput s\ lucreze la dezvoltarea unui nou limbaj, numit Oak, care, mai trziu, avea s\ se numeasc\ Java. De asemenea grupul Green avea s\-[i schimbe numele nti n FirstPerson, apoi n JavaSoft. Abia dup\ ce a fost nfiin]at\ compania Netscape Communications Corporation, cei de la JavaSoft s-au orientat c\tre Internet [i Web, mediul multiplatform\ distribuit al re]elei Internet fiind perfect pentru testarea proiectului. In prezent licen]a pentru tehnologia Java a fost acordat\ unor firme precum IBM, Microsoft, Sillicon Graphics, Adobe [i Netscape. 3. Java : un limbaj compilat [i interpretat In functie de modul de execu]ie al programelor, limbajele de programare se mpart n dou\ categorii : interpretate : instruc]iunile sunt citite linie cu linie de un program numit interpretor [i traduse n instruc]iuni ma[in\; avantaj : simplitate; dezavantaje : vitez\ de execu]ie redus\ compilate : codul surs\ al programelor este transformat de compilator ntr-un cod ce poate fi executat direct de procesor; avantaj : execu]ie rapid\; dezavantaj : lipsa portabilit\]ii, codul compilat ntr-un format de nivel sc\zut nu poate fi rulat dect pe platforma pe care a fost compilat. Programele Java pot fi att interpretate ct [i compilate. Cod surs\ Java (compilare) Cod de octe]i Codul de octe]i este diferit de codul ma[in\. Codul ma[in\ este reprezentat de o succesiune de 0 [i 1; codurile de octe]i

sunt seturi de instruc]iuni care seam\n\ cu codul scris n limbaj de asamblare. Codul ma[in\ este executat direct de c\tre procesor [i poate fi folosit numai pe platforma pe care a fost creat; codul de octe]i este interpretat de mediul Java [i de aceea poate fi rulat pe orice platform\ care folose[te mediul de execu]ie Java neutralitatea limbajului Java din punc de vedere arhitectural. Cum este rulat un program Java ? Interpretorul Java transform\ codul de octe]i ntr-un set de instruc]iuni ma[in\, ntrzierea interpret\rii fiind ns\ foarte mic\ datorit\ asem\n\rii dintre codul de octe]i [i limbajul de asamblare [i din acest motiv execu]ia se face aproape la fel de repede ca n cazul programelor compilate. Cum este ob]inut\ neutralitatea arhitectural\ a limbajului Java ? Cu alte cuvinte, cum este posibil\ portarea codului de octe]i pe calculatoare diferite? Truc : codul surs\ este compilat nu pentru calculatorul pe care se lucreaz\ ci pentru un calculator inexistent, acest calculator imaginar fiind numit Ma[ina virtual\ Java (Java Virtual Machine). Interpretorul ac]ioneaz\ apoi ca un intermediar ntre Ma[ina virtual\ Java [i ma[ina real\ pe care este rulat programul. Aplica]ia utilizatorului Obiecte Java Ma[ina virtual\ Java UNIX Windows Macintos h Sisteme de operare 4. Java [i conceptele program\rii orientate pe obiecte Limbajul Java este urm\torul pas logic n domeniul limbajelor de programare [i se bazeaz\ pe cel mai popular limbaj de programare al momentului C++. In Java se pot ob]ine programe cu aspectul [i comportarea programelor C++, dar beneficiind de avantajele oferite de un limbaj proiectat special

pentru POO. Java rebun]\ complet la programarea procedural\ specific\ C-ului [i v\ oblig\ s\ folosi]i conceptele solide ale POO. Conceptele program\rii orientate pe obiecte cuprind : Obiectele ncapsularea [i transmiterea de mesaje Clasele Bibliotecile (numite pachete, n Java) Mo[tenirea Modificatorii de acces Obiectele : unitatea elementara a POO starea obiectului este dat\ de variabile de instan]\ comportamentul obiectului este dat metode u[or de refolosit, actualizat, ntre]inut ncapsularea [i transmiterea de mesaje : Clasele : ncapsuleaz\ obiecte o singur\ clas\ poate fi folosit\ pentru instan]ierea mai multor obiecte Pachetele: colec]ie de clase nrudite Mo[tenirea : permite extinderea func]ionalit\]ii unor clase existente refolosirea codului Modificatorii de acces : controleaz\ accesul la metodele [i variabilele obiectelor. Acestea pot fi : 1. Private - accesibile doar obiectelor din aceea[i clas\ 2. Protejate - accesibile obiectelor din aceea[i clas\ [i din subclasele clasei respective 3. Prietenosase - (nivelul de accesibilitate prestabilit) accesibile tuturor claselor din pachetul curent 4. Publice - accesibile tuturor claselor din orice pachet Programarea n limbajul Java 5. Caracteristicile de baz\ al limbajului Java
A.

Folosirea n medii de re]ea distribuite

Java a fost proiectat pentru un mediu complex cum este Internetul [i de aceea trebuie s\ poat\ rula pe platforme eterogene distribuite. Acest lucru este posibil deoarece : este neutru din punct de vedere arhiectural = programele pot fi rulate pe orice platform\ care are instalat mediul Java are un grad ridicat de portabilitate = con]ine obictecte care pot fi folosite pe platforme eterogene [i respect\ standardele IEEE (Institue of Electrical and Electronics Engineers) pentru structurile de date (folosirea ntregilor, a numerelor n virgul\ mobil\, a [irurilor, etc) este distribuit = poate folosi att obiecte memorate local ct [i obiecte stocate pe calculatoare aflate la distan]\ este compatibil cu mediile de lucru n re]ea (poate fi utilizat n re]ele complexe) [i accept\ direct protocoalele de re]ea obi[nuite cum ar fi FTP [i HTTP B. Asigurarea performan]ei ridicate compilatorul [i sistemul de execu]ie ofer\ o vitez\ ridicat\ rul\rii programelor are ncorporate posibilit\]i de execu]ie multifilar\ (rularea simultan\ a mai multor procese) folosind un sistem de acordare de priorit\]i proceselor ce trebuie executate. Printre procesele care ruleaz\ n fundal sunt cele de colectare a gunoiului [i de gestionare a memoriei. C. Refolosirea codului [i fiabilitatea Java este un limbaj dinamic, lucru asigurat prin ntrzierea leg\rii obiectelor [i legarea dinamic\ a claselor n timpul execu]iei, ceea ce mpiedic\ apari]ia erorilor n cazul schimb\rii mediului de lucru dup\ compilarea programului surs\. Fiabilitatea este asigurat\ prin eliminarea pointerilor, prin folosirea verific\rii dinamice a limitelor [i prin gestionarea automat\ a memoriei, nl\turndu-se posibilitatea fisurilor [i viol\rilor de memorie. O alt\ cale de evitare a erorilor este verificarea structurilor de date att la compilare ct [i n timpul execu]iei.

D. Asigurarea securit\]ii Interzice accesul la stiva sistemului, la zona liber\ de memorie [i la sec]iunile protejate de memorie Verific\ validitatea codului semnalnd urm\toarele: Viol\rile de acces Conversiile ilegale de date Valori [i parametri incorec]i Modificarea claselor sau folosirea incorect\ a acestora Dep\[irea stivei n partea superioar\ sau inferioar\ Activit\]i suspecte sau neautorizate 6. Structura limbajului Java Aplica]ii [i miniaplica]ii miniaplica]ie (applet) = program Java creat pentru a fi folosit n sitemul WWW. Applet-urile necesit\ un program de vizualizare extern : browser Web sau un program specializat de vizualizare (applet viewer). aplica]ie (app) = program Java care poate fi rulat independent Spa]ii de nume Pentru evitarea conflictelor legate de spa]iile de nume, fiecare component\ a unui nume este imbricat\ n conformitate cu unul din urm\toarele niveluiri: 0 - spa]iul de nume al pachetului 1 - spa]iul de nume al unit\]ii de compilare 2 - spa]iul de nume al tipului 3 - spa]iul de nume al metodei 4 - spa]iul de nume al blocului local 5 - spa]iul de nume al blocului imbricat Interpretorul este responsabil pentru men]inerea [i translatarea spa]iului de nume. Spa]iile de nume sunt separate prin punct. Ex. java.lang.System.out.println() - calea complet\ Pachetele Java din biblioteca original\ de pachete sunt referite prin java uramt de numele pachetului (java.lang). In cazul n care nu exist\ confuzii poate fi folosit\ o variant\ prescurtat\ a apelului (interpretorul folose[te prima potrivire

de nume descoperit\); apelul la println() se putea face [i prin System.out.println() Structuri de denumire a programelor Fi[iere surs\ .java (compilare) cod de octe]i format din unit\]i de compilare; Pentru fiecare clas\ declarat\ n codul surs\ este generat\ o unitate de compilare stocat\ ntr-un fi[ier separat cu extensia .class Unit\]ile de compilare Java con]in : instruc]iuni de pachet instruc]iuni de import declara]ii ale claselor [i interfe]elor (structura de baz\ a unui program Java) Instruc]iuni de pachet Sunt folosite pentru a preciza pozi]ia pachetelor folosite ntr-o aplica]ie. In mod implicit Java folose[te calea de acces curent\ [i presupune c\ fi[ierele cu cod compilat se afl\ n directorul curent la rularea programului. Pentru ca obiectele [i clasele s\ respecte o structur\ ierarhic\ diferit\ de cea prestabilit\ trebuie inclus\ n codul surs\ o instruc]iune de pachet :
package NumePachet

In cazul cnd se folosesc mai multe niveluri instruc]iunea va avea forma:


package MyPackages.NumeSubPachet

Numele de pachete de pe fiecare nivel al spa]iului de nume trebuie s\ reflecte structura de directoare a sistemului de fi[iere, deoarece Java transform\ numele pachetelor n c\i de acces pentru localizarea claselor [i a metodelor asociate pachetelor. De exemplu ntr-un sistem Windows 95/NT numele de pachet MyPackages.Pachetel va fi transformat n directorul \MyPackages\Pachetel unde Java va c\uta pachetul respectiv. Instruc]iuni de import Java con]ine un set de func]ii principale, accesibile global, [i care sunt localizate n pachetul java.lang. Pentru a ob]ine accesul la alte pachete, clase [i obiecte care nu se afl\ n aceast\ bibliotec\ se folosesc instruc]iuni de import, care ajut\

compilatorul Java s\ reg\seasc\ metodele corespunz\toare [i s\ evite conflictele de nume. De exemplu, pentru a apela metoda Button din pachetul java.awt (awt = Abstract Window Toolkit) se folose[te instruc]iunea java.awt.Button. O metod\ mai eficient\ este de a importa metoda import java.awt.Button [i de a apela metoda doar prin instruc]iunea Button. Cea mai uzual\ metod\ de import este importul la cerere, care spune compilatorului s\ importe numai clasele de care este nevoie n program : import java.awt.* pentru a nu face disponibile toate clasele din java.awt. Declara]iile de clas\ In Java toate clasele sunt derivate dintr-o clas\ sistem numit\ Object. Object este r\d\cina ierarhiei de clase, toate metodele [i variabilele clasei fiind disponibile celorlalte clase. In mod implicit toate clasele sunt private. Declara]iile de clas\, f\r\ modificatori de acces, au aceea[i sintax\ ca n C++ :
class nume_clasa { //metode si variabile asociate clasei }

Java accept\ numai mo[tenirea simpl\ a claselor, fiecare clas\ avnd a[adar un singur p\rinte, numit superclas\. In scimb, Java permite mo[tenirea multipl\ a metodelor claselor, prin intermediul interfe]elor claselor. Declara]iile de interfa]\ Interfe]ele sunt clase abstracte. Diferen]a major\ fa]\ de o clas\ este aceea c\ interfe]ele nu pot stoca date. De asemenea, nu pot con]ine implement\ri ale metodelor ci doar declara]ii ale acestora. O clas\ poate s\ implementeze una sau mai multe interfe]e [i poate s\ partajeze aceaa[i interfa]\ cu alte clase sau instan]e ale unei clase. Declara]iile de interfa]\ f\r\ modificatori au urm\torul format:
interface nume_interfata { //metode si variabile statice asociate interfetei

Declara]iile de clase care folosesc interfe]e au urm\torul format:


class nume_clasa implements nume_interfata { //corpul clasei }

Un alt format poate fi:


class nume_clasa implements nume_interfata1,...,nume_interfataN { //corpul clasei }

Singura deficien]\ a folosirii interfe]elor este aceea c\ necesit\ legare dinamic\, ceea ce reduce performan]ele execu]iei. Sunt ns\ mai eficiente dect mo[tenirea multipl\ din C++, deoarece reduc suprasarcina de execu]ie.

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