Diferență între revizuiri ale paginii „Noțiuni despre Java”

De la WikiLabs
Jump to navigationJump to search
(Pagină nouă: Java este un limbaj de programare dezvoltat de fosta companie Sun Microsystems (actual [http://www.oracle.com/us/technologies/java/overview/index.html Oracle]) și lansat în anul 199...)
 
Linia 2: Linia 2:
  
 
== Compilare vs. Interpretare ==
 
== Compilare vs. Interpretare ==
 +
 +
Înainte de a prezenta mecanismul de mașină virtuală, trebuie să facem o scurtă descriere a metodelor de execuție a programelor pentru diferite limbaje de programare.
 +
 +
 +
Procesorul unui calculator (sau a unei mașini de calcul în general) poate executa un număr fix de instrucțiuni cunoscute procesorului, numit [http://en.wikipedia.org/wiki/Instruction_set set de instrucțiuni]. Un program poate fi scris folosind direct aceste instrucțiuni (mnemonicile lor), adică în [http://en.wikipedia.org/wiki/Assembly_language limbaj de asamblare], sau într-un limbaj de nivel înalt. Există avantaje și dezavantaje pentru ambele variante.
 +
 +
 +
Un program scris în limbaj de asamblare nu este deloc portabil, deci nu poate fi executat decât pe mașina pentru care a fost scris, adică depinde de setul de instrucțiuni pe care procesorul știe să îl execute, de sistemul de operare care rulează pe mașină, de perifericele prezente, etc. Alt dezavantaj este că pentru o funcționalitate relativ simplă a programului, trebuie scrisă o cantitate mult mai mare de cod decât într-un limbaj de nivel înalt (cum ar fi C sau Java), lucru care face ca mentenanța codului, ca și posibilitățile de dezvoltare să fie multi limitate. Pe de altă parte, un programator cu experiență poate face cele mai bune optimizări în limbaj de asamblare, el având control absolut asupra tuturor resurselor disponibile.
 +
 +
 +
Totuși, pentru aplicații foarte complexe, este necesar un compromis între performanță și dimensiunea/ complexitatea codului. Astfel au apărut limbaje formale, de nivel înalt, care sunt mult mai intuitive, mai ușor de învățat și de înțeles, și care abstractizează o mare parte din straturile de nivel jos ale unei mașini de calcul (setul de instrucțiuni, harta memoriei, structura stivei de execuție, alocarea memoriei, etc.). Avantajele sunt uriașe, începând cu simplitatea sintactică și semantică a unui program și terminând cu faptul că apare acum un anumit grad de portabilitate. Această portabilitate apare datorită faptului că limbajul în sine este unic și un algoritm este descris în același fel pentru orice mașină, dar astfel apare și problema: din moment ce un procesor nu știe să execute decât setul lui de instrucțiuni, cum se face tranziția de la un program scris într-un limbaj de nivel înalt generic, la limbajul de asamblare? Există două soluții: interpretarea și compilarea.

Versiunea de la data 16 iulie 2012 09:48

Java este un limbaj de programare dezvoltat de fosta companie Sun Microsystems (actual Oracle) și lansat în anul 1995. Bazându-se pe acest limbaj și pe ideea de mașină virtuală, în momentul actual au apărut nenumărate tehnologii pentru aplicații web și distribuite [1].

Compilare vs. Interpretare

Înainte de a prezenta mecanismul de mașină virtuală, trebuie să facem o scurtă descriere a metodelor de execuție a programelor pentru diferite limbaje de programare.


Procesorul unui calculator (sau a unei mașini de calcul în general) poate executa un număr fix de instrucțiuni cunoscute procesorului, numit set de instrucțiuni. Un program poate fi scris folosind direct aceste instrucțiuni (mnemonicile lor), adică în limbaj de asamblare, sau într-un limbaj de nivel înalt. Există avantaje și dezavantaje pentru ambele variante.


Un program scris în limbaj de asamblare nu este deloc portabil, deci nu poate fi executat decât pe mașina pentru care a fost scris, adică depinde de setul de instrucțiuni pe care procesorul știe să îl execute, de sistemul de operare care rulează pe mașină, de perifericele prezente, etc. Alt dezavantaj este că pentru o funcționalitate relativ simplă a programului, trebuie scrisă o cantitate mult mai mare de cod decât într-un limbaj de nivel înalt (cum ar fi C sau Java), lucru care face ca mentenanța codului, ca și posibilitățile de dezvoltare să fie multi limitate. Pe de altă parte, un programator cu experiență poate face cele mai bune optimizări în limbaj de asamblare, el având control absolut asupra tuturor resurselor disponibile.


Totuși, pentru aplicații foarte complexe, este necesar un compromis între performanță și dimensiunea/ complexitatea codului. Astfel au apărut limbaje formale, de nivel înalt, care sunt mult mai intuitive, mai ușor de învățat și de înțeles, și care abstractizează o mare parte din straturile de nivel jos ale unei mașini de calcul (setul de instrucțiuni, harta memoriei, structura stivei de execuție, alocarea memoriei, etc.). Avantajele sunt uriașe, începând cu simplitatea sintactică și semantică a unui program și terminând cu faptul că apare acum un anumit grad de portabilitate. Această portabilitate apare datorită faptului că limbajul în sine este unic și un algoritm este descris în același fel pentru orice mașină, dar astfel apare și problema: din moment ce un procesor nu știe să execute decât setul lui de instrucțiuni, cum se face tranziția de la un program scris într-un limbaj de nivel înalt generic, la limbajul de asamblare? Există două soluții: interpretarea și compilarea.