SlideShare a Scribd company logo
1 of 8
Download to read offline
1
Universitatea Tibiscus
Facultatea de Calculatoare şi Informatică Aplicată
Limbaj de programare
JAVA
Creangă (căs. Cococeanu) Mădălina-Victoria
Anul II
2
Ce este Java?
Java este un limbaj de programare orientat pe obiect, puternic tipizat, conceput de către James
Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995.
Acest limbaj de programare este complet orientat pe obiecte și oferă posibilitatea reală de
refolosire a codului (care este de fapt promisiunea făcută la apariția programării orientate pe obiecte).
Totodata, este neutru din punct de vedere arhitectural, cu alte cuvinte Java este un limbaj independent
de platforma de lucru, aceeaș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.
De asemenea, 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;
Extrem de importante este faptul că Java 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 in sistemul local și nu pot lansa in execuție programe locale), etc.
Java permite creearea unor documente Web imbunătățite cu animație și multimedia și a fost
proiectat pentru a fi folosit în medii distribuite și sisteme deschise.
Evoluția limbajului Java
Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permit
utilizarea sa și pe dispozitive mobile, spre exemplu telefon, agenda electronică, palmtop etc. În felul acesta
se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de
diversificat. Acesta este utilizat în prezent cu succes și pentru programarea aplicațiilor destinate intranet-
urilor.
În 1991, firma SUN, mergând pe direcția dezvoltării sistemelor deschise de lucru în retea, 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 punct 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 sa se numeasca 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 multiplatforma distribuit al rețelei Internet fiind perfect pentru
testarea proiectului.
În prezent licența pentru tehnologia Java a fost acordată unor firme precum IBM, Microsoft,
Sillicon Graphics, Adobe și Netscape.
Avantajele Java
• Java constă din una sau mai multe clase aranjate ierarhic, astfel încât o clasă copil este
capabilă să moştenească proprietăţile şi comportamentele clasei părinte. Există seturi de
clase predefinite, numite pachete care pot fi importate în programe.
3
• Programarea orietată pe obiecte oferă flexibilitate mai mare, modularitate şi
reutilizabilitate. Pentru mulţi ani, tehnologia orientată pe obiecte a fost privită ca şi o
investiţie suplimentară în infrastructură.
• Java este distribuită. Calculul distribuit implică câteva calculatoare într-o reţea, lucrând
simultan. Java este realizată pentru a face calculul distribuit mai uşor având în vedere
capabilităţile reţelei integrate lui. Scriind programe de reţea în Java este asemănător
trimiterii şi primirii datei de la sau la un fişier.
• Portabilitatea. Un program portabil este un program care rulează oriunde (independent
de platformă). Java rulează pe aproape orice platformă hardware şi software. Apleturile
java sunt suportate de toate browser-ele compatibile Java. Odată cu trecerea de la un
software existent la Java, se va face şi compatibilitatea cu aceste platforme software.
Programele Java devin din ce în ce mai portabile, fiind şterse dependenţele hardware şi
ale Sistemului de Operare. Codul sursă Java este mai portabil decât limbajele C. În C şi
C++, fiecare implementare decide cerinţele de precizie şi de depozitare pentru tipuri de
date de bază. Aceasta este o sursa majoră de eroare care apare la portarea pe un alt
sistem, deoarece schimbările preciziei afectează calculele şi mărimea structurii poate fi
afectată.
Java însă defineşte mărimea tipurilor de bază pentru toate implementările; un întreg pe
un anumit sistem are aceeaşi mărime ca si pe oricare alt sistem. Nu permite folosirea
pointer-ului aritmetic, de aceea mărimea structurii nu poate conduce la erori de portare.
Deşi atât C cât şi C++ sunt suportate pe toate platformele suportate de Java, aceste
limbaje nu sunt suportate într-o manieră independentă de platformă. Trecerea între
platforme diferite de Sisteme de Operare, implică recompilarea, în cel mai bun caz,
precum şi o modificare a structurii.
• Translatorul Java. Este nevoie de un Translator Java pentru a putea rula programele.
Programele sunt compilate de o maşină virtuală Java (Java Virtual Machine) în bytecode.
Acesta este independent de maşină şi poate rula pe orice maşină care are un Translator
Java. În mod normal, un compilator va translata un program dintr-un limbaj de nivel înalt
în cod maşina şi acest cod este capabil să ruleze pe maşina nativă. Dacă programul este
rulat pe alte maşini, el trebuie recompilat pe aceea maşină. Cu Java acest lucru nu mai
este necesar.
• Securitate. Java este unul dintre limbajele de programare care consideră securitatea ca şi
parte din model. Compilatorul, translatorul şi browser-ele compatibile Java conţin câteva
nivele de măsuri de securitate pentru reducerea riscului de compromitere a securităţii,
de pierdere a datei şi de distrugere a sistemului.
Considerând problemele de securitate ca fiind asociate cu execuţia unui code "in care nu
ai încredere" într-o manieră sigură şi în mai multe medii de execuţie, măsurile de
securitate Java rezolvă aceste probleme. C şi C++ nu au asemenea capabilităti de
securitate intrisecă.
• Increderea. Securitatea şi încrederea depind una de alta. Măsurile de securitate nu pot fi
implementate fară un grad de încredere pentru execuţia programelor. Multe caracteristici
ale limbajelor C şi C++ nu oferă încredere programului, de exemplu pointerii sau conversia
automată de tipuri. Compilatorul Java permite câteva nivele adiţionale de verificare a
indentificării tipurilor sau alte inconsistenţe.
• Multimedia: Imagini, Sunet şi Animaţie. În acestă epocă de dezvoltare pe plan
multimedia, apar tot mai multe calculatoare numite "multimedia ready", cu drivere
pentru CD-rom, plăci de sunet, accelerator 3D şi alte tehnologii noi pentru sunet şi grafică.
4
Multimedia solicită putere mare de calcul precum şi un limbaj de programare care face
crearea multimedia uşoară.
Java, prin pachetele de clase care sunt parte integrantă a programării, oferă multe
facilităţi multimedia. Printre formatele de imagini suportate de Java este şi Graphics
Interchange Format .GIF and Joint Photography Experts Group .JPEG. iar printre formatele
audio sunt AIFF, AU şi WAV. Formatele curente suportate pentru muzică sunt MIDI Type
0, MIDI Type 1 şi Rich Music Format (RMF). Formatele pentru sunet permit date audio de
8-16 biti, mono sau stereo, cu viteze de la 8KHz la 48 de kHz. Şi aşa mai departe poate
continua lista.
• Maşina virtuală Java (JVM). JVM execută codul java şi garanteaza anumite
comportamente cu privire la execuţia pe alte platforme hardware sau software. JVM
foloseşte politici de securitate, limitând ceea ce poate face un program Java.
• Internetul. JavaBeans -face uşoara scrierea unor componente reutilizabile care pot fi
folosite împreună cu un minim de cod adiţional. Oferă un mecanism promiţător pentru
construirea de componente logice reutilizabile cu modificări minime.
• Java este Robusta. Robustă înseamnă de încredere . Nici un limbaj de programare nu
asigură într-adevăr încrederea. Java verifică apariţia unor erori posibile, preventive,
compilatoarele java fiind capabile să detecteze erorile care în alte limbaje apar numai la
execuţie. Java nu suportă pointer-ii şi deci elimină posibilitatea suprascrierii memoriei şi
coruperea datelor. De asemenea tratează erorile de execuţie şi poate "prinde" anumite
situaţii de excepţie astfel încât programul să-şi poată continua execuţia normală şi să se
termine când apare o eroare.
• Java este multithread. Prin multithread se înţelege capacitatea unui program de a trata
mai multe sarcini simultan. În Java, programarea multithread (concurentă) este integrată
acesteia, pe când în alte limbaje de programare, se apelează proceduri specifice
sistemului de operare pentru aceasta.
Tehnica multithread este folosită în special pentru Interfaţa Grafică Utilizator (Graphical
User Interface - GUI) şi programarea în reţea.
• Java este neutra din punct de vedere architectural. Aceasta este cea mai importantă
caracteristică. Neutră din punct de vedere arhitectural înseamnă că este independentă
de platformă. Un program Java poate rula pe orice platformî cu JVM. Majoritatea
vânzătorilor de sisteme de operare au adoptat JVM. Succesul iniţial al limbajului Java este
capabilitatea programării Web.
• Java este Dinamică. Limbajul de programare Java a fost creat pentru a se adapta unui
mediu în continuă schimbare. Noi metode şi proprietăţi pot fi adăugate într-o clasă fară a
afecta clienţii lor. De asemenea Java este capabilă să încarce clasele dorite în timpul
execuţiei.
Structura limbajului Java
Aplicații și miniaplicații
• miniaplicatie (applet) = program Java creat pentru a fi folosit în sitemul WWW. Applet-urile
necesita un program de vizualizare extern : browser Web sau un program specializat de vizualizare
(applet viewer).
• aplicatie (app) = program Java care poate fi rulat independent
5
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 urmatoarele niveluiri:
0 - spațiul de nume al pachetului
1 - spațiul de nume al unitatii 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 mentinerea si translatarea spatiului de nume. Spatiile de
nume sunt separate prin punct.
Ex. java.lang.System.out.println() - calea completa
Pachetele Java din biblioteca originala de pachete sunt referite prin java uramt de numele
pachetului (java.lang).
În cazul în care nu exista confuzii poate fi folosita o varianta prescurtata a apelului (interpretorul
foloseste prima potrivire de nume descoperita); apelul la println() se putea face si prin
System.out.println()
Structuri de denumire a programelor
Fisiere sursa .java (compilare) cod de octeti format din unitati de compilare;
Pentru fiecare clasa declarata în codul sursa este generata o unitate de compilare stocata într-un
fisier separat cu extensia .class
Unitatile de compilare Java contin :
• instructiuni de pachet
• instructiuni de import
• declaratii ale claselor si interfetelor
(structura de baza a unui program Java)
Instructiuni de pachet
Sunt folosite pentru a preciza pozitia pachetelor folosite într-o aplicatie. In mod implicit Java
foloseste calea de acces curenta si presupune ca fisierele cu cod compilat se afla în directorul curent la
rularea programului.
Pentru ca obiectele si clasele sa respecte o structura ierarhica diferita de cea prestabilita trebuie
inclusa în codul sursa o instructiune de pachet :
package NumePachet
In cazul când se folosesc mai multe niveluri instructiunea va avea forma:
package MyPackages.NumeSubPachet
Numele de pachete de pe fiecare nivel al spatiului de nume trebuie sa reflecte structura de
directoare a sistemului de fisiere, deoarece Java transforma numele pachetelor în cai de acces pentru
localizarea claselor si a metodelor asociate pachetelor. De exemplu într-un sistem Windows 95/NT numele
de pachet MyPackages.Pachetel va fi transformat în directorul
aMyPackagesaPachetel unde Java va cauta pachetul respectiv.
6
Instrucțiuni de import
Java contine un set de functii principale, accesibile global, si care sunt localizate în pachetul
java.lang. Pentru a obtine accesul la alte pachete, clase si obiecte care nu se afla în aceasta biblioteca se
folosesc instructiuni de import, care ajuta compilatorul Java sa regaseasca metodele corespunzatoare si
sa evite conflictele de nume.
De exemplu, pentru a apela metoda Button din pachetul java.awt (awt = Abstract Window Toolkit)
se foloseste instructiunea java.awt.Button. O metoda mai eficienta este de a importa metoda import
java.awt.Button si de a apela metoda doar prin instructiunea Button
Cea mai uzuala metoda de import este importul la cerere, care spune compilatorului sa 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 clasa sistem numita Object Object este radacina ierarhiei
de clase, toate metodele si variabilele clasei fiind disponibile celorlalte clase. In mod implicit toate clasele
sunt private. Declaratiile de clasa, fara modificatori de acces, au aceeasi sintaxa ca în C++ :
class nume_clasa
Java accepta numai mostenirea simpla a claselor, fiecare clasa având asadar un singur parinte,
numit superclasa. In scimb, Java permite mostenirea multipla a metodelor claselor, prin intermediul
interfetelor claselor.
Declarațiile de interfață
Interfetele sunt clase abstracte. Diferenta majora fata de o clasa este aceea ca interfetele nu pot
stoca date. De asemenea, nu pot contine implementari ale metodelor ci doar declaratii ale acestora.
O clasa poate sa implementeze una sau mai multe interfete si poate sa partajeze aceaasi interfata
cu alte clase sau instante ale unei clase.
Declaratiile de interfata fara modificatori au urmatorul format:
interface nume_interfata
Declaratiile de clase care folosesc interfete au urmatorul format:
class nume_clasa implements nume_interfata
Un alt format poate fi:
class nume_clasa implements nume_interfata1,...,nume_interfataN
Singura deficienta a folosirii interfetelor este aceea ca necesita legare dinamica, ceea ce reduce
performantele executiei. Sunt însa mai eficiente decât mostenirea multipla din C++, deoarece reduc
suprasarcina de executie.
7
Java: un limbaj compilat și interpretat
În funcție de modul de execuție al programelor, limbajele de programare se împart în doua
categorii :
• interpretate: instructiunile sunt citite linie cu linie de un program numit interpretor si
traduse în instructiuni masina; avantaj : simplitate; dezavantaje : viteza de executie
redusa
• compilate: codul sursa al programelor este transformat de compilator într-un cod ce
poate fi executat direct de procesor; avantaj : executie rapida; dezavantaj : lipsa
portabilitatii, codul compilat într-un format de nivel scazut nu poate fi rulat decât pe
platforma pe care a fost compilat.
Programele Java pot fi atât interpretate cât si compilate.
Cod sursa Java (compilare) Cod de octeti
Codul de octeti este diferit de codul masina. Codul masina este reprezentat de o succesiune de 0
si 1; codurile de octeti sunt seturi de instructiuni care seamana cu codul scris în limbaj de asamblare.
Codul masina este executat direct de catre procesor si poate fi folosit numai pe platforma pe care
a fost creat; codul de octeti este interpretat de mediul Java si de aceea poate fi rulat pe orice platforma
care foloseste mediul de executie Java neutralitatea limbajului Java din punc de vedere arhitectural.
Cum este rulat un program Java ? Interpretorul Java transforma codul de octeti într-un set de
instructiuni masina, întârzierea interpretarii fiind însa foarte mica datorita asemanarii dintre codul de
octeti si limbajul de asamblare si din acest motiv executia se face aproape la fel de repede ca în cazul
programelor compilate.
Cum este obtinuta neutralitatea arhitecturala a limbajului Java ? Cu alte cuvinte, cum este posibila
portarea codului de octeti pe calculatoare diferite? Truc : codul sursa este compilat nu pentru calculatorul
pe care se lucreaza ci pentru un calculator inexistent, acest calculator imaginar fiind numit Masina virtuala
Java (Java Virtual Machine). Interpretorul actioneaza apoi ca un intermediar între Masina virtuala Java si
masina reala pe care este rulat programul.
Aplicatia utilizatorului
Obiecte Java
Masina virtuala Java
UNIX Windows Macintosh
Sisteme de operare
Java și conceptele programării orientate pe obiecte
Limbajul Java este urmatorul pas logic în domeniul limbajelor de programare si se bazeaza pe cel
mai popular limbaj de programare al momentului C++. In Java se pot obtine programe cu aspectul si
comportarea programelor C++, dar beneficiind de avantajele oferite de un limbaj proiectat special pentru
POO. Java rebunta complet la programarea procedurala specifica C-ului si va obliga sa folositi conceptele
solide ale POO.
Conceptele programarii orientate pe obiecte cuprind:
• Obiectele
• Încapsularea si transmiterea de mesaje
• Clasele
• Bibliotecile (numite pachete, în Java)
8
• Mostenirea
• Modificatorii de acces
Obiectele
• unitatea elementara a POO
• starea obiectului este data de variabile de instanta
• comportamentul obiectului este dat metode
• usor de refolosit, actualizat, întretinut
Încapsularea si transmiterea de mesaje
Clasele
• încapsuleaza obiecte
• singura clasa poate fi folosita pentru instantierea mai multor obiecte
Pachetele: colectie de clase înrudite
Mostenirea: permite
• extinderea functionalitatii unor clase existente
• refolosirea codului
Modificatorii de acces: controleaza accesul la metodele si variabilele obiectelor. Acestea pot fi :
• Private - accesibile doar obiectelor din aceeasi clasa
• Protejate - accesibile obiectelor din aceeasi clasa si din subclasele clasei respective
• Prietenosase - (nivelul de accesibilitate prestabilit) accesibile tuturor claselor din pachetul curent
• Publice - accesibile tuturor claselor din orice pachet

