Sunteți pe pagina 1din 4

1

CONSIDERAŢII INTRODUCTIVE

1.1. Istoricul şi caracteristicile limbajului Java

Limbajul Java a fost generat în cadrul proiectului Green al companiei Sun


Microsystems, lansat în 1991 şi condus de James Gosling. Proiectul şi-a propus,
iniţial, doar să producă un limbaj adecvat programării aplicaţiilor ce folosesc
aparatură de măsură computerizată conectată în reţea –inclusiv în Internet-,
asemănător cu C / C++ -ba chiar declarat inspirat din acestea-, dar, în final, a
reuşit mult mai mult decât atât.

Caracteristicile limbajului Java sunt:


1. Se traduce în cod executabil printr-un proces în două faze, ce cuprinde, mai
întâi, o compilare, iar apoi, o interpretare. Compilarea se face de la textul
Java la un cod de maşină virtuală Java, iar interpretarea -de la codul de
maşină virtuală Java la codul de maşină de execuţie efectivă, fizică. Prin
termenul “maşină virtuală” se desemnează un program translator de limbaj,
de tip interpretor, emulând un procesor ipotetic (de regulă –şi este cazul şi
pentru procesorul ipotetic Java-, procesorul respectiv se concepe astfel încât
modelul său de programare să fie cât mai apropiat de modelele de
programare pe care le prezintă principalele procesoare fizice comerciale).
Codul de maşină virtuală Java se numeşte “byte code” sau cod intermediar.
Faptul că traducerea codului de maşină virtuală Java în cod maşină fizică se
realizează prin interpretare, face ca în tehnologia Java să nu se ajungă
niciodată să se dispună de o exprimare executabilă a programelor, în întregul
lor –şi nici măcar de una obiect-. Altfel spus, în tehnologia Java, rularea unui
program presupune întotdeauna o alternanţă traducere linie “byte code” în
secvenţa corespunzătoare de instrucţii maşină ale procesorului concret pe
care se face rularea – execuţie, cu suprascrierea în memorie, peste codul
executabil al unui pas, a codului executabil al pasului următor şi nu doar o
simplă execuţie a ceva deja tradus, cum se întâmplă în cazul tehnologiilor
aferente limbajelor exclusiv compilate. Această stare de fapt atrage după sine
două dezavantaje ale limbajului Java în raport cu limbajele exclusiv
compilate, cum este C++: 1. necesitatea ca pe maşina de execuţie să fie
întotdeauna prezent traducătorul cod intermediar – cod maşină –adică:
maşina virtuală Java-; 2. lungirea timpului total necesar rulării unui program
cu timpul de interpretare a expresiei lui în cod intermediar.

1
2. Are un mare grad de independenţă de platformă. Mai exact, este total
independent de platformă, în ceea ce priveşte compilarea de la text Java la
byte code şi dependent în privinţa interpretării de la byte code la cod
maşină. Este uzual ca fişiere “byte code” obţinute pe o platformă oarecare să
fie pur şi simplu aduse şi executate pe calculatoare ce nu au instalat mediul
de programare Java, ci doar o maşină virtuală Java (înglobată, de exemplu,
într-un browser).
3. Este orientat pe obiecte. Zestrea de clase îmbibliotecate ale mediului Java
este extrem de bogată şi complexă.
4. Este concurent. Concurenţa în Java este una de tip multithreading.
Reamintim că prin thread sau fir de execuţie înţelegem un modul de program
ce reuneşte activităţi autonome sau independente şi are proprietatea că o
sesiune de rulare a sa se poate desfăşura în paralel sau cvasiparalel cu
sesiunile de rulare ale altor module delimitate pe acelaşi principiu sau chiar
cu alte sesiuni de rulare ale lui însuşi.
5. Prezintă câteva simplificări în raport cu C++, şi anume: nu admite moştenirea
multiplă, nu operează cu pointeri, ci cu referinţe, asupra cărora se pot efectua
doar operaţii de atribuire, nu şi operaţii aritmetice, efectuează alocarea /
dezalocarea memoriei implicit (există, totuşi, un mecanism de eliberare a
memoriei şi gestiune a ei raţională, numit “garbage collection”), este mai
puternic tipizat.
6. Este distribuit. Este distribuit în sensul că permite programarea de aplicaţii în
care procesarea este distribuită. Programele Java pot îngloba, alături de
obiecte locale, obiecte aflate la distanţă, în mod normal în reţea, inclusiv în
Internet. În Java, sunt respectate protocoalele de reţea FTP, HTTP, etc.
7. Este performant. Dezavantajul că fiecare execuţie a unui program Java
incumbă şi un proces de traducere –interpretarea- este diminuat prin faptul că
maşinile virtuale Java sunt realizate excelent –mai nou: cu atributul JIT (Just
In Time)- şi apoi compensat prin aceea că programele pot fi organizate
multithreading.
8. Este dinamic şi robust. În Java, alocarea memoriei este prin excelenţă
dinamică –adică: nu se face la compilare / linkeditare, ci în execuţie- şi orice
alocare este precedată de verificări.
9. Este sigur. Înainte ca interpretorul Java să execute codul intermediar, acesta
este supus unor verificări de tipul: nedepăşirea stivei, etc.

