Présentation de Java
CHAPITRE 1
6
En fait, ce projet de langage pour code embarqué n’a pas abouti en tant que tel. Mais ces con-
cepts ont été repris en 1995 dans la réalisation du logiciel HotJava, un navigateur Web écrit
par SUN en Java, et capable d’exécuter des applets écrits précisément en byte codes.
Les autres navigateurs Web ont suivi, ce qui a contribué à l’essor du langage qui a beaucoup
évolué depuis cette date, sous forme de versions successives : 1.01 et 1.02 en 1996, 1.1 en 98
et 1.2 (finalement rebaptisée Java 2) en 1999, 1.3 en 2000, 1.4 en 2002, 1.5 en 2004 (toujours
appelées Java 2).
2 Java et la Programmation Orientée Objets
La P.O.O. (Programmation Orientée Objets) possède de nombreuses vertus universellement
reconnues désormais. Notamment, elle ne renie pas la programmation structurée (elle se
fonde sur elle), elle contribue à la fiabilité des logiciels et elle facilite la réutilisation de code
existant. Elle introduit de nouveaux concepts, en particulier ceux d’objets, d’encapsulation,
de classe et d’héritage.
2.1 Les concepts d’objet et d’encapsulation
En programmation structurée, un programme est formé de la réunion de différentes procédu-
res et de différentes structures de données généralement indépendantes de ces procédures.
En P.O.O., un programme met en oeuvre différents objets. Chaque objet associe des données
et des méthodes agissant exclusivement sur les données de l’objet. Notez que le vocabulaire
évolue quelque peu : on parlera de méthodes plutôt que de procédures ; en revanche, on
pourra utiliser indifféremment le mot données ou le mot champ.
Mais cette association est plus qu’une simple juxtaposition. En effet, dans ce que l’on pour-
rait qualifier de P.O.O. "pure", on réalise ce que l’on nomme une encapsulation des données.
Cela signifie qu’il n’est pas possible d’agir directement sur les données d’un objet ; il est
nécessaire de passer par ses méthodes, qui jouent ainsi le rôle d’interface obligatoire. On tra-
duit parfois cela en disant que l’appel d’une méthode est en fait l’envoi d’un message à
l’objet.
Le grand mérite de l’encapsulation est que, vu de l’extérieur, un objet se caractérise unique-
ment par les spécifications de ses méthodes, la manière dont sont réellement implantées les
données étant sans importance. On décrit souvent une telle situation en disant qu’elle réalise
une abstraction des données (ce qui exprime bien que les détails concrets d’implémentation
sont cachés). A ce propos, on peut remarquer qu’en programmation structurée, une procédure
pouvait également être caractérisée (de l’extérieur) par ses spécifications, mais que, faute
d’encapsulation, l’abstraction des données n’était pas réalisée.
L’encapsulation des données présente un intérêt manifeste en matière de qualité de logiciel.
Elle facilite considérablement la maintenance : une modification éventuelle de la structure
des données d’un objet n’a d’incidence que sur l’objet lui-même ; les utilisateurs de l’objet
ne seront pas concernés par la teneur de cette modification (ce qui n’était bien sûr pas le cas