More Related Content

Similar to Referat_Java_Creanga_An_II_INFO.pdf

2 Software Retele
2 Software Retele2 Software Retele
2 Software Reteleclcziprok
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Programarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtProgramarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtDragos Tudor Acostachioaie
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam frameworkbeatrisrusu
 
Tell Me More
Tell Me MoreTell Me More
Tell Me Moreroxic
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...vasile33
 
E solutions+ +open+source+-+27mai2010
E solutions+ +open+source+-+27mai2010E solutions+ +open+source+-+27mai2010
E solutions+ +open+source+-+27mai2010Agora Group
 
Sistem de operare android - Madalina Olariu
Sistem de operare android - Madalina OlariuSistem de operare android - Madalina Olariu
Sistem de operare android - Madalina Olariumadalinaolariu
 
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010Agora Group
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispicostagiipebune
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Agora Group
 

Similar to Referat_Java_Creanga_An_II_INFO.pdf (20)

Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
2 Software Retele
2 Software Retele2 Software Retele
2 Software Retele
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Curs1-POO-Loga
Curs1-POO-LogaCurs1-POO-Loga
Curs1-POO-Loga
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
Axiologic quark
Axiologic quarkAxiologic quark
Axiologic quark
 
Curs2
Curs2Curs2
Curs2
 