1.2. Medii de programare Java

Pentru dezvoltarea de aplicaţii în limbajul Java, s-au promovat mai multe


medii de programare. Primul dintre ele aparţine, evident, firmei Sun
Microsystems. El se numeşte JDK (Java Development Kit) şi conţine, în esenţă,
următoarele programe (evident, există mai multe versiuni JDK, notate JDK 1.1,
JDK 1.2, ...):

2
 compilatorul Java: javac
 interpretorul de cod intermediar: java (este specific pentru fiecare maşină
ţintă)
 un depanator: jdb
 un generator de fişiere header pentru integrarea unor funţii scrise în C:
javah
 un vizualizator pentru aplicaţiile Java conţinute în pagini HTML:
appletviewer
 un generator de documentaţie: javadoc
 un dezasamblor pentru fişiere .class: javap
 un utilitar pentru generarea de arhive: jar

Distribuţia JDK cuprinde, de asemenea, o serie de biblioteci, numite, în


terminologia Java, pachete (packages):
java.lang: conţine clasele de bază
java.io: conţine clase pentru intrări / ieşiri generice şi accesarea
fişierelor
java.math: conţine clase pentru operaţii matematice
java.applet: conţine clase suport pentru scrierea de applet-uri (un applet este
o aplicaţie Java destinată a fi rulată dintr-un browser)
java.net: conţine clase pentru accesarea reţelei
java.util: conţine clase cu rol utilitar
java.awt: conţine clase suport pentru dezvoltarea interfeţelor grafice
(AWT : Abstract Window Toolkit)
java.rmi: conţine clase suport pentru apelul unor metode ale unor obiecte
aflate la distanţă
java.security conţine clase suport pentru autentificare, criptare, etc.
:
java.sql: conţine clase suport pentru lucrul cu baze de date
ş.a.

În urma unor multiple dezvoltări, firma Sun Microsystems a trecut la


distribuţia “Java 2”, în variantele:
 standard: J2SE -Java 2 Standard Edition
 intreprindere: J2EE -Java 2 Enterprise Edition
 micro: J2ME -Java 2 Micro Edition
iar apoi la altele, superioare acesteia, ajungând, actualmente, la Java 5.

Există, de asemenea, şi medii integrate de dezvoltare pentru Java, precum:


Sun Java Studio (oferit de Sun Microsystems), Visual Age for Java (oferit de
IBM), JBuilder (oferit de Borland), JDeveloper (oferit de Oracle), Eclipse
(proiectat iniţial de IBM, dar aflat acum în stadiu de open source). Probabil că,
la ora actuală, cel mai popular dintre toate acestea este cel din urmă, Eclipse.

3
4

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