Sunteți pe pagina 1din 32

Programare Java

Prof.dr.ing. Nicu Bîzdoacă

1
Examen/Acordarea notei finale
 Notare :
 Midterm – 40% - 4 puncte -
 Examen final – 30% - 3 puncte
 Teme primite la curs – 10% - 1 punct
 Activitate laborator – 20 % - 2 puncte
Bonificatii:
 Varianta multimedia (flash,avi, animatii, comentarii) pentru fiecare curs
prezentat de profesor + 0,5 punct pentru fiecare prezentare realizata si
predata la cursul imediat urmator
 Implicarea in realizarea aplicatiilor prezentate in cadrul cursurilor + pana la 1
punct
 www.robotics.ucv.ro/carti/java
 nicu@robotics.ucv.ro – Subject: Java 10iii
Concurs - variante
1.Structura mobila realizata EXCLUSIV din
materiale recuperate: unitati de CD/DVD uzate;
carcase de calculatoare, motoare de masini de
calculat, alte motoare de cc, jucarii, telecomenzi
jucarii, etc. Structura trebuie sa se deplaseze
independent pe o distanta de 30 m.
2. Participarea la WRO 2014
Criterii de evaluare – v1:
 Design structura – 0 – 20 p
 Pret redus – 0 – 10 p
 Prezentare multimedia a echipei si a proiectului –
0 -20 p
 Timpul cel mai scurt de parcurgere a distantei – 0
-10 p
 Functionalitate – 60 p

ECHIPE – 1 student robotica+1


student mecatronica+2 studenti
multimedia
Evolutia concursului – v1:
 Alcatuirea echipelor – 18 Martie 2014
 Prezentare multimedia membrii echipei – draft – 1.04.2014
 Prezentare propunere design arhitectura – 15.04.2014
 Prezentare propunere structura constructiva motoare –
6.05.2014
 Prezentare propunere structura constructiva comanda –
20.05.2014
 Prezentare multimedia proiect – draft – 27.05.2014
 Concurs – 3.06.2014
Nerespectarea termenelor duce la o depunctare
de 10 puncte pe echipa
Evolutia concursului – v2:
 Distribuirea regulamentului WRO 2014 – 3.03.2014 –
www.wroromania.ro
 Alcatuirea echipelor – 18 Martie 2014
 Distribuirea softului/sitelui pentru antrenament –
10.03.2014
 Prezentare prototipurii concurs – 15.04.2014
 Prezentare suport multimedia (propunere) proiect –
6.05.2014
 Concurs – 18-30.05.2014
Antrenamentele se vor desfasura cel putin saptamanal
in perioada – 18.03.2014 – 15.05.2014
ECHIPE – 1 student robotica+1
student mecatronica+1 student
multimedia
Premii:
 Premiul I: 100 lei/echipa + plus 2 puncte pentru
fiecare student la examenul de Java
 Premiul II: 60 lei/echipa + plus 1,5 puncte pentru
fiecare student la examenul de Java
 Premiul III: 40 lei/echipa + plus 1 punct pentru
fiecare student la examenul de Java
Cuvinte importante:
- tehnologia Java si componentele sale: masina virtuala; limbajul
Java propriu-zis; compilatorul Java; biblioteca de clase Java;
- implementarea firmei Sun a limbajului Java: Platforma J2SE (Java
2 Platform, Standard Edition);
- tipuri de programe implementate de Java: aplicatii Java, applet-
uri;
- etapele dezvoltarii unei aplicatii Java; structura unei aplicatii Java;
metoda main( );
- utilizarea claselor de obiecte din pachetele predefinite (pachete
API) Java; directiva import ; instructiunea package;
- elemente de baza ale limbajului Java: identificatori, variabile,
tipuri primitive de date; constante;
- citirea datelor de la tastatura si afisarea datelor pe ecran: metodele
print, println, readLine, read.

