Programmation Orientée Objets Le Langage JAVA

Programmation Orientée Objets Le Langage JAVA

Documents
125 pages
Lire
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Version enseignant Module IP1 Programmation Orientee Objets Le Langage JAVA Amaury Habrard Universite de Provence Aix-Marseille I
  • class class
  • applications java
  • application avec java
  • application java
  • langage java
  • langages java
  • migration entre serveurs
  • entierement ecrit en java capable d'executer des applets ecrites en byte code
  • code natif
  • machine virtuelle
  • machines virtuelles
  • java

Sujets

Informations

Publié par
Nombre de lectures 185
Langue Français
Signaler un problème

Version enseignant
Module IP1
Programmation Orient´ee Objets
Le Langage JAVA
Amaury Habrard
Universit´e de Provence Aix-Marseille I
amaury.habrard@lif.univ-mrs.fr2Table des mati`eres
1 Avant propos 7
2 Introduction : le langage JAVA 9
2.1 Pr´esentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Historique du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Quelques mots cl´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Java et la programmation orient´ee objet . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1 Le concept d’objets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.2 Ind´ependance vis `a vis de la plateforme . . . . . . . . . . . . . . . . . . . . 11
2.4 Structure d’un programme JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1 Que contient un fichier source? . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.2 Execution d’un programme Java . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.3 La machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.4 La m´ethode main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.5 Utilisation d’arguments dans la fonction main . . . . . . . . . . . . . . . . . 13
2.5 Installation et utilisation de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Types, expressions et structures de contrˆole fondamentales . . . . . . . . . . . . . . 15
2.6.1 les types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
La notion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
le type entier (int) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Les flottants/r´eels (float ou double) . . . . . . . . . . . . . . . . . . . . . . 16
Le type caract`ere (char) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Le type bool´een (boolean) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Initialisations et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6.2 Op´erateurs et expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Op´erateurs arithm´etiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Op´erateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Op´erateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Op´erateurs d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Conversion de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Op´erateur conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Priorit´e des op´erateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.3 Les structures de controˆle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Les instructions break et continue . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.4 Les ´el´ements sp´ecifiques au langage JAVA . . . . . . . . . . . . . . . . . . . 25
2.7 Une premi`ere introduction au type String. . . . . . . . . . . . . . . . . . . . . . . 25
2.8 R`egles d’´ecriture d’un programme JAVA . . . . . . . . . . . . . . . . . . . . . . . 26
3`4 TABLE DES MATIERES
2.8.1 Les identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8.2 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.3 Mots cl´es r´eserv´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.4 Remarques globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.5 Commentaires sur le rendu d’un programme Java . . . . . . . . . . . . . . . 27
2.8.6 Liens sur la programmation JAVA . . . . . . . . . . . . . . . . . . . . . . . 28
2.8.7 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9 Exercices de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9.1 Compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9.2 Mots crois´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 La notion d’objets : d´efinition et utilisation 33
3.1 Introduction au d´eveloppement objets . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 La notion de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.1 Exemple de classe : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.2 Cr´eation d’un objet `a l’aide d’une classe . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Exemple d’utilisation dans un programme complet . . . . . . . . . . . . . . 37
3.3 La notion de constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 Affectation et comparaison d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.1 La r´ef´erence null. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5 Le ramasse-miettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6 L’encapsulation de donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7 Champs et m´ethodes statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7.1 Variables statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7.2 Les m´ethodes statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.8 Surd´efinition/surcharge de m´ethodes . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.1 Surd´efinition de constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.9 La copie d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.10 Autor´ef´erencement : le mot cl´e this . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.11 Remarques sur la d´efinition de m´ethodes . . . . . . . . . . . . . . . . . . . . . . . . 51
3.11.1 M´ethodes de type proc´edures et fonctions . . . . . . . . . . . . . . . . . . . 51
3.11.2 Les arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.11.3 Les variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.11.4 La r´ecursivit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.12 Les paquetages (packages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.12.1 Attribution d’une classe a` un paquetage . . . . . . . . . . . . . . . . . . . . 53
3.12.2 Utilisation d’une classe situ´ee dans une paquetage . . . . . . . . . . . . . . 54
3.12.3 Droits d’acc`es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.13 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.13.1 D´eclaration et cr´eation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.13.2 Tableau en argument ou en retour . . . . . . . . . . . . . . . . . . . . . . . 58
3.13.3 Les tableaux `a plusieurs indices . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.14 Exercices de cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.14.1 Compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.14.2 Qui suis-je? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.14.3 Compilateur 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.14.4 Qui suis-je? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.14.5 Compilateur 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.14.6 Mots crois´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.7 Mots crois´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69`TABLE DES MATIERES 5
4 Les concepts d’H´eritage et de Polymorphisme 71
4.1 Pr´esentation et d´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2 Construction et initialisation des objets d´eriv´es . . . . . . . . . . . . . . . . . . . . 74
4.3 Red´efinition, surd´efinition et h´eritage . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3.1 Red´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3.2 La surchage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.3 En r´esum´e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.4 Le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.4.1 Tableaux h´et´erog`enes d’objets. . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.4.2 R`egles du polymorphisme en Java . . . . . . . . . . . . . . . . . . . . . . . 80
4.5 La super-classe Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6 Acc`es par membres prot´eg´es : protected . . . . . . . . . . . . . . . . . . . . . . . 82
4.7 M´ethodes et classes finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.8 Les classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.9 Les interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.9.1 D´efinition et mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.9.2 Int´erˆet des interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.10 Connaˆıtre la classe et les types d’un objet . . . . . . . . . . . . . . . . . . . . . . . 85
4.10.1 L’op´erateur instanceof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.10.2 La class Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.11 Exercices de Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.11.1 Classes abstraites - classes concr`etes . . . . . . . . . . . . . . . . . . . . . . 87
4.11.2 Compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.11.3 Qui suis-je? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.11.4 Vrai ou Faux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5 La gestion d’exceptions 91
5.1 Pr´esentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.2 Gestion de plusieurs exceptions et transmission d’informations . . . . . . . . . . . 92
5.3 D´erivation et red´eclenchement d’exceptions . . . . . . . . . . . . . . . . . . . . . . 95
5.4 Le bloc finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.5 Les exceptions standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.6 Exercices de Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.6.1 Vrai ou Faux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.6.2 Mots crois´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6 Les chaˆınes de caract`eres en Java 103
6.1 Le type String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1.1 Les chaˆınes de caract`eres sont des objets . . . . . . . . . . . . . . . . . . . . 103
6.1.2 Affichage d’une chaˆıne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1.3 Longueur d’une chaˆıne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1.4 acc`es aux caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1.5 Concat´enation : l’op´erateur + . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.1.6 Recherche dans une chaˆıne : la m´ethode indexOf . . . . . . . . . . . . . . . 104
6.1.7 La comparaison de chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Tester l’´egalit´e de deux chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . 104
Comparer deux chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.1.8 Modification d’un caract`ere . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.1.9 Extraction de sous-chaˆınes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.1.10 Passage en majuscules/minuscules . . . . . . . . . . . . . . . . . . . . . . . 105
6.1.11 Conversion d’une chaˆıne vers un type primitif . . . . . . . . . . . . . . . . . 105
6.1.12 Conversion d’un type primitif vers une chaˆıne . . . . . . . . . . . . . . . . . 105
6.1.13 Chaˆınes et tableaux de caract`eres . . . . . . . . . . . . . . . . . . . . . . . . 106
6.1.14 Tableau de chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106`6 TABLE DES MATIERES
6.2 La classe StringBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3 La classe StringTokenizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7 Les entr´ees/sorties 109
7.1 Les fichiers, la classe File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.1 Les champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.2 Les constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1.3 Les m´ethodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.2 Les flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3 Lecture/´ecriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8 Quelques ´el´ements de l’API 113
8.1 La classe Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2 Les classes enveloppes pour les valeurs primitives . . . . . . . . . . . . . . . . . . . 113
8.3 Les collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3.1 D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3.2 ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
L’ancienne classe Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.3.3 Les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.3.4 Les algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Recherche de maximum ou minimum . . . . . . . . . . . . . . . . . . . . . . 118
Algorithme de tris et m´elanges . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.3.5 Les tables associatives (HashMap) . . . . . . . . . . . . . . . . . . . . . . . . 120
8.4 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.1 El´ements disponibles a` partir de Java 1.5 . . . . . . . . . . . . . . . . . . . 123
Boucle for am´elior´ee. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.2 G´en´ericit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.3 R´eflection et Manipulation des types . . . . . . . . . . . . . . . . . . . . . . 123
8.5 Les autres ´el´ements de l’API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Chapitre 1
Avant propos
Ce polycopi´e de cours a pour objectif d’introduire les concepts fondamentaux de la program-
mation objet `a l’aide du langage java. Il est compos´e de 4 chapitres de cours et de 3 chapitre
pr´esentant des ´el´ements de la biblioth`eque du langage. A l’issue de chaque chapitre de cours, un
ensemble d’exercices originaux sont propos´es. Ces exercices sont compl´ementaires au exercices de
travaux dirig´es et au travaux pratiques. Ils ont pour objectif de faire travailler les notions vues en
cours sous une forme diff´erente et d’insister sur le vocabulaire sp´ecifique `a java ou `a la program-
mation objets, il est donc fortement conseill´e de chercher s´erieusement ces exercices. Voici un bref
descriptif des diff´erents chapitres :
– Chapitre 2 : chapitre d’introduction pr´esentant le langage dans sa globalit´e, son historique
et les principes de bases pour ´ecrire un premier programme. On y d´etaille tous les types
primitifs, les structures de contrˆoles et quelques structures fondamentales du langage. On
pr´esente ´egalement les conventions `a suivre lorsque l’on programme en Java.
– Chapitre3:cechapitrepr´esentelaphilosophiedulangage:l’objet.Ond´etaillelesdiff´erentes
structures permettant de d´eclareret de cr´eerles objets ainsi que les implications de chacune
d’elles.
– Chapitre 4 : on y introduit des concepts fondamentaux de la programmationobjet l’h´eritage
et le polymorphisme. Ils font la force de ce type de programmation en permettant notam-
ment une meilleure lisibilit´e des programmes et une plus grande facilit´e de r´eutilisation de
l’existant.
– Chapitre 5 : dans ce chapitre la gestion d’erreurs via la notion d’exception est pr´esent´ee.Ce
type de gestion est propre au langage java.
– Chapitre6:d´etaildelaplupartdesclassesdelabiblioth`equepermettantdeg´ererdeschaˆınes
de caract`eres, type fondamental et traiter de mani`ere sp´ecifique en Java.
– Chapitre 7 : pr´esentation des ´el´ements permettant de lire des flux et notamment de lire et
d’´ecrire dans des fichiers.
– Chapitre 8 : chapitre pr´esentant une partie de la biblioth`eque. On parle de l’acc`es `a des
fonctions math´ematiques, de l’utilisation de listes ou de tables associatives, de quelques al-
gorithmes utilisables, ansi que la g´en´ericit´e.
Ce document en est a` sa troisi`emex version, il existe de mani`ere certaine des coquilles, des
fautes de frappes, des oublis de mot, des erreurs de code involontaire, des copier/coller non perti-
nents, ... Dans le but d’am´eliorer ce document, merci de signaler toutes ces erreurs. Si vous avez
quelques suggestions pour am´eliorercertaines parties, corrigercertaines affirmations,elles sont les
bienvenues.
Bonne lecture et bon travail!
78 CHAPITRE 1. AVANT PROPOSChapitre 2
Introduction : le langage JAVA
2.1 Pr´esentation
Java est une technologie compos´ee d’un langage de programmation orient´e objet et d’un en-
vironnement d’ex´ecution. Pr´ealablement nomm´e Oak, il a ´et´e cr´e´e par James Gosling et Patrick
Naughton chez Sun Microsystems avec le soutien de Bill Joy.
Le langage Java fut officiellement pr´esent´e le 23 mai 1995 au SunWorld.
Javaest `a la fois un langagede programmationet une plateforme d’ex´ecution.Le langageJava
alaparticularit´eprincipaled’ˆetreportablesurplusieurssyst`emesd’exploitationtelsqueWindows,
MacOS ou Linux. C’est la plateforme qui garantit la portabilit´e des applications d´evelopp´ees en
Java.
Le langage reprend en grande partie la syntaxe du langage C++, tr`es utilis´e par les infor-
maticiens. N´eanmoins, Java a ´et´e ´epur´e des concepts les plus subtils du C++ et `a la fois les
plus d´eroutants, tels que les pointeurs. Les concepteurs ont privil´egi´e l’approche orient´ee objet de
sorte qu’en Java, tout est objet `a l’exception des primitives (nombres entiers, nombres `a virgule
flottante, etc.).
Java permet de d´evelopper des applications autonomes mais aussi, et surtout, des applications
client-serveur.Coˆt´eclient,lesapplets sont`al’originedela notori´et´edulangage.C’estsurtoutcoˆt´e
serveur que Java s’est impos´e dans le milieu de l’entreprise graˆce aux servlets, le pendant serveur
des applets, et plus r´ecemment les JSP (Java Server Pages) qui peuvent se substituer `a PHP et
ASP.
LesapplicationsJavapeuventˆetreex´ecut´eessurtouslessyst`emesd’exploitationpourlesquelsa
´et´ed´evelopp´eeune plateforme Java,dont le nomtechnique est JRE (Java Runtime Environment-
Environnementd’ex´ecutionJava).Cette derni`ereestconstitu´eed’une JVM(JavaVirtualMachine
- Machine Virtuelle Java), le programme qui interpr`ete le code Java et le convertit en code natif.
Mais le JRE est surtout constitu´e d’une biblioth`eque standard `a partir de laquelle doivent ˆetre
d´evelopp´es tous les programmes en Java. C’est la garantie de portabilit´e qui a fait la r´eussite de
Java dans les architectures client-serveur en facilitant la migration entre serveurs, tr`es difficile
pour les gros syst`emes.
Dans le cadre de ce cours notre objectif sera d’´etudier les concepts fondamentaux de la pro-
grammation objet a` l’aide du langage java. Le but est d’acqu´erir les bases permettant ensuite de
d´evelopper des applications plus consistantes.
2.2 Historique du langage
– Naissance ≡ 1991 : conception d’un langage applicable `a de petits appareils ´electriques (on
parle de code embarqu´e) par la soci´et´e Sun Microsystem. La syntaxe est proche du C++,
utilisantleconceptdemachinevirtuelle.Lecodesourceesttraduitdansunlangageuniversel
disposant de fonctionnalit´es communes `a toutes les machines. Ce code interm´ediaire est dit
910 CHAPITRE 2. INTRODUCTION : LE LANGAGE JAVA
form´e de byte code et est compact et portable sur n’importe quelle machine : il suffit qu’elle
dispose d’un programme permettant d’interpr´eter le langage, on parle de machine virtuelle.
Ce projet s’appelait Oak.
– Et´e 1992 : premi`ere pr´esentation interne des possibilit´es de Oak. Un appareil appel´e ”Star
Seven” permet de visualiser une animation montrant Duke, l’actuelle mascotte de Java.
– 1994 : d´eveloppement de HotJava, un navigateur internet enti`erement´ecrit en Java capable
d’ex´ecuter des applets ´ecrites en byte code.
– 1995 : lancement officiel de Java 1.0
– 1996: lancement du JDK 1.0 et des versions 1.01 et 1.02 du langage JAVA (250 classes dans
la biblioth`eque).
– 1998 : version 1.1 du JDK (500 classes).
– 1999 : version 1.2 JDK que l’on appelle Java2 (1500 classes)
– 2000 : version de J2SE (Java 2 Standard Edition) 1.3 (1800 classes)
– 2002 : version de J2SE (Java 2 Standard Edition) 1.4 (2700 classes), applications web et
entreprises.
– 2003 : version de J2EE (Java 2 Entreprise Edition) 1.4.
– 2004 : version du J2SE 1.5 ´egalement appel´e J2SE 5.0 ou Java 5 (3500) classes
– 2006 : version du J2SE 1.6 ´egalement appel´e J2SE 6.0 ou Java 6 (3500) classes
2.2.1 Quelques mots cl´es
– JRE : Java Runtime Environnement logiciel permettant d’ex´ecuter des applications java.
– JDK : Java Development Kit logiciel permettant de concevoir et d’ex´ecuter des applications
java.
– J2SDK : Java 2 Software Development Kit mˆeme chose que pr´ec´edemment.
– API:Application Programming Interface(interfacedeprogrammation)quid´efinitlamani`ere
dont un composant informatique peut communiquer avec un autre. Dans le cas de Java,
ce terme d´esigne une biblioth`eque de classes et de fonctionnalit´es mises `a disposition du
programmeur.
– J2EE : Java 2 Platform, Enterprise Edition Java 2 Platform, Enterprise Edition est une
sp´ecification pour le langage de programmation Java de Sun plus particuli`erement des-
tin´ee aux applications d’entreprise.Dans ce but, toute impl´ementationde cette sp´ecification
contient un ensemble d’extension au cadre d’applications Java standard (J2SE, Java 2
standard edition) afin de faciliter la cr´eation d’applications r´eparties. Voici quelques API
pr´esentes dans cette extension : Servlets, JSP, JDBC, JAXB, RMI, ...
– javac programme contenu dans le JDK pour compiler des programmes java.
– java nom du langage programme contenu dans le JDK ou JRE pour lancer des programmes
java.
– javadoc programme contenu dans le JDK pour cr´eer automatiquement une documentation
HTML `a partir de sources java.
– jar programme contenu dans le JDK pour compresser un (ou des programmes java) dans un
seul fichier.
2.3 Java et la programmation orient´ee objet
La programmation orient´ee objets se caract´erise par 3 points importants :
– une programmation structur´ee,
– fiabilit´e des logiciels accrue,
– facilite la r´eutilisation du code existant.