Extras din laborator
Java este modelat dupa C/C++, exista totusi citeva diferente majore fata de acesta:
• Prin compilarea programelor Java nu se obtine cod obiect
Cind sursele C/C++ sint compilate se obtine cod obiect, adica un format obiect specific platformei pentru care au fost compilate. Pe de alta parte, sursele Java, prin compilare, duc la un format numit bytecode care nu este nici cod obiect si nici sursa. Un beneficiu al acestui format este acela ca nu este dependent de nici o platforma, ceea ce duce la portabilitatea sa. El este executat prin intermediul uni interpretor care transleaza bytecode-ul in cod masina. Un alt beneficiu este acela ca este eliminat pasul de link-editare. Interpretorul este cel care apeleaza bibliotecile la cerere.
• In Java nu exista apeluri externe
In C++ se pot folosi proceduri si apeluri ale functiilor de sistem prin intermediul apelurilor externe in sintaxa C, declarind o functie C in afara spatiului de nume C++. In Java nu exista o astfel de sintaxa, ca rezultat imediat fiind faptul ca nu este posibila folosirea directa a codului-sursa C/C++.
Totusi, Java incorporeaza o gama larga de functionalitati in interfata Java API, pentru grafica, multimedia, lucru in retea, interogarea sistemului, I/O cu fisiere, si multe altele.
Este de asemenea posibila folosirea surselor din C/C++, insa intr-o maniera complicata, si nu face obiectul laboratorul de fata. Totusi ar trebui reamintit ca aceasta folosire duca la limitarea drastica a portabilitatii.
• In Java nu exista mostenire multipla
Deseori in programarea orientata-obiect de nivel avansat este necesara creearii unui obiect care sa mosteneasca caracteristicile a mai mult de un alt obiect, caz in care apare mostenirea multipla. Cu cit aplicatia este mai complexa, cu atit creste necesitatea folosirii acestui tip de mostenire.
Java inlocuieste mostenirea multipla cu un nou concept, numit interfata despre care se va vorbi mai pe larg in laboratoarele urmatoare.
• Java nu are probleme legate de spatiile de nume
In C++ clasele, chiar daca fac parte din module separate ale proiectului, trebuie totusi sa respecte principiul unicitatii numelor. Asta inseamna ca nici o clasa din cadrul unui proiect nu trebuie sa aiba un nume care coincide cu o alta din cadrul acelui proiect. Java evita acest lucru prin creearea unui spatii de nume ierarhizat pe mai multe nivele de precedenta, incepind cu nivelul cel mai inalt corespunzator spatiului de nume al pachetului si terminind cu cel mai scazut, adica cel al spatiului de nume al blocului local. Astfel, fiecare nivel in spatiile de nume este folosit pentru a construi un nume identic pentru fiecare obiect, permitind ca doua clase cu acelasi nume sa existe in pachete diferite.
Preview document
Conținut arhivă zip
- Tehnici de programare.doc