8
Notiuni introductive
Istoric Java:
- proiectul Java a fost initiat inca din 1990 dar firma Sun Microsystems a
facut publica specificatia noului limbaj abia in 1995 la SunWorld in San Francisco;
parintele noului limbaj Java a fost James Gosling, cunoscut ca autor al editorului
emacs; numele initial al limbajului a fost Oak, numele unui copac care crestea in
fata biroului lui James Gosling; acest nume a fost abandonat ulterior si inlocuit cu
Java;
- specificatia noului limbaj Java a fost facuta publica, de catre firma Sun
Microsystems, in anul 1995 la SunWorld in Sun Francisco; in momentul lansarii
sale, Java a revolutionat Internetul, deoarece a fost gandit pentru a imbunatati
continutul paginilor web prin adaugarea unui aspect dinamic: animatie, multimedia
etc;
- incepand cu anul 1998, cand a aparut versiunea 2 a limbajului (Java 2
Platform), Java a fost extins, acoperind si alte directii de dezvoltare: programarea
aplicatiilor enterprise (aplicatii de tip server) precum si a celor adresate
dispozitivelor cu resurse limitate, cum ar fi telefoanele mobile, pager-e sau PDA-uri
(mici dispozitive de calcul, de dimensiuni putin mai mari decat ale unui telefon
mobil, cu facilitati de agenda si capabile sa execute aplicatii intr-un mod relativ
asemanator cu cel al unui PC).
9
Lansarea versiuni 2 a limbajului Java a adaugat multe facilitati, dar limbajul a
pastrat si posibilitatile de a crea aplicatii standard, de tipul aplicatiilor in linie
comanda sau a aplicatiilor bazate pe GUI (Graphical User Interface).
Caracteristicile de baza ale limbajului Java
- Java este un limbaj simplu de folosit. Aceasta caracteristica poate fi
considerata ca o reactie directa la complexitatea considerabila a limbajului C/C++.
Au fost indepartate din Java aspectele cele mai derutante din C++ precum
supraincarcarea operatorilor, mostenirea multipla sau pointer-rii.
- Java este independent de arhitectura calculatorului pe care lucreaza si
foarte portabil. Compilatorul Java genereaza o secventa de instructiuni ale unei
masini virtuale Java. Executia aplicatiilor Java este interpretata. Singura parte din
mediul de executie Java (JRE) care trebuie portata de pe o arhitectura pe alta
cuprinde interpretorul Java si o parte din bibliotecile standard care depind de sistem.
In acest fel aplicatii Java compilate pe o arhitectura SPARC de exemplu, pot fi
rulate fara recompilare pe un sistem bazat pe procesoare Intel. De altfel, mediul de
executie Java (JRE) este scris in C ceea ce il face foarte portabil.
- Interpretorul Java este gandit sa lucreze pe masini mici (memorie mica
de ordinul sutelor de KB), precum ar fi procesoarele cu care sunt dotate aparatele
casnice si telefoanele mobile.

10
- Limbajul Java este orientat obiect. Cu el se pot crea clase de obiecte si
instante ale acestora, se pot incapsula informatiile, se pot mosteni variabilele si
metodele de la o clasa la alta etc. Singura caracteristica care lipseste este mostenirea
multipla, dar pentru a suplini aceasta lipsa, Java ofera o facilitate mai simpla,
numita interfata, care permite definirea unui anumit comportament pentru o clasa de
obiecte, altul decat cel definit de clasa de baza. In Java orice element este un obiect,
in afara de datele primare. Din Java lipsesc functiile si variabilele globale.
- Limbajul Java este distribuit, avand implementate biblioteci pentru
lucrul in retea.
- Limbajul Java este un limbaj cu securitate ridicata.
- Java are inclus suport nativ pentru aplicatii care lucreaza cu mai multe
fire de executie (programare paralela si concurenta). Acest suport este independent
de sistemul de operare.

