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 rulând, 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\cându-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, asigurând 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, mergând 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 târziu, avea s\ se numeasc\ Java. De asemenea grupul
Green avea s\-[i schimbe numele întâi î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 decât
pe platforma pe care a fost compilat.

Programele Java pot fi atât interpretate cât [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\,
întârzierea 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 atât obiecte memorate local
cât [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 întârzierea
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\turându-se posibilitatea fisurilor
[i viol\rilor de memorie. O alt\ cale de evitare a erorilor
este verificarea structurilor de date atât la compilare cât [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 semnalând 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 când 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\


având 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 decât mo[tenirea multipl\
din C++, deoarece reduc suprasarcina de execu]ie.

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