Previzualizare curs:

Extras din curs:

Introducere

Scurt istoric

Limbajul Java împreună cu mediul său de dezvoltare şi execuţie au fost proiectate pentru a rezolva o parte dintre problemele actuale ale programării. 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 lucrând în timp real. De la aceste aparate, ne-am obişnuit să cerem fiabilitate şi uşurinţă în exploatare.

Limbajul luat iniţial în considerare a fost C++. Din păcate, atunci când s-a încercat crearea unui mediu de execuţie care să respecte toate aceste condiţii s-a observat că o serie de trăsături ale C++ sunt incompatibile cu necesităţile declarate. În principal, problema vine din faptul că C++ este prea complicat, foloseşte mult prea multe convenţii şi are încă prea multe elemente de definiţie lăsate la latitudinea celor care scriu compilatoare pentru o platformă sau alta.

În aceste condiţii, firma Sun a pornit proiectarea unui nou limbaj de programare asemănător cu C++ dar mult mai flexibil, mai simplu şi mai portabil. Aşa s-a născut Java. Părintele 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 făcut publică specificaţia noului limbaj abia în 1995 la SunWorld în San Francisco.

Numele iniţial al limbajului a fost Oak, numele unui copac care creşte în faţa biroului lui James Gostling. Ulterior, s-a descoperit că numele fusese deja folosit în trecut pentru un alt limbaj de programare aşa că a fost abandonat şi înlocuit cu Java, spre deliciul programatorilor care iubesc cafenelele şi aromele exotice.

Ce este Java?

În primul rând, Java încearcă să rămână un limbaj simplu de folosit chiar şi de către programatorii neprofesionişti, programatori care doresc să se concentreze asupra aplicaţiilor în principal şi abia apoi asupra tehnicilor de implementare a acestora. Această trăsătură poate fi considerată ca o reacţie directă la complexitatea considerabilă a limbajului C++.

Au fost îndepărtate din Java aspectele cele mai derutante din C++ precum supraîncărcarea operatorilor şi moştenirea multiplă. A fost introdus un colector automat de gunoaie care să rezolve problema dealocării memoriei în mod uniform, fără intervenţia programatorului. Colectorul de gunoaie nu este o trăsătură nouă, dar implementarea acestuia în Java este făcută inteligent şi eficient folosind un fir separat de execuţie, pentru că Java are încorporate facilităţi de execuţie pe mai multe fire de execuţie. Astfel, colectarea gunoaielor se face de obicei în timp ce un alt fir aşteaptă o operaţie de intrare-ieşire 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 instrucţiuni ale unei maşini virtuale Java (numită bytecod). Execuţia aplicaţiilor Java este interpretată. Singura parte din mediul de execuţie Java care trebuie portată de pe o arhitectură pe alta este mediul de execuţie cuprinzând interpretorul şi o parte din bibliotecile standard care depind de sistem. În acest fel, aplicaţii Java compilate pe o arhitectură SPARC de exemplu, pot fi rulate fără recompilare pe un sistem bazat pe procesoare Intel.

Una dintre principalele probleme ale limbajelor interpretate este viteza de execuţie, considerabil scăzută faţă de cea a limbajelor compilate. Dacă nu vă mulţumeşte viteza de execuţie a unei astfel de aplicaţii, puteţi cere mediului de execuţie Java să genereze automat, plecând de la codul maşinii virtuale, codul specific maşinii pe care lucraţi, obţinându-se astfel un executabil nativ care poate rula la viteză maximă. De obicei însă, în Java se compilează doar acele părţi ale programului mari consumatoare de timp, restul rămânând interpretate pentru a nu se pierde flexibilitatea. Mediul de execuţie însuşi este scris în C, ceea ce îl face extrem de portabil.

Interpretorul Java este gândit să lucreze pe maşini mici, precum ar fi procesoarele cu care sunt dotate aparatele casnice. Interpretorul plus bibliotecile standard cu legare dinamică nu depăşesc 300 Kocteţi. Chiar împreună cu interfaţa grafică totul rămâne mult sub 1 Moctet.

Limbajul Java este în totalitate orientat obiect. Cu el se pot crea clase de obiecte şi instanţe ale acestora, se pot încapsula informaţiile, se pot moşteni variabilele şi metodele de la o clasă la alta, etc. Singura trăsătură specifică limbajelor orientate obiect care lipseşte este moştenirea 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ă. În Java orice element este un obiect, în afară de datele primare. Din Java lipsesc funcţiile şi variabilele globale. Ne rămân desigur metodele şi variabilele statice ale claselor.