11
Tehnologia Java si componentele sale
In tehnologia Java sunt cuprinse patru componente:
1. Masina virtuala, denumita JVM (Java Virtual Machine) care interpreteaza
fisierele cu extensia .class ce contine “bytecode”.
“Bytecode” reprezinta cod compilat care este procesat de un program, denumit
masina virtuala, si nu cod executabil care ruleaza pe masina reala ce dispune de un
procesor harwarde.
“Bytecode” este format din instructiuni generice care sunt convertite (transformate)
de masina virtuala in instructiuni specifice procesorului masinii reale. De aceea se
spune ca aplicatiile Java sunt independente de platforma (hardware si software).
Masina virtuala Java mai este denumita si interpretor Java.
2. Limbajul Java propriu-zis. Limbajul Java este orientat pe obiecte si se
aseamana din punct de vedere al sintaxei cu C++.
3. Un compilator care genereaza fisiere cu extensia .class. Compilatorul Java
traduce instructiunile scrise in limbajul Java (stocate in fisiere cu extensia .java) in
instructiuni generice “bytecode”(stocate in fisiere cu extensia .class) care sunt
“intelese” de masina virtuala.

12
4. Biblioteca de clase Java, denumita si Java API. Aceasta biblioteca contine un
set de componente utile care pot fi reutilizate de programatori in diverse aplicatii
informatice.
Implementari ale limbajului Java
Cele mai importante implementari ale limbajului Java sunt realizate de firmele Sun
si IBM.
Microsoft a creat propria sa implementare Java, disponibila numai pe platforme
Windows.

13
Implementarea firmei Sun a limbajului Java
Implementarea Java a firmei Sun este cea mai frecvent utilizata.
Firma Sun a grupat tehnologia Java in trei editii:
1. Java 2 Platform, Micro Edition (platforma J2ME) reprezinta mediul de
dezvoltare al aplicatiilor pentru dispozitive cu resurse mai reduse decat un calculator
PC obisnuit. Printre aceste dispozitive se pot enumera: carduri Smart, pager-e
telefoane mobile, anumite tipuri de televizoare, PAD-uri (Personal Digital
Assistant).
2. Java 2 Platform, Standard Edition (platforma J2SE) reprezinta mediul de
dezvoltare al aplicatiilor de tip “client-side” (care ruleaza pe PC-ul client).
3. Java 2 Platform, Enterprise Edition (platforma J2EE) reprezinta mediul de
dezvoltare al aplicatiilor de tip “server-side” (care ruleaza pe un server si pot fi
accesate de mii de clienti simultan); usureaza enorm crearea de aplicatii internet
industriale scalabile.

14
Platforma J2SE (Java 2 Platform, Standard Edition)
Produsul informatic (software-ul) care implementeaza platforma J2SE si care este
folosit pentru dezvoltarea de aplicatii specifice acesteia este J2SDK (Java 2
Software Development Kit, Standard Edition) in diverse versiuni pe care le
scoate firma si care este livrat gratuit (este un soft liber).
Pentru a fi la curent cu ultimele versiuni ale produsului J2SDK se poate accesa
adresa de internet http://java.sun.com.
Produsul J2SDK include uneltele de creare a programelor Java (compilatorul si alte
unelte necesare pentru dezvoltare de programe) si unelte de executie ale acestora
(masina virtuala, biblioteca de clase Java API etc). Cele mai importante unelte
incluse in J2SDK sunt:
- javac - compilatorul Java;
- java - interpretorul Java;
- appletviewer - folosit pentru testarea applet-urilor (aplicatii care ruleaza
dintr-un navigator de internet).
Pachetul Java 2 SDK este un set de programe care ruleaza, din lina de comanda a
sistemului de operare, utilitare bazate pe text, care nu au nevoie de o interfata
grafica pentru utilizator.
15
Produsul informatic J2RE (Java 2 Runtime Environment, Standard Edition)
este folosit numai cand se executa aplicatii scrise in Java. El este destinat celor care
doresc sa poata executa aplicatii Java, fara a avea nevoie de intreg mediul de
dezvoltare.
J2RE este un produs care poate fi instalat separat, dar si ca o componenta a J2SDK.
Mediul de programare Java si medii integrate IDE (Integrated
Development Environments).
Pachetul Java 2 SDK este destul de departe de instrumentele de programare moderne
denumite si medii integrate de dezvoltare de programe (IDE).
Folosind un mediu IDE, programatorului ii sunt puse la dispozitie toate elementele
de care are nevoie pentru a crea aplicatii Java profesionale: debugger-e pentru
executarea pas cu pas a aplicatiilor, modalitati de a vedea in orice moment ierarhia
de clase si metode existente in cadrul unui proiect, completarea automata a codului,
compilare incrementala (codul este compilat in timp ce este scris) etc.
Exista mai multe astfel de medii IDE care pot ingloba pachetul Java 2SDK cum ar
fi:Eclipse, Forte for Java, JBuilder, NetBeans IDE.

