Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Java


Index » educatie » » informatica » Java
» Java - evolutia limbajului java - elemente generale


Java - evolutia limbajului java - elemente generale


ELEMENTE GENERALE

1. Ce este JAVA ?

n     este un limbaj de programare dezvoltat de JavaSoft, companie in cadrul firmei Sun Microsystems.

n     este complet orientat pe obiecte si ofera posibilitatea reala de refolosire a codului (care este de fapt promisiunea facuta la aparitia programarii orientate pe obiecte).



n     este neutru din punct de vedere arhitectural, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeassi aplicatie ruland, fara nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substantiale firmelor care dezvolta aplicatii pentru Internet.

n     limbajul Java este modelat dupa C si C++, trecerea de la C, C++ la Java facandu-se foarte usor.

n     elimina sursele frecvente de erori ce apar in programare prin eliminarea pointerilor, administrarea automata a memoriei si eliminarea fisurilor de memorie printr-o procedura de colectare a "gunoiului" care ruleaza in fundal;

n     este cel mai sigur limbaj de programare disponibil in acest moment, asigurand mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamica a codului pentru detectarea secventelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanta (acestea nu au acces la reteaua locala, la fisierele stocate in sistemul local si nu pot lansa in executie programe locale), etc.

n     permite creearea unor documente Web imbunatatite cu animatie si multimedia.

n     a fost proiectat pentru a fi folosit in medii distribuite si sisteme deschise.

Evolutia limbajului JAVA

In 1991, firma SUN, mergand pe directia dezvoltarii sistemelor deschise de lucru in retea, a creat un proiect de lucru numit Green, care avea drept scop punerea la punct a unor procesoare care sa poata rula pe diferite tipuri de aparate si punerea la punc a unui sistem care sa poata rula pe platforme diferite. Planul initial prevedea dezvoltarea proiectului in C++, dar au aparut foarte multe probleme in incercarea de dezvoltare acompilatorului de C++. Ca urmare, James Gosling, membru al grupului Green,    a inceput sa lucreze la dezvoltarea unui nou limbaj, numit Oak, care, mai tarziu, avea sa se numeasca Java. De asemenea grupul Green avea sa-si schimbe numele intai in FirstPerson, apoi in JavaSoft.

Abia dupa ce a fost infiintata compania Netscape Communications Corporation, cei de la JavaSoft s-au orientat catre Internet si Web, mediul multiplatforma distribuit al retelei Internet fiind perfect pentru testarea proiectului.

In prezent licenta pentru tehnologia Java a fost acordata unor firme precum IBM, Microsoft, Sillicon Graphics, Adobe si Netscape.

Java : un limbaj compilat si interpretat

In functie de modul de executie al programelor, limbajele de programare se impart in doua categorii :

interpretate : instructiunile sunt citite linie cu linie de un program numit interpretor si traduse in instructiuni masina; avantaj : simplitate; dezavantaje : viteza de executie redusa

compilate : codul sursa al programelor este transformat de compilator intr-un cod ce poate fi executat direct de procesor; avantaj : executie rapida; dezavantaj : lipsa portabilitatii, codul compilat intr-un format de nivel scazut nu poate fi rulat decat pe platforma pe care a fost compilat.

Programele Java pot fi atat interpretate cat si compilate.

Cod sursa Java (compilare) Cod de octeti

Codul de octeti este diferit de codul masina. Codul masina este reprezentat de o succesiune de 0 si 1; codurile de octeti sunt seturi de instructiuni care seamana cu codul scris in limbaj de asamblare.

Codul    masina este executat direct de catre procesor si poate fi folosit numai pe platforma pe care a fost creat; codul de octeti este interpretat de mediul Java si de aceea poate fi rulat pe orice platforma care foloseste mediul de executie Java neutralitatea limbajului Java din punc de vedere arhitectural.

Cum este rulat un program Java ? Interpretorul Java transforma codul de octeti intr-un set de instructiuni masina, intarzierea interpretarii fiind insa foarte mica datorita asemanarii dintre codul de octeti si limbajul de asamblare si din acest motiv executia se face aproape la fel de repede ca in cazul programelor compilate.

Cum este obtinuta neutralitatea arhitecturala a limbajului Java ? Cu alte cuvinte, cum este posibila portarea codului de octeti pe calculatoare diferite? Truc : codul sursa este compilat nu pentru calculatorul pe care se lucreaza ci pentru un calculator inexistent, acest calculator imaginar fiind numit Masina virtuala Java (Java Virtual Machine). Interpretorul actioneaza apoi ca un intermediar intre Masina virtuala Java si masina reala pe care este rulat programul.