Java este distribuit, având implementate biblioteci pentru lucrul în reţea care ne oferă TCP/IP, URL şi încărcarea resurselor din reţea. Aplicaţiile Java pot accesa foarte uşor reţeaua, folosindu-se de apelurile către un set standard de clase.

Java este robust. În Java legarea funcţiilor se face în timpul execuţiei şi informaţiile de compilare sunt disponibile până în momentul rulării aplicaţiei. Acest mod de lucru face ca sistemul să poată determina în orice moment neconcordanţa dintre tipul referit la compilare şi cel referit în timpul execuţiei evitându-se astfel posibile intruziuni răuvoitoare în sistem prin intermediul unor referinţe falsificate. În acelaşi timp, Java detectează referinţele nule dacă acestea sunt folosite în operaţii de acces. Indicii în tablourile Java sunt verificaţi permanent în timpul execuţiei şi tablourile nu se pot parcurge prin intermediul unor pointeri aşa cum se întâmplă în C/C++. De altfel, pointerii lipsesc complet din limbajul Java, împreună cu întreaga lor aritmetică, eliminându-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, evitându-se astfel încercările de eliberare multiplă a unei zone de memorie.

Java este un limbaj cu securitate ridicată. El verifică la fiecare încărcare codul prin mecanisme de CRC şi prin verificarea operaţiilor disponibile pentru fiecare set de obiecte. Robusteţea este şi ea o trăsătură de securitate. La un al doilea nivel, Java are incorporate facilităţi de protecţie a obiectelor din sistem la scriere şi/sau citire. Variabilele protejate într-un obiect Java nu pot fi accesate fără a avea drepturile necesare, verificarea fiind făcută în timpul execuţiei. În plus, mediul de execuţie Java poate fi configurat pentru a proteja reţeaua locală, fişierele şi celelalte resurse ale calculatorului pe care rulează o aplicaţie Java.

Limbajul Java are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de execuţie, inclusiv primitive de sincronizare între firele de execuţie. Acest suport este independent de sistemul de operare, dar poate fi conectat, pentru o performanţă mai bună, la facilităţile sistemului dacă acestea există.

