Ingineria inversă
Ingineria inversă
Ingineria inversă
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Exemple: ingineria <strong>inversă</strong> a programelor Java<br />
refolosirii codului. Codul dezvoltat în C este însă dificil de refolosit. De multe ori este mai uşor şi<br />
consumăm mai puţin timp dacă scriem totul de la început decât să refolosim diverse coduri deja<br />
scrise. Soluţia a fost oferită de o echipă de la firma AT&T Bell Labs care a propus o extensie a<br />
limbajului C, numită C++. Părintele noului limbaj este Bjarne Stroustrup. Limbajul C++ permite<br />
crearea unor module de cod, numite obiecte, folosite pentru executarea unor funcţii specifice.<br />
Aceste obiecte pot fi create şi utilizate în orice program C++, astfel realizându-se refolosirea<br />
codului. Limbajul C++ a constituit o evoluţie logică a limbajului C şi de la apariţie până la ora<br />
actuală a rămas cel mai folosit limbaj de programare.<br />
Deşi este foarte popular, limbajul C++ are şi puncte slabe, acestea fiind moştenite de la<br />
limbajul C. Principalele deficienţe ale limbajului C++ sunt legate de folosirea pointerilor şi<br />
gestionarea memoriei. O singură linie de cod care accesează o locaţie greşită de memorie poate<br />
duce la blocarea aplicaţiei si chiar a sistemului.<br />
Java este pentru programarea anilor ’90 ce a fost C++ pentru programarea anilor ’80. Java<br />
este un limbaj standardizat care se bazează pe cel mai folosit limbaj al momentului, adică C++.<br />
Spre deosebire de C++, care este un limbaj procedural şi orientat pe obiecte, Java este un limbaj<br />
complet orientat pe obiecte. Problemele limbajelor C şi C++ au fost eliminate în noul limbaj. În<br />
Java nu există pointeri, iar gestionarea memoriei se face automat. Java este un limbaj cu execuţie<br />
multifilară, adică interpretorul Java poate să ruleze mai multe fire de execuţie în paralel.<br />
Limbajul Java este un limbaj compilat şi interpretat. Prin compilarea unui program scris<br />
într-un limbaj de programare compilat, codul sursă este transformat în cod maşină. În urma<br />
compilării unui program Java, codul sursă este transformat într-un limbaj de nivel mediu, numit<br />
cod de octeţi. Codul de octeţi este diferit de codul maşină. Codul maşină este reprezentat printr-o<br />
succesiune de 0 şi de 1, pe când codul de octeţi se aseamănă mai mult cu limbajul de asamblare.<br />
Codul maşină poate fi executat direct de procesor, dar codul de octeţi trebuie interpretat înainte de<br />
a fi executat. Acest lucru cade în seama mediului de execuţie Java, interpretorul Java interpretează<br />
codul de octeţi şi îl execută. Întârzierea produsă în timpul rulării de această interpretare este destul<br />
de mică, executarea programului fiind aproape la fel de rapidă ca şi cea a unui program compilat la<br />
cod maşină. Problemele de viteză au fost rezolvate de apariţia interpretoarelor optimizate, JIT<br />
(Just In Time), interpretoare introduse în majoritatea browserelor actuale. De asemenea, firma Sun<br />
- 13 -