16
Tipuri de programe implementate de Java
Cu ajutorul limbajului Java se pot dezvolta doua tipuri de programe:
1. Programe Java care se executa individual prin intermediul unui interpretor Java.
Acestea se incadreaza in programele “clasice” scrise in diverse limbaje de
programare, cum ar fi:C/C++, Pascal etc. Acest tip de programe Java sunt denumite
aplicatii.
2. Programe Java care se executa in interiorul unui navigator Internet, dintr-un
document HTML. Acest tip de programe Java sunt denumite applet-uri.

17
Etapele dezvoltarii unei aplicatii Java
1. Editarea setului de instructiuni de programare cu ajutorul unui editor de texte.
In acest fel este creat un fisier sursa, care are extensia .java.
2. Compilarea programului. Pentru aceasta operatie se lanseaza in executie un
program special, denumit compilator Java. Compilatorul analizeaza textul sursa al
programului din punct de vedere sintactic, semnaland eventualele erori. Daca
programul nu contine erori sintactice, compilatorul traduce acest program in codul
masina pentru masina virtuala Java (un fel de calculator intr-un alt calculator).
Rezultatul compilarii este unul sau mai multe fisiere de tip “bytecode”- o secventa
de instructiuni de asamblare pentru masina virtuala Java. Fisierul “bytecode” nu
depinde de masina gazda si de sistemul de operare pe care va fi executat programul.
Masina virtuala mai este cunoscuta si ca interpretor Java sau executor (runtime)
Java.
Extensia fisierului “bytecode” rezultat in urma compilarii are extensia .class.
3. Conversia (transformarea), de catre interpretorul Java, a instructiunilor
“bytecode” in instructiuni inteligibile masinii gazda care apoi sunt executate.
Conversia are loc la lansarea executiei si anume instructiune cu instructiune.
In acest mod este asigurata portabilitatea si independenta de platforma.Un
dezavantaj poate fi considerat timpul mai mare de executie.
18
Scrierea
instructiunilor
programului-sursa
(.java)
Conversia
fiecarei
instructiuni Executia
Compilarea “bytecode” in fiecarei
Da Da
programului- Cu succes? instructiune Cu succes? instructiuni cu
sursa cu executabila pe ajutorul
ajutorul masina gazda cu interpretorului
compilatorului ajutorul Java (.class)
Java interpretorului
Java (.class)
Nu Nu

Modificarea
instructiunilor
programului

Procesul de compilare si executie a unei aplicatii Java