Java este dinamic. Bibliotecile de clase în Java pot fi reutilizate cu foarte mare uşurinţă. Cunoscuta problemă a fragilităţii superclasei este rezolvată mai bine decât î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 târzie variabilelor, doar la execuţie. Regăsirea 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ă fără să fie necesară recompilarea subclaselor acesteia. Se elimină astfel necesitatea actualizării aplicaţiilor, generată de apariţia unei noi versiuni de bibliotecă aşa cum se întâmplă, de exemplu, cu MFC-ul Microsoft (şi toate celelalte ierarhii C++).

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Lab 6
    • Cadru1.java
    • Cadru2.java
    • ExempluMeniuri.java
    • Fereastra.java
    • FereastraDialog.java
    • TextDialog.java
  • lab1
    • FirNou.class
    • FirNou.java
    • HelloApplet.class
    • HelloApplet.java
    • HelloDate.class
    • HelloDate.java
    • HelloJava.class
    • HelloJava.java
    • HelloJavaApplet.class
    • HelloJavaApplet.html
    • HelloJavaApplet.jar
    • HelloJavaApplet.java
    • HelloWorldApplet.class
    • HyJava.class
    • HyJava.java
    • Instante.class
    • Instante.java
    • LungimeNume.class
    • TestFirNou.class
    • TestFirNou.java
  • lab10
    • AboutDialog.class
    • Banal.class
    • Banal.java
    • Editor.class
    • Editor.java
    • ErrorDialog.class
    • FindDialog.class
    • intrebari.txt
    • Jompanion.class
    • Jompanion.java
    • ReplaceAllDialog.class
    • ReplaceDialog.class
    • ServerBanal.class
    • ServerBanal.java
  • lab2
    • EventTutor.class
    • EventTutor.java
    • HelloApplet.java
    • HelloJavaApplet.html
    • HelloJavaApplet.java
    • Palindrom.class
    • Palindrom.html
    • Palindrom.java
  • lab3
    • Cerc.class
    • Cerc.java
    • Cilindru.class
    • Cilindru.java
    • Conul.java
    • Dreptunghi.java
    • Map.java
    • Punct.class
    • Punct.java
    • Sfera.java
    • TestCerc.class
    • TestCerc.java
    • TestCilindru.java
    • TestCilindruCon.java
    • TestD.java
    • TestDreptunghi.java
    • testfig.class
    • testfig.java
  • lab4
    • images
      • awake.gif
      • left1.GIF
      • left2.GIF
      • right1.gif
      • right2.gif
      • scratch1.gif
      • scratch2.gif
      • sleep1.gif
      • sleep2.gif
      • stop.gif
      • yawn.gif
    • awake.gif
    • Concurs.class
    • Concurs.java
    • Filozof.class
    • Filozof.java
    • Neko.class
    • Neko.htm
    • Neko.java
    • Neko1.class
    • Neko1.java
    • right1.gif
    • right2.gif
    • scratch1.gif
    • scratch2.gif
    • sleep1.gif
    • sleep2.gif
    • stop.gif
    • TestFirNou.java
    • yawn.gif
  • lab5
    • Border.class
    • Border.java
    • Butoane.class
    • Butoane.java
    • ButtonA.class
    • ButtonA.java
    • Culori.class
    • Culori.java
    • Ghicitoare.class
    • Ghicitoare.java
    • Linii.class
    • Linii.java
    • Parola.class
    • Parola.java
    • Pete.class
    • Pete.java
    • Tabel.class
    • Tabel.java
    • TestButon.htm
  • lab6
    • Cadru1.class
    • Cadru1.java
    • Cadru2.class
    • Cadru2.java
    • Chestionar$1.class
    • Chestionar.class
    • ExempluFereastra.class
    • ExempluFereastra.java
    • ExempluMeniuri.class
    • ExempluMeniuri.java
    • Fereastra.class
    • Fereastra.java
    • FereastraDialog.class
    • FereastraDialog.java
    • test.htm
    • TextDialog.class
    • TextDialog.java
  • lab7
    • Chestionar$1.class
    • Chestionar.class
    • Chestionar.java
    • ExempluCheckbox.class
    • ExempluCheckbox.java
    • ExempluGraphics.class
    • ExempluGraphics.java
    • ExempluLayout.class
    • ExempluLayout.java
    • ExempluList.class
    • ExempluList.java
    • ExempluText.class
    • ExempluText.java
    • ImageExample.class
    • ImageExample.java
    • imagine.GIF
    • imagine.jpg
    • LeftCanvas.class
    • RightCanvas.class
    • ScrollbarExample.class
    • ScrollbarExample.java
  • lab8
    • 400prime.dat
    • Chestionar$1.class
    • Chestionar.class
    • Chestionar.java
    • CitesteOcteti.class
    • CitesteOcteti.java
    • CitestePrime.class
    • CitestePrime.java
    • CitesteSursa.class
    • CitesteSursa.java
    • desen.gif
    • desen.jpg
    • desen.txt
    • octeti.dat
    • ScrieOcteti.class
    • ScrieOcteti.java
    • ScriePrime.class
    • ScriePrime.java
  • lab9
    • Aplicatie$1.class
    • Aplicatie.class
    • Aplicatie.java
    • AplicatieWindows.java
    • Interviu$1.class
    • Interviu$2.class
    • Interviu.class
    • Interviu.java
    • Moneda$1.class
    • Moneda$2.class
    • Moneda.class
    • Moneda.java
  • curs1.doc
  • curs 8.doc
  • curs 7.doc
  • curs3.doc
  • curs 6.doc
  • curs 9.doc
  • curs2.doc
  • Curs5.doc
  • curs4.doc
  • curs 10.doc
  • curs 11.doc
  • programa licenta colegiu info 2006.doc
  • Neko.java
  • Parola.java
  • Culori.java
  • Ghicitoare.java
Alte informații:
Tipuri fișiere:
doc, jpg, gif, htm, html, java, class, txt, jar, dat
Nota:
9/10 (2 voturi)
Nr fișiere:
199 fisiere
Pagini (total):
147 pagini
Imagini extrase:
165 imagini
Nr cuvinte:
70 236 cuvinte
Nr caractere:
371 823 caractere
Marime:
591.20KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!