Sunteți pe pagina 1din 28

UNIVERSITATEA TEHNICĂ “GH.

ASACHI” DIN IAŞI


FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Programare Java

I. Prezentarea limbajului Java

2013
Obiectivele cursului
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Programul disciplinei include prezentarea limbajului Java, a posibilităţilor


oferite de tehnologia Java pentru dezvoltarea interfeţelor grafice, a
Obiective
aplicaţiilor în sistemul Web (applet, servlet, pagini JSP). De asemenea se
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

va studia tehnologia J2ME cu aplicaţii pentru dispozitivele mobile.

Elementele de bază ale limbajului Java, Fire de execuție în Java, Stream-uri


de intrare/ieşire, Pachetul Java.io, Interfaţa grafică cu utilizatorul,
Conţinut Comunicaţii Java folosind socket-uri, Invocarea la distanţă a obiectelor
(descriptori) Java (RMI), CORBA-Dezvoltarea aplicaţiilor distribuite eterogene, Applet-
uri, Tehnologia Java servlet, Java Server Pages (JSP), Programarea
dispozitivelor mobile folosind J2ME.
Sistemul de evaluare
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Sistemul de evaluare:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

Forma (E - examen, C - colocviu, VP - verificare pe parcurs) E

Evaluarea
1. răspunsurile la examenul scris 50%
finală
2. activitatea la laborator 20%
3. activitatea la proiect 30%
Bibliografie selectivă
1. Ian F. Darwin, Java CookBook (2nd Edition), O’Reilly, 2004.
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

2. Kathy Sierra, Bert Bates, Head First Java, O’Reilly, 2005.


3. Bruce Eckel, Thinking in Java (4th Edition), Pearson Education, 2006.
4. Jonathan Knudsen, Wireless Java Developing with J2ME
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

(2nd Edition), 2003.


5. Joshua Bloch, Effective Java (2nd Edition), Prentice Hall, 2008.
6. Jan Graba, An Introduction to Network Programming with Java,
Springer, 2007.
7. James Keogh, J2ME: The Complete Reference, McGraw-Hill/Osborne,
2003
8. http://docs.oracle.com/javase/7/docs/api/
Prezentarea limbajului Java
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

1. Scurt istoric

2. Caracteristicile limbajului Java


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

3. Platforma Java2

4. Crearea și execuția unei aplicații Java

5. Limbajul Java comparat cu limbajul C++

6. Conceptele programării orientate pe obiecte


Prezentarea limbajului Java
1. Scurt istoric
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 1991: James Gosling și Sun Microsystems

 scopul proiectului Green – construirea unui sistem distribuit și eterogen care să


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

permită dispozitivelor electronice de larg consum să comunice între ele

 limbajul Oak

 1993: se lansează primul browser grafic WWW Mosaic 1.0

 1994: echipa Green dezvoltă browserul WebRunner ce suportă limbajul Oak

 1995 Oak este redenumit Java

 WebRunner este redenumit HotJava


Prezentarea limbajului Java
1. Scurt istoric
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 1995: Java 1.0

 1997: Java 1.1


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 1998: Java 1.2 (redenumit Java 2)

 1999: Java 2 se împarte în J2SE, J2EE, J2ME

 2000: J2SE 1.3

 2003: J2SE 1.4

 2004: J2SE 1.5 (redenumit Java 5, nume de cod: Java Tiger)


Prezentarea limbajului Java
1. Scurt istoric
 2006: Java SE 6 (nume de cod: Mustang)
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 2010 Java SE 6 update 21 (iulie)

 din 2010 Sun Microsystems este o divizie a firmei Oracle


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 2011 Java SE 7.0 (nume de cod: Dolphin), 2013 Java SE 7 update 40

Detalii istoric Java: http://oracle.com.edgesuite.net/timeline/java/

http://en.wikipedia.org/wiki/Java_version_history

Java este unul dintre cele mai populare limbaje de programare:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Prezentarea limbajului Java
2. Caracteristicile limbajului Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Java este un limbaj:

 simplu

 orientat pe obiecte
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 robust

 concurent (multithreading)

 independent de platformă

 distribuit

 dinamic

 sigur

 interpretat și performant