19
Ca multe alte limbaje de programare, Java utilizează un complilator care
converteşte codul sursă de nivel înalt, scris de programator, în program
executabil. În general codul maşină oferit de compilator poate fi executat sub o
platformă Windows 95 sau de către procesoarele din familia Intel, sau din
familia Motorola. Compilatorul Java generează un cod independent de
arhitectură - bytecodes. Acest cod va fi rulat şi executat de către o maşină
virtuală - VM- implementată în marea majoritate soft.
În ultima perioadă numeroase companii au anunţat că lucrează la implementarea
unor procesoare hard Java, procesoare care vor îmbunătăţi în mod simţitor
performaţele programelor.
Fişierele bytecodes sunt denumite fişeire de tip clasă - class files - deoarece
conţin o singură clasă Java. Pentru moment se poate considera că o clasă
conţine un grup de rutine şi date.
GraphWindow.java
GraphWindow.class
import java.awg.Frame; CA FE BE 00
02 00 2A 41
class GraphWindow Compilator 11 25 39 7E
extends Frame ( Java .
. .
.

Codul sursă Java Bytecodes Java

20
Pentru a executa bytecod-ul Java încărcat din reţea sau de pe disc, maşina virtuală
utilizează un class loader. Fiecare clasă este verificată de un bytecode verifier care
examinează dacă formatul este corect şi nu accesează zone de memorie interzise. Chiar
dacă pentru această verificare se consumă timp, în realitate acest lucru reduce timpul
total de execuţie, deoarece o dată validat programul, acesta nu va mai fi verificat la
fiecare rulare. Elementul de execuţie al maşinii virtuale rulează apoi bytecod-ul
programului. Acest interpreter poartă numele de interpreter Just in Time. Această
tehnică converteşte bytecodul în cod maşină client imediat după execuţie.

21
Structura unei aplicatii Java
O aplicatie Java este compusa din una sau mai multe clase care interactioneaza
intre ele prin intermediul metodelor. In grupul de clase, care formeaza o aplicatie
Java, trebuie sa existe o clasa care sa contina o metoda statica avand numele main.
Atunci cand se executa o aplicatie Java, masina virtuala va cauta si invoca automat
metoda statica avand numele main.
Nota: Metoda main poate fi considerata ca fiind echivalentul Java a functiei main
din C/C++.
Cel mai simplu program Java (care nu face nimic) arata astfel:
class NuFacNimic
{
public static void main (String [ ] args)
{}
}
Nota: Tipul parametrilor metodei (functiei) main cat si tipul metodei, static void,
sunt obligatorii.
22
Metodele folosite in programele Java reprezinta in mare masura echivalentul
functiilor sau procedurilor din alte limbaje de programare. O definitie completa a
conceptului de metoda va fi data intr-o lectie separata cand se va discuta despre
conceptele de clasa si obiect.
In aceasta lectie prezentam doar cateva notiuni elementare despre metode pentru a
putea scrie functii de genul celor din limbajul C/C++ pe care sa le folosim in
cateva programe simple.
O metoda se defineste prin:
- antetul metodei;
- corpul metodei.
Antetul metodei contine numele metodei, tipul valorii returnate de metoda si o
lista de parametri (eventual vida), fiecare avand un tip precizat, prin care metoda
comunica cu exteriorul ei, incadrata intre paranteze rotunde:
Corpul metodei este constituit din declaratii si instructiuni cara executa diferite
sarcini. Toate declaratiile si instructiunile din corpul functiei sunt incadrate intre
paranteze acolade.

23
Sintaxa definirii unei metode este:
<tip_rezultat> nume_metoda (<lista_parametri>)
{ <corpul_functiei> }
Nota: Prin prefixarea metodelor cu ajutorul cuvintelor cheie public static se poate
spune ca metodele sunt aproape similare cu functiile din limbajul C. Aceasta tehnica
nu trebuie utilizata insa in mod abuziv.
Instructiunea return este utilizata pentru a intoarce o valoare catre codul apelant.
Sintaxa instructiunii return este:
return [<expresie>];
unde:
- <expresie> - specifica valoarea returnata de metoda; in anumite situatii pentru
iesirea fortata dintr-o metoda care are tipul void se foloseste instructiunea return fara
<expresie>.
Daca tipul metodei este void atunci nu se returneaza nici o valoare si deci
instructiunea return nu este necesara.
La apelul unei metode parametrii actuali (reali) sunt trecuti in parametrii formali
utilizand exclusiv transmiterea prin valoare.
24
Nota: Java permite supraincarcarea (overloading) numelui metodelor. Aceasta
inseamna ca mai multe metode cu acelasi nume pot fi declarate in cadrul aceleiasi
clase atata timp cat lista de parametrii formali difera ca numar si tip.
Utilizarea claselor de obiecte din pachetele predefinite (pachete API)
Java
Pot exista unele operatii care sunt frecvent utilizate in cadrul unei aplicatii Java.
(cum ar fi: citirea datelor, scrierea datelor, extragerea radicalului, desenarea de
obiecte grafice etc) pentru care nu exista instructiuni specifice ale limbajului Java.
Din acest motiv, s-au construit pachete predefinite de clase de obiecte (pachete
API) (elaborate de firma proiectanta a mediul de programare folosit) care contin
colectii de clase de obiecte de utilitate generala grupate pe categorii.

25
Mediul de programare J 2 SDK ofera peste 70 de pachete predefinite, printre care,
mai des utilizate sunt:
- java.lang care ofera clase fundamentale pentru limbajul Java: clasa
Integer, clasa Math, clasa System clasa String etc;
- java.io care ofera modalitati de citire/scriere a datelor prin intermediul
fluxurilor de date, a fisierelor etc;
- java.util care contine clase pentru utilizarea colectiilor de date abstracte
de tip stiva si coada, pentru manevrarea datelor calendaristice si a timpului;
- java.util.jar pentru citirea/scrierea fisierelor in format jar (Java Archive);
- java.math care ofera clase specializate in calcul matematic;
- java.text care ofera clase pentru manevrarea textului, a datelor
calendaristice, a timpului si a mesajelor intr-o maniera independenta de limba
utilizata;
- java.net care pune la dispozitie clase pentru implementarea aplicatiilor
de retea.

26
Directiva import pentru utilizarea claselor din pachetele API Java in propria
aplicatie.
Sa presupunem ca se doreste folosirea unei clase oarecare C dintr-un pachet P.
Atunci referirea la acea clasa in cadrul programului se face cu numele P.C, adica
plasand numele pachetului urmat de semnul punct (.) inaintea numelui clasei.
Utilizarea permanenta a numelui pachetului din care fac parte clasele poate crea
dificultati de scriere a programului. Pentru a evita acest lucru se foloseste directiva
import.
Sintaxa directivei import este:
import <nume_pachet>.<nume_clasa>;
sau
import <nume_pachet>.*;
Pentru a doua forma a directivei, toate clasele din pachet vor putea fi abreviate cu
numele lor neprecedat de numele pachetului.
Directivele import trebuie sa apara inainte de orice declarare a unei clase. Pachetul
java.lang este automat inclus in intregime. Acesta este motivul pentru care putem
folosi prescurtari de genul Integer.parseInt ()

27
Crearea de pachete cu clase de obiecte proprii aplicatiei. Instructiunea
package
Daca dorim sa includem o clasa de obiecte intr-un pachet trebuie sa realizam
urmatoarele:
- sa scriem o instructiune package inaintea unei eventuale directive
import;
- apoi, sa stocam fisierul cu extensia .class ce contine clasa respectiva in
director care are numele pachetului.
Sintaxa instructiunii package este:
package <nume_pachet>;
Observatie: In cazul folosirii IDE NetBeans, instructiunea package este inclusa
automat, atunci cand se creaza o noua aplicatie Java (proiect Java).

28
Interfata IDE NetBeans 6.8
Navigatorul proiectului Fereastra de afisare a datelor de iesire si Fereastra de editare a codului
de introducere a datelor de la tastatura

29
Crearea unui proiect Java folosind IDE NetBeans

Pasul 1 - Alegerea tipului de proiect java

30
Pasul 2 - Stabilirea numelui si a locatiei proiectului

31
Întrebări
•Enumeraţi 3 motive pentru care limbajul Java este considerat
potrivit pentru aplicaţii Web.
•Care este diferenţa între un applet Java applet şi o aplicaţie Java
independentă?
•De ce applet-urile Java sunt considerate platforme neutre?
•Cum lucrează un applet Java într-un document HTML?
•Cum lucrează un program Java?
•Ce înţelegeţi prin protocol?
•Care sunt cele mai răspândite protocoluri utilizate în Internet?
Care este diferenţa dintre mediul Java şi mediul C++?

32

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