Aplicatia utilizatorului

Obiecte Java

Masina virtuala Java

UNIX

Windows

Macintosh

Sisteme de operare

Java si conceptele programarii orientate pe obiecte

Limbajul Java este urmatorul pas logic in domeniul limbajelor de programare si se bazeaza pe cel mai popular limbaj de programare al momentului C++. In Java se pot obtine programe cu aspectul si comportarea programelor C++, dar beneficiind de avantajele oferite de un limbaj proiectat special pentru POO. Java rebunta complet la programarea procedurala specifica C-ului si va obliga sa folositi conceptele solide ale POO.

Conceptele programarii orientate pe obiecte cuprind :

Obiectele

Incapsularea si transmiterea de mesaje

Clasele

Bibliotecile (numite pachete, in Java)

Mostenirea

Modificatorii de acces

Obiectele

unitatea elementara a POO

starea obiectului este data de variabile de instanta

comportamentul obiectului este dat metode

usor de refolosit, actualizat, intretinut

Incapsularea si transmiterea de mesaje

Clasele

incapsuleaza obiecte

o singura clasa poate fi folosita pentru instantierea mai multor obiecte

Pachetele: colectie de clase inrudite

Mostenirea : permite

extinderea functionalitatii unor clase existente

refolosirea codului

Modificatorii de acces : controleaza accesul la metodele si variabilele obiectelor. Acestea pot fi :

Private - accesibile doar obiectelor din aceeasi clasa

Protejate - accesibile obiectelor din aceeasi clasa si din subclasele clasei respective

Prietenosase - (nivelul de accesibilitate prestabilit) accesibile tuturor claselor din pachetul curent

Publice - accesibile tuturor claselor din orice pachet

Programarea in limbajul Java

5. Caracteristicile de baza al limbajului Java

A. Folosirea in medii de retea distribuite

Java a fost proiectat pentru un mediu complex cum este Internetul si de aceea trebuie sa poata rula pe platforme eterogene distribuite. Acest lucru este posibil deoarece :

este neutru din punct de vedere arhiectural = programele pot fi rulate pe orice platforma care are instalat mediul Java

are un grad ridicat de portabilitate = contine obictecte care pot fi folosite pe platforme eterogene si respecta standardele IEEE (Institue of Electrical and Electronics Engineers) pentru structurile de date (folosirea intregilor, a numerelor in virgula mobila, a sirurilor, etc)

este distribuit = poate folosi atat obiecte memorate local cat si obiecte stocate pe calculatoare aflate la distanta

este compatibil cu mediile de lucru in retea (poate fi utilizat in retele complexe) si accepta direct protocoalele de retea obisnuite cum ar fi FTP si HTTP

B.     Asigurarea performantei ridicate

compilatorul si sistemul de executie ofera o viteza ridicata rularii programelor

are incorporate posibilitati de executie multifilara (rularea simultana a mai multor procese) folosind un sistem de acordare de prioritati proceselor ce trebuie executate. Printre procesele care ruleaza in fundal sunt cele de "colectare a gunoiului" si de gestionare a memoriei.

C.     Refolosirea codului si fiabilitatea

Java este un limbaj dinamic, lucru asigurat prin intarzierea legarii obiectelor si legarea dinamica a claselor in timpul executiei, ceea ce impiedica aparitia erorilor in cazul schimbarii mediului de lucru dupa compilarea programului sursa.

Fiabilitatea este asigurata prin eliminarea pointerilor, prin folosirea verificarii dinamice a limitelor si prin gestionarea automata a memoriei, inlaturandu-se posibilitatea fisurilor si violarilor de memorie. O alta cale de evitare a erorilor este verificarea structurilor de date atat la compilare cat si in timpul executiei.

D. Asigurarea securitatii

Interzice accesul la stiva sistemului, la zona libera de memorie si la sectiunile protejate de memorie

Verifica validitatea codului semnaland urmatoarele:

n     Violarile de acces

n     Conversiile ilegale de date

n     Valori si parametri incorecti

n     Modificarea claselor sau folosirea incorecta a acestora

n     Depasirea stivei in partea superioara sau inferioara

n     Activitati suspecte sau neautorizate

Structura limbajului Java

Aplicatii si miniaplicatii

n     miniaplicatie (applet) = program Java creat pentru a fi folosit in sitemul WWW. Applet-urile necesita un program de vizualizare extern : browser Web sau un program specializat de vizualizare (applet viewer).

n     aplicatie (app) = program Java care poate fi rulat independent

Spatii de nume