Prezentarea limbajului Java
3. Platforma Java2
Sun a definit 3
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

platforme de bază:

 J2SE (Standard
Edition)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

-pentru aplicații
desktop

 J2EE (Enterprise
Edition)
-pentru aplicații
distribuite

 J2ME (Mobile
Edition)
- aplicații pentru
dispozitive mobile
Prezentarea limbajului Java
3. Platforma Java2
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

J2SE (Standard Edition)

include tehnologia Java Web

Start
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 include două componente:

-JRE

(Java Runtime Environment)

-JDK

(Java Development Kit)


Prezentarea limbajului Java
3. Platforma Java2
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

J2EE (Enterprise Edition)

 aplicații pentru sisteme

eterogene, cu baze de date


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

distribuite

 aplicații și servicii web:

sevlet-uri, pagini JSP


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

3. Platforma Java2
J2ME (Micro Edition) - aplicații pentru dispozitive mobile
Prezentarea limbajului Java
Prezentarea limbajului Java
4. Crearea și execuția unei aplicații Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Programele Java sunt compilate și interpretate:

 editarea programului Java

 compilarea programului Java => cod de octeți (bytecode)


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 execuția (interpretarea) codului de octeți folosind mașina virtuală Java (JVM)

Exemple de mașini virtuale Java: HotSpot JVM, Microsoft VM for Java, HP-embedded

Virtual Machine for Java.


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI


Prezentarea limbajului Java
4. Crearea și execuția unei aplicații Java
Prezentarea limbajului Java
4. Crearea și execuția unei aplicații Java
Exemplu: O aplicație simplă care afișează textul ”Welcome to Java!”
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

1) editarea programului Java


 Welcome.Java

/********************************************
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

*Programul afișează “Welcome } to Java!”


********************************************/
class Welcome {
public static void main ( String args[ ] ) {
System.out.println(”Welcome to Java!”);
}
}

Welcome.Java
Prezentarea limbajului Java
4. Crearea și execuția unei aplicații Java
Exemplu: O aplicație simplă care afișează textul ”Welcome to Java!”
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

2) compilarea programului Java


-din linia de comandă
 javac Welcome.Java
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 rezultă fișierul Welcome.class ce conține codul de octeți

3) execuția programului Java


-din linia de comandă
 java Welcome
 se afișează mesajul: “Welcome to Java!”

Medii integrate de dezvoltare (IDE): JCreator, Eclipse, NetBeans etc.