Webpack
Webpack Webpack
Webpack
 
Programarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtProgramarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. Qt
 
Webappdev
WebappdevWebappdev
Webappdev
 
Mediul de programare multiplatforma Qt
Mediul de programare multiplatforma QtMediul de programare multiplatforma Qt
Mediul de programare multiplatforma Qt
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam framework
 
Tell Me More
Tell Me MoreTell Me More
Tell Me More
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...
 
E solutions+ +open+source+-+27mai2010
E solutions+ +open+source+-+27mai2010E solutions+ +open+source+-+27mai2010
E solutions+ +open+source+-+27mai2010
 
Sistem de operare android - Madalina Olariu
Sistem de operare android - Madalina OlariuSistem de operare android - Madalina Olariu
Sistem de operare android - Madalina Olariu
 
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010
Alternative Open Source pentru mediul de afaceri-solepad-tm-20mai2010
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispico
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010
 
XTWIP Private Alpha
XTWIP Private AlphaXTWIP Private Alpha
XTWIP Private Alpha
 

Referat_Java_Creanga_An_II_INFO.pdf

  • 1. 1 Universitatea Tibiscus Facultatea de Calculatoare şi Informatică Aplicată Limbaj de programare JAVA Creangă (căs. Cococeanu) Mădălina-Victoria Anul II
  • 2. 2 Ce este Java? Java este un limbaj de programare orientat pe obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995. Acest limbaj de programare este complet orientat pe obiecte și oferă posibilitatea reală de refolosire a codului (care este de fapt promisiunea făcută la apariția programării orientate pe obiecte). Totodata, este neutru din punct de vedere arhitectural, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeaș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. De asemenea, 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; Extrem de importante este faptul că Java 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 in sistemul local și nu pot lansa in execuție programe locale), etc. Java permite creearea unor documente Web imbunătățite cu animație și multimedia și a fost proiectat pentru a fi folosit în medii distribuite și sisteme deschise. Evoluția limbajului Java Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile, spre exemplu telefon, agenda electronică, palmtop etc. În felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Acesta este utilizat în prezent cu succes și pentru programarea aplicațiilor destinate intranet- urilor. În 1991, firma SUN, mergând pe direcția dezvoltării sistemelor deschise de lucru în retea, 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 punct 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 sa se numeasca 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 multiplatforma distribuit al rețelei Internet fiind perfect pentru testarea proiectului. În prezent licența pentru tehnologia Java a fost acordată unor firme precum IBM, Microsoft, Sillicon Graphics, Adobe și Netscape. Avantajele Java • Java constă din una sau mai multe clase aranjate ierarhic, astfel încât o clasă copil este capabilă să moştenească proprietăţile şi comportamentele clasei părinte. Există seturi de clase predefinite, numite pachete care pot fi importate în programe.
  • 3. 3 • Programarea orietată pe obiecte oferă flexibilitate mai mare, modularitate şi reutilizabilitate. Pentru mulţi ani, tehnologia orientată pe obiecte a fost privită ca şi o investiţie suplimentară în infrastructură. • Java este distribuită. Calculul distribuit implică câteva calculatoare într-o reţea, lucrând simultan. Java este realizată pentru a face calculul distribuit mai uşor având în vedere capabilităţile reţelei integrate lui. Scriind programe de reţea în Java este asemănător trimiterii şi primirii datei de la sau la un fişier. • Portabilitatea. Un program portabil este un program care rulează oriunde (independent de platformă). Java rulează pe aproape orice platformă hardware şi software. Apleturile java sunt suportate de toate browser-ele compatibile Java. Odată cu trecerea de la un software existent la Java, se va face şi compatibilitatea cu aceste platforme software. Programele Java devin din ce în ce mai portabile, fiind şterse dependenţele hardware şi ale Sistemului de Operare. Codul sursă Java este mai portabil decât limbajele C. În C şi C++, fiecare implementare decide cerinţele de precizie şi de depozitare pentru tipuri de date de bază. Aceasta este o sursa majoră de eroare care apare la portarea pe un alt sistem, deoarece schimbările preciziei afectează calculele şi mărimea structurii poate fi afectată. Java însă defineşte mărimea tipurilor de bază pentru toate implementările; un întreg pe un anumit sistem are aceeaşi mărime ca si pe oricare alt sistem. Nu permite folosirea pointer-ului aritmetic, de aceea mărimea structurii nu poate conduce la erori de portare. Deşi atât C cât şi C++ sunt suportate pe toate platformele suportate de Java, aceste limbaje nu sunt suportate într-o manieră independentă de platformă. Trecerea între platforme diferite de Sisteme de Operare, implică recompilarea, în cel mai bun caz, precum şi o modificare a structurii. • Translatorul Java. Este nevoie de un Translator Java pentru a putea rula programele. Programele sunt compilate de o maşină virtuală Java (Java Virtual Machine) în bytecode. Acesta este independent de maşină şi poate rula pe orice maşină care are un Translator Java. În mod normal, un compilator va translata un program dintr-un limbaj de nivel înalt în cod maşina şi acest cod este capabil să ruleze pe maşina nativă. Dacă programul este rulat pe alte maşini, el trebuie recompilat pe aceea maşină. Cu Java acest lucru nu mai este necesar. • Securitate. Java este unul dintre limbajele de programare care consideră securitatea ca şi parte din model. Compilatorul, translatorul şi browser-ele compatibile Java conţin câteva nivele de măsuri de securitate pentru reducerea riscului de compromitere a securităţii, de pierdere a datei şi de distrugere a sistemului. Considerând problemele de securitate ca fiind asociate cu execuţia unui code "in care nu ai încredere" într-o manieră sigură şi în mai multe medii de execuţie, măsurile de securitate Java rezolvă aceste probleme. C şi C++ nu au asemenea capabilităti de securitate intrisecă. • Increderea. Securitatea şi încrederea depind una de alta. Măsurile de securitate nu pot fi implementate fară un grad de încredere pentru execuţia programelor. Multe caracteristici ale limbajelor C şi C++ nu oferă încredere programului, de exemplu pointerii sau conversia automată de tipuri. Compilatorul Java permite câteva nivele adiţionale de verificare a indentificării tipurilor sau alte inconsistenţe. • Multimedia: Imagini, Sunet şi Animaţie. În acestă epocă de dezvoltare pe plan multimedia, apar tot mai multe calculatoare numite "multimedia ready", cu drivere pentru CD-rom, plăci de sunet, accelerator 3D şi alte tehnologii noi pentru sunet şi grafică.
  • 4. 4 Multimedia solicită putere mare de calcul precum şi un limbaj de programare care face crearea multimedia uşoară. Java, prin pachetele de clase care sunt parte integrantă a programării, oferă multe facilităţi multimedia. Printre formatele de imagini suportate de Java este şi Graphics Interchange Format .GIF and Joint Photography Experts Group .JPEG. iar printre formatele audio sunt AIFF, AU şi WAV. Formatele curente suportate pentru muzică sunt MIDI Type 0, MIDI Type 1 şi Rich Music Format (RMF). Formatele pentru sunet permit date audio de 8-16 biti, mono sau stereo, cu viteze de la 8KHz la 48 de kHz. Şi aşa mai departe poate continua lista. • Maşina virtuală Java (JVM). JVM execută codul java şi garanteaza anumite comportamente cu privire la execuţia pe alte platforme hardware sau software. JVM foloseşte politici de securitate, limitând ceea ce poate face un program Java. • Internetul. JavaBeans -face uşoara scrierea unor componente reutilizabile care pot fi folosite împreună cu un minim de cod adiţional. Oferă un mecanism promiţător pentru construirea de componente logice reutilizabile cu modificări minime. • Java este Robusta. Robustă înseamnă de încredere . Nici un limbaj de programare nu asigură într-adevăr încrederea. Java verifică apariţia unor erori posibile, preventive, compilatoarele java fiind capabile să detecteze erorile care în alte limbaje apar numai la execuţie. Java nu suportă pointer-ii şi deci elimină posibilitatea suprascrierii memoriei şi coruperea datelor. De asemenea tratează erorile de execuţie şi poate "prinde" anumite situaţii de excepţie astfel încât programul să-şi poată continua execuţia normală şi să se termine când apare o eroare. • Java este multithread. Prin multithread se înţelege capacitatea unui program de a trata mai multe sarcini simultan. În Java, programarea multithread (concurentă) este integrată acesteia, pe când în alte limbaje de programare, se apelează proceduri specifice sistemului de operare pentru aceasta. Tehnica multithread este folosită în special pentru Interfaţa Grafică Utilizator (Graphical User Interface - GUI) şi programarea în reţea. • Java este neutra din punct de vedere architectural. Aceasta este cea mai importantă caracteristică. Neutră din punct de vedere arhitectural înseamnă că este independentă de platformă. Un program Java poate rula pe orice platformî cu JVM. Majoritatea vânzătorilor de sisteme de operare au adoptat JVM. Succesul iniţial al limbajului Java este capabilitatea programării Web. • Java este Dinamică. Limbajul de programare Java a fost creat pentru a se adapta unui mediu în continuă schimbare. Noi metode şi proprietăţi pot fi adăugate într-o clasă fară a afecta clienţii lor. De asemenea Java este capabilă să încarce clasele dorite în timpul execuţiei. Structura limbajului Java Aplicații și miniaplicații • miniaplicatie (applet) = program Java creat pentru a fi folosit în sitemul WWW. Applet-urile necesita un program de vizualizare extern : browser Web sau un program specializat de vizualizare (applet viewer). • aplicatie (app) = program Java care poate fi rulat independent
  • 5. 5 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 urmatoarele niveluiri: 0 - spațiul de nume al pachetului 1 - spațiul de nume al unitatii 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 mentinerea si translatarea spatiului de nume. Spatiile de nume sunt separate prin punct. Ex. java.lang.System.out.println() - calea completa Pachetele Java din biblioteca originala de pachete sunt referite prin java uramt de numele pachetului (java.lang). În cazul în care nu exista confuzii poate fi folosita o varianta prescurtata a apelului (interpretorul foloseste prima potrivire de nume descoperita); apelul la println() se putea face si prin System.out.println() Structuri de denumire a programelor Fisiere sursa .java (compilare) cod de octeti format din unitati de compilare; Pentru fiecare clasa declarata în codul sursa este generata o unitate de compilare stocata într-un fisier separat cu extensia .class Unitatile de compilare Java contin : • instructiuni de pachet • instructiuni de import • declaratii ale claselor si interfetelor (structura de baza a unui program Java) Instructiuni de pachet Sunt folosite pentru a preciza pozitia pachetelor folosite într-o aplicatie. In mod implicit Java foloseste calea de acces curenta si presupune ca fisierele cu cod compilat se afla în directorul curent la rularea programului. Pentru ca obiectele si clasele sa respecte o structura ierarhica diferita de cea prestabilita trebuie inclusa în codul sursa o instructiune de pachet : package NumePachet In cazul când se folosesc mai multe niveluri instructiunea va avea forma: package MyPackages.NumeSubPachet Numele de pachete de pe fiecare nivel al spatiului de nume trebuie sa reflecte structura de directoare a sistemului de fisiere, deoarece Java transforma numele pachetelor în cai de acces pentru localizarea claselor si a metodelor asociate pachetelor. De exemplu într-un sistem Windows 95/NT numele de pachet MyPackages.Pachetel va fi transformat în directorul aMyPackagesaPachetel unde Java va cauta pachetul respectiv.
  • 6. 6 Instrucțiuni de import Java contine un set de functii principale, accesibile global, si care sunt localizate în pachetul java.lang. Pentru a obtine accesul la alte pachete, clase si obiecte care nu se afla în aceasta biblioteca se folosesc instructiuni de import, care ajuta compilatorul Java sa regaseasca metodele corespunzatoare si sa evite conflictele de nume. De exemplu, pentru a apela metoda Button din pachetul java.awt (awt = Abstract Window Toolkit) se foloseste instructiunea java.awt.Button. O metoda mai eficienta este de a importa metoda import java.awt.Button si de a apela metoda doar prin instructiunea Button Cea mai uzuala metoda de import este importul la cerere, care spune compilatorului sa 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 clasa sistem numita Object Object este radacina ierarhiei de clase, toate metodele si variabilele clasei fiind disponibile celorlalte clase. In mod implicit toate clasele sunt private. Declaratiile de clasa, fara modificatori de acces, au aceeasi sintaxa ca în C++ : class nume_clasa Java accepta numai mostenirea simpla a claselor, fiecare clasa având asadar un singur parinte, numit superclasa. In scimb, Java permite mostenirea multipla a metodelor claselor, prin intermediul interfetelor claselor. Declarațiile de interfață Interfetele sunt clase abstracte. Diferenta majora fata de o clasa este aceea ca interfetele nu pot stoca date. De asemenea, nu pot contine implementari ale metodelor ci doar declaratii ale acestora. O clasa poate sa implementeze una sau mai multe interfete si poate sa partajeze aceaasi interfata cu alte clase sau instante ale unei clase. Declaratiile de interfata fara modificatori au urmatorul format: interface nume_interfata Declaratiile de clase care folosesc interfete au urmatorul format: class nume_clasa implements nume_interfata Un alt format poate fi: class nume_clasa implements nume_interfata1,...,nume_interfataN Singura deficienta a folosirii interfetelor este aceea ca necesita legare dinamica, ceea ce reduce performantele executiei. Sunt însa mai eficiente decât mostenirea multipla din C++, deoarece reduc suprasarcina de executie.
  • 7. 7 Java: un limbaj compilat și interpretat În funcție de modul de execuție al programelor, limbajele de programare se împart în doua categorii : • interpretate: instructiunile sunt citite linie cu linie de un program numit interpretor si traduse în instructiuni masina; avantaj : simplitate; dezavantaje : viteza de executie redusa • compilate: codul sursa al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor; avantaj : executie rapida; dezavantaj : lipsa portabilitatii, codul compilat într-un format de nivel scazut nu poate fi rulat decât pe platforma pe care a fost compilat. Programele Java pot fi atât interpretate cât si compilate. Cod sursa Java (compilare) Cod de octeti Codul de octeti este diferit de codul masina. Codul masina este reprezentat de o succesiune de 0 si 1; codurile de octeti sunt seturi de instructiuni care seamana cu codul scris în limbaj de asamblare. Codul masina este executat direct de catre procesor si poate fi folosit numai pe platforma pe care a fost creat; codul de octeti este interpretat de mediul Java si de aceea poate fi rulat pe orice platforma care foloseste mediul de executie Java neutralitatea limbajului Java din punc de vedere arhitectural. Cum este rulat un program Java ? Interpretorul Java transforma codul de octeti într-un set de instructiuni masina, întârzierea interpretarii fiind însa foarte mica datorita asemanarii dintre codul de octeti si limbajul de asamblare si din acest motiv executia se face aproape la fel de repede ca în cazul programelor compilate. Cum este obtinuta neutralitatea arhitecturala a limbajului Java ? Cu alte cuvinte, cum este posibila portarea codului de octeti pe calculatoare diferite? Truc : codul sursa este compilat nu pentru calculatorul pe care se lucreaza ci pentru un calculator inexistent, acest calculator imaginar fiind numit Masina virtuala Java (Java Virtual Machine). Interpretorul actioneaza apoi ca un intermediar între Masina virtuala Java si masina reala pe care este rulat programul. Aplicatia utilizatorului Obiecte Java Masina virtuala Java UNIX Windows Macintosh Sisteme de operare Java și conceptele programării orientate pe obiecte Limbajul Java este urmatorul pas logic în domeniul limbajelor de programare si se bazeaza pe cel mai popular limbaj de programare al momentului C++. In Java se pot obtine programe cu aspectul si comportarea programelor C++, dar beneficiind de avantajele oferite de un limbaj proiectat special pentru POO. Java rebunta complet la programarea procedurala specifica C-ului si va obliga sa folositi conceptele solide ale POO. Conceptele programarii orientate pe obiecte cuprind: • Obiectele • Încapsularea si transmiterea de mesaje • Clasele • Bibliotecile (numite pachete, în Java)
  • 8. 8 • Mostenirea • Modificatorii de acces Obiectele • unitatea elementara a POO • starea obiectului este data de variabile de instanta • comportamentul obiectului este dat metode • usor de refolosit, actualizat, întretinut Încapsularea si transmiterea de mesaje Clasele • încapsuleaza obiecte • singura clasa poate fi folosita pentru instantierea mai multor obiecte Pachetele: colectie de clase înrudite Mostenirea: permite • extinderea functionalitatii unor clase existente • refolosirea codului Modificatorii de acces: controleaza accesul la metodele si variabilele obiectelor. Acestea pot fi : • Private - accesibile doar obiectelor din aceeasi clasa • Protejate - accesibile obiectelor din aceeasi clasa si din subclasele clasei respective • Prietenosase - (nivelul de accesibilitate prestabilit) accesibile tuturor claselor din pachetul curent • Publice - accesibile tuturor claselor din orice pachet