Avant-propos Le langage Java, né en janvier 1995 chez Sun, est un langage à objets qui permet d écrire de façon simple et claire des programmes portables sur la majorité des plateformes. Lié à l essor du World Wide Web, il a été conçu par l équipe de James Gosling en fonction des multiples exigences des développements informatiques actuels. Il bénéficie d une gigantesque bibliothèque de «classes» avec lesquelles il est aisé de composer des interfaces graphiques, de créer des applications «multithreads», de communiquer entre ordinateurs, etc. L utilisation de Java s étend de l animation d une page HTML par une «applet» à des applications complexes qui tournent à travers le réseau Internet : forums de discussion, partage de bases de données, jeux, etc. Enfin, on trouve de plus en plus fréquemment le langage Java dans les systèmes embarqués. Cet ouvrage, issu des cours dispensés par l auteur depuis plusieurs années à l École nationale supérieure des télécommunications, répond à un double objectif :
14 Le langage Java : concepts et pratique d une part, présenter un tour complet des principaux concepts du langage Java ; d autre part, faciliter l acquisition d une certaine pratique de ce langage de programmation à travers de nombreux exemples, choisis pour illustrer les fonctionnalités les plus importantes de Java. Ce livre s adresse au lecteur (étudiant, ingénieur, programmeur, etc.) qui, connaissant déjà la syntaxe du langage C, souhaite acquérir la maîtrise de Java. Audelà de ce langage, il constitue aussi une introduction aux principes des langages à objets. Y sont traités particulièrement les classes, l héritage, les interfaces, les exceptions, les paquetages, les règles de visibilité, les interfaces graphiques, les flux de données, les applets, le multi-thread, la communication réseau. Un glossaire et un index complètent l ouvrage. Un manuel sur le langage Java ne peut pas être exhaustif, ou bien serait gigantesque, étant donnée la richesse des paquetages (dont l ensemble constitue la bibliothèque du langage) fournis par Java. Ce livre ne traite donc pas tout ce qui peut être dit sur Java mais en développe les principaux points. Les concepts Nous ferons un tour complet des principes de Java, principes que l on retrouve dans la plupart des langages à objets. Il n est pas facile, sans s appuyer sur un
Avant-propos 15 exemple d un tel langage, d en comprendre d emblée les principes ; il n est pas facile non plus de comprendre un langage à objets lorsqu on étudie un langage de ce type pour la première fois. En revanche, celui qui connaît déjà un langage à objets est apte à suivre un cours général sur ce sujet ou bien à comprendre rapidement un autre langage de cette famille. Nous nous adressons plus particulièrement à un lecteur novice dans ce type de langage et espérons qu il pourra assimiler, indépendamment du langage Java, les notions principales d un langage à objets. La pratique L ensemble du livre est conçu à partir d exemples, dont on espère qu ils apprendront au lecteur comment pratiquer le langage Java ; après lecture de cet ouvrage, les connaissances acquises devraient être suffisantes pour aborder efficacement une programmation en Java. Pour une programmation simple, il ne devrait plus y avoir de difficultés ; il ne sera néanmoins sans doute pas possible d écrire un programme en Java directement, sans consulter une documentation. En effet, nous verrons que travailler avec Java nécessite l utilisation explicite des bibliothèques du langage et que celles-ci sont si étendues que bien rares sont ceux qui peuvent en connaître tout le contenu ; c est ce qui donne sa puissance au langage. Travailler avec Java demande d adopter une nouvelle méthode de travail ; lorsqu on se
16 Le langage Java : concepts et pratique propose de programmer certaines fonctionnalités, il faut enquêter sur ce qu offre le langage ; de plus, pendant que l on programme, il pourra être souhaitable de disposer de la documentation disponible sur le site de Sun qui décrit la partie de la bibliothèque que l on utilise. S il s agit de programmer sur des thèmes très spécialisés, le «tutorial» de Sun complétera utilement les connaissances de base dispensées par ce livre. Les exemples des premiers chapitres consacrés aux principes du langage permettent déjà l acquisition d une certaine pratique. Les chapitres suivants sont consacrés à des thèmes spécifiques : les interfaces graphiques, les flux de données, les threads, les applets, les images, la communication réseau. Contrairement à ce que nous faisons en ce qui concerne les principes du langage, l enseignement pratique n est pas systématique ; beaucoup de connaissances sont données au fil des exemples ; on ne traitera pas tout ce qui peut être dit sur un sujet donné (par exemple, on est très loin de faire le tour des possibilités offertes par la partie de la bibliothèque consacrée aux interfaces graphiques). Pour quelle raison? parce qu on ne traiterait alors que très peu de thèmes dans un livre d un volume raisonnable. Les fonctionnalités de la bibliothèque standard de Java sont regroupées selon des «classes» ; énumérer toutes les fonctionnalités de la totalité des classes serait impossible à réaliser en un seul volume ; dresser des
Avant-propos 17 listes partielles de fonctionnalités laisserait penser, à tort, que ces listes sont exhaustives alors qu elles peuvent passer sous silence la fonctionnalité nécessaire à une application donnée. Ce que nous indiquons à propos des classes ne fournit donc généralement qu un aperçu des possibilités. Néanmoins, les exemples ont été choisis pour recouvrir, lorsqu on considère leur ensemble, les fonctionnalités qui nous ont semblé être parmi les plus importantes des principales classes des principaux paquetages du langage. Indications sur la présentation du livre Le livre contient de nombreux exemples écrits en Java et dont le code est précédé et suivi d une double ligne horizontale. Dans ces exemples, certains mots, groupes de mots ou instructions sont commentés ; ils sont alors soulignés. Les commentaires, signalés par une double ligne verticale sur la gauche, se trouvent après l exemple, parfois précédés du résultat fourni par une exécution du programme. En police Courier figurent : les exemples en Java ; les mots utilisés dans les programmes et cités dans des explications ; les commandes servant à lancer des programmes ; les noms de fichiers ;
18 Le langage Java : concepts et pratique ce que l on obtient en sortie des programmes servant d exemples. Les mots réservés du langage sont écrits en Courier gras. Les identificateurs (noms de variables, de méthodes, de classes...) peuvent être écrits en Java avec un jeu étendu de caractères (qui permet par exemple de manipuler des caractères accentués, la cédille...) ; grâce à cette possibilité, on peut augmenter la lisibilité d un programme. Néanmoins, il est parfois obligatoire (et souvent souhaitable) d attribuer à un fichier le nom d une classe dont il contient la définition (à l extension.java près). Or, il est préférable, pour des raisons de portabilité, d écrire le nom des fichiers dans un jeu réduit de caractères. Pour cette raison, nous n utiliserons pas de caractères tels que des lettres accentuées, la cédille, etc. pour nommer les classes ni, par souci d homogénéité, pour écrire les autres identificateurs, les chaînes de caractères, etc. Seuls les commentaires bénéficient d accents. Les programmes servant d'exemples dans ce livre sont disponibles à l adresse : http://www.infres.enst.fr/~charon/exemplesjava/
Avant-propos 19 Remerciements De nombreuses personnes m ont aidée, directement ou indirectement, dans l écriture de ce livre ; je les en remercie vivement. Olivier Hudry a relu très soigneusement l ouvrage et a permis d éclaircir de nombreuses formulations ; ses encouragements m ont aussi continuellement soutenue. Annie Danzart a effectué une relecture attentive et ses commentaires, très pertinents, m ont permis d apporter beaucoup d améliorations. Jean-Jacques Charon et David Fournier m ont éclairée de leurs nombreux conseils de spécialistes. Antoine Lobstein, entre deux études sur les chocs élastiques, a peaufiné la forme finale du texte. Anne Germa m apporte depuis longtemps son aide amicale. Les élèves de l École nationale supérieure des télécommunications et de «ParisTech» ont écouté mes cours et travaillé avec une version initiale de l ouvrage ; ils m ont montré, par leurs questions, quels sont les concepts difficiles à acquérir, ce qui m a incitée à développer particulièrement la présentation de ceux-ci. Je remercie les éditions Hermès qui ont accepté de publier ce livre dans de brefs délais. Je remercie enfin l École nationale supérieure des télécommunications et plus particulièrement le département Informatique et Réseaux d avoir facilité l accomplissement de ce travail.