Prezentarea limbajului Java
5. Comparație Java - C++
 Java (limbaj interpretat ) este mai lent decât C++ (limbaj compilat;
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 în Java nu există funcții sau date globale;

 În Java nu trebuie pus ; după definiția clasei;


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 În Java nu există operatorul de rezoluție ::, se folosește operatorul punct;

 În Java expresiile condiționale pot fi doar de tip boolean, nu de tip întreg;

 În Java șirurile de caractere sunt automat convertite în obiecte String;

 În Java tablourile sunt obiecte, dimensiunea unui tablou se fixează dinamic nu

static ca în C++;

 În Java la execuție se verifică limitele indicilor, evitându-se depășirea domeniului;


Prezentarea limbajului Java
5. Comparație Java - C++

 Java nu are noțiunea de preprocesor, se folosește cuvântul cheie import pentru


FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

utilizarea claselor dintr-o bibliotecă (pachet)

 Java utilizează pachete (packages) în loc de spații de nume (namespaces)


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 Un obiect în Java este automat inițializat cu null

 În Java nu există pointeri.

 Java are constructori similari celor din C++.

 Java nu are destructori, distrugerea obiectelor este făcută de colectorul de gunoi

(garbage collector)

 Java nu suportă argumente implicite.

 Java nu acceptă instrucțiunea goto, dar permite break și continue.


Prezentarea limbajului Java
5. Comparație Java - C++

 În Java toate clasele moștenesc direct sau indirect clasa Object.


FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 Java nu are template-uri, există containere de obiecte (Vector, Stack, Hashtable),

dar nu la fel de eficiente ca template-urile din C++.


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 Folosirea specificatorului protected permite accesul de oriunde din interiorul

pachetului și în plus din clasele derivate, spre deosebire de C++ unde protected

se referă doar la clasele derivate.

 Java introduce conceptul de clase interioare (inner class), clase definite în

interiorul altei clase. Clasa interioară are acces direct la toți membrii clasei în care

este definită și invers.


Prezentarea limbajului Java
5. Comparație Java - C++

 Moștenirea în Java este similară celei în C++, dar sintaxa este diferită. În Java o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

clasă poate fi derivată dintr-o clasă de bază utilizând cuvântul cheie extends. De

asemenea, apelul constructorului clasei de bază se face folosind cuvântul cheie


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

super în loc de this.

 Java nu suportă moștenire multiplă spre deosebire de C++. Utilizarea interfețelor

suplinește oarecum această lipsă.

 Moștenirea în Java nu schimbă nivelul de protecție pentru membrii clasei de bază.

Nu se poate specifica moștenire de tip public, private sau protected ca în C++.

 Atât Java cât și C++ admit clase abstracte, adică clase care nu pot fi instanțiate.
Prezentarea limbajului Java
5. Comparație Java - C++

 În Java nu există cuvântul cheie virtual deoarece toate metodele nestatice


FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

utilizează legarea dinamică, așa că virtual din C++ își pierde semnificația.

 În Java există comentariile speciale /**...*/ care sunt procesate prin generatorul
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

Javadoc și permit elaborarea automată de documentații.

 Java nu permite supraîncărcarea operatorilor, dar permite supraîncărcarea

metodelor.

 La fel ca și C++, Java permite metode native, doar applet-urile nu pot apela

metode native.
Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

 Programul: o colecție de obiecte care au unele proprietăți vizibile iar altele ascunse

și care interacționează între ele prin intermediul metodelor claselor.

 Clasa: reprezentare generală a unei categorii de obiecte.


UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 Interfața clasei: totalitatea metodelor care se pot aplica unui obiect dintr-o clasă.

 Fiecare obiect are o stare, comportament și identitate bine definite.

 Starea : totalitatea variabilelor (atributelor) ce le conține.

 Comportamentul: totalitatea metodelor definite de clasa ce caracterizează obiectul.


Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Principii ce caracterizează programarea orientată pe obiecte:


 Încapsularea - reprezintă gruparea datelor (atributelor) şi a operaţiilor
(metodelor) care pot fi efectuate asupra acestor date, astfel încât detaliile de
implementare să fie ascunse.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

 Moștenirea - acest mecanism permite reutilizarea codului existent și anume


posibilitatea proiectării de noi clase, numite clase derivate folosind clase deja
construite, numite clase de bază sau superclase.
 Polimorfismul - reprezintă abilitatea unei metode cu un anumit nume să aibă
comportări diferite, în funcţie de paramerii de intrare. Nu trebuie să se confunde
această proprietate cu cea de moştenire, cu ajutorul căreia se pot redefini metodele
moştenite de la o altă clasă. Polimorfismul se referă la metode cu acelaşi nume şi cu
parametri de intrare şi/sau ieşire diferiţi.
Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

Un obiect încapsulat poate fi văzut ca o cutie neagră.

Detaliile interne sunt ascunse utilizatorului, acesta putând accesa doar metodele

interfeţei.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

Utilizator Methods
Metode

Data
Date

Încapsulare- exemplu
25
Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
Clasă de bază
Persoana
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

+Nume: String
+Adresă: String
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

Clasă derivată Clasă derivată

Angajat Student
+Companie: String +Facultate:String
+Salar: double

Moștenire - exemplu
26
Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
Clasă Figură geometrică
Metodă
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

abstractă
abstractă
+CalcArie() : double
Clasă
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

concretă Pătrat Cerc


-x : int -x : int
-y : int -y : int
Suprascriere -dim : int -raza: int Suprascriere

double CalcArie() double CalcArie()


{ {
return dim * dim; return PI * raza * raza;
} }
2
Polimorfism- exemplu
Prezentarea limbajului Java
5. Conceptele Programării Orientate pe Obiecte
Limbaje orientate pe obiect:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

• Simula
• Smalltalk
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI

• Ada
• Objective-C
• C++
• Java
• Visual J++
• Eiffel
• C#