Pentru evitarea conflictelor legate de spatiile de nume, fiecare componenta a unui nume este imbricata in conformitate cu unul din urmatoarele niveluiri:

0 - spatiul de nume al pachetului

1 - spatiul de nume al unitatii de compilare

2 - spatiul de nume al tipului

3 - spatiul de nume al metodei

4 - spatiul de nume al blocului local

5 - spatiul de nume al blocului imbricat

Interpretorul este responsabil pentru mentinerea si translatarea spatiului de nume. Spatiile de nume sunt separate prin punct.

Ex. java.lang.System.out.println() - calea completa

Pachetele Java din biblioteca originala de pachete sunt referite prin java uramt de numele pachetului (java.lang).

In cazul in care nu exista confuzii poate fi folosita o varianta prescurtata a apelului (interpretorul foloseste prima potrivire de nume descoperita); apelul la println() se putea face si prin System.out.println()

Structuri de denumire a programelor

Fisiere sursa .java (compilare) cod de octeti format din unitati de compilare;

Pentru fiecare clasa declarata in codul sursa este generata o unitate de compilare stocata intr-un fisier separat cu extensia .class

Unitatile de compilare Java contin :

instructiuni de pachet

instructiuni de import

declaratii ale claselor si interfetelor

(structura de baza a unui program Java)

Instructiuni de pachet

Sunt folosite pentru a preciza pozitia pachetelor folosite intr-o aplicatie. In mod implicit Java foloseste calea de acces curenta si presupune ca fisierele cu cod compilat se afla in directorul curent la rularea programului.

Pentru ca obiectele si clasele sa respecte o structura ierarhica diferita de cea prestabilita trebuie inclusa in codul sursa o instructiune de pachet :

package NumePachet

In cazul cand se folosesc mai multe niveluri instructiunea va avea forma:

package MyPackages.NumeSubPachet

Numele de pachete de pe fiecare nivel al spatiului de nume trebuie sa reflecte structura de directoare a sistemului de fisiere, deoarece Java transforma numele pachetelor in cai de acces pentru localizarea claselor si a metodelor asociate pachetelor. De exemplu intr-un sistem Windows 95/NT numele de pachet MyPackages.Pachetel va fi transformat in directorul

aMyPackagesaPachetel unde Java va cauta pachetul respectiv.

Instructiuni de import

Java contine un set de functii principale, accesibile global, si care sunt localizate in pachetul java.lang. Pentru a obtine accesul la alte pachete, clase si obiecte care nu se afla in aceasta biblioteca se folosesc instructiuni de import, care ajuta compilatorul Java sa regaseasca metodele corespunzatoare si sa evite conflictele de nume.

De exemplu, pentru a apela metoda Button din pachetul java.awt (awt = Abstract Window Toolkit) se foloseste instructiunea java.awt.Button. O metoda mai eficienta este de a importa metoda import java.awt.Button si de a apela metoda doar prin instructiunea Button

Cea mai uzuala metoda de import este importul la cerere, care spune compilatorului sa importe numai clasele de care este nevoie in program : import java.awt.* pentru a nu face disponibile toate clasele din java.awt.

Declaratiile de clasa

In Java toate clasele sunt derivate dintr-o clasa sistem numita Object Object este radacina ierarhiei de clase, toate metodele si variabilele clasei fiind disponibile celorlalte clase. In mod implicit toate clasele sunt private. Declaratiile de clasa, fara modificatori de acces, au aceeasi sintaxa ca in C++ :

class nume_clasa

Java accepta numai mostenirea simpla a claselor, fiecare clasa avand asadar un singur parinte, numit superclasa. In scimb, Java permite mostenirea multipla a metodelor claselor, prin intermediul interfetelor claselor.

Declaratiile de interfata

Interfetele sunt clase abstracte. Diferenta majora fata de o clasa este aceea ca interfetele nu pot stoca date. De asemenea, nu pot contine implementari ale metodelor ci doar declaratii ale acestora.

O clasa poate sa implementeze una sau mai multe interfete si poate sa partajeze aceaasi interfata cu alte clase sau instante ale unei clase.

Declaratiile de interfata fara modificatori au urmatorul format:

interface nume_interfata

Declaratiile de clase care folosesc interfete au urmatorul format:

class nume_clasa implements nume_interfata

Un alt format poate fi:

class nume_clasa implements nume_interfata1,,nume_interfataN

Singura deficienta a folosirii interfetelor este aceea ca necesita legare dinamica, ceea ce reduce performantele executiei. Sunt insa mai eficiente decat mostenirea multipla din C++, deoarece reduc suprasarcina de executie.





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate