100% ont trouvé ce document utile (1 vote)
374 vues20 pages

Note Java

Quelques lignes sur JAVA

Transféré par

Psy Oose
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
374 vues20 pages

Note Java

Quelques lignes sur JAVA

Transféré par

Psy Oose
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java

Tête la première
2e édition
Autres titres sur Java chez O’Reilly
En français
Ant - précis & concis
Design Patterns - Tête la première
Développement Web avec J2EE
Eclipse
Exemples en Java in a Nutshell
Enterprise JavaBeans
Introduction à Java
Jakarta Struts - précis & concis
Java 2D Graphics
Java en concentré
Java Enterprise in a Nutshell
Java en action
Java et SOAP
Java et XML
Java et XSLT
Java, plus rapide, plus léger
Java Message Service
JDBC et Java - Guide du programmeur
Sécurité en Java
Servlets Java - Guide du programmeur

En anglais

Building Java Enterprise Applications Volume I : Architecture


Database Programming with JDBC and Java
J2ME in a Nutshell
Java & XML Data Binding
Java 2D Graphics
Java Cryptography
Java Data Objects
Java Database Best Practices
Java Distributed Computing
Java Enterprise Best Practices
Java Extreme Programming Cookbook
Java Management Extensions
Java NIO
Java Performance Tuning, 2nd Edition
Java Programming with Oracle JDBC
Java Swing
JDBC Pocket Reference
JXTA in a Nutshell
Maintenant que vous avez appliqué l’approche Tête la
première à Java, pourquoi ne pas l’appliquer au reste de
votre existence ?
Venez nous rejoindre sur le site web des Tête la Première, notre
repaire virtuel où vous trouverez toutes sortes de ressources,
notamment des forums, des exemples de code, et bien d’autres
choses encore.
Mais vous ne resterez pas spectateur. Nous vous encourageons
aussi à participer en vous joignant aux discussions et aux échan-
ges d’idées.

Vos avantages ?
n Lisez les dernières nouvelles sur ce qui se
passe dans le monde Tête la première.
n Participez à nos technologies et à nos
ouvrages à paraître.
n Apprenez comment aborder ces sujets
si spéciaux (dites-le trois fois très vite) en
aussi peu de temps que possible.
n Découvrez comment les livres Tête la
première sont créés.
n Rencontrez ceux qui font que tout
baigne dans l’huile...
n Découvrez aussi le site américain à
[Link]

oi
rqu
Pou dre ? ont à
n
atte s web
u r
s [Link]
e  .
serv ’écoute nant !
Nos l t e
z m ain
te
Visi
Java ™

Tête la première
2e édition
Ne serait-ce pas
merveilleux s’il existait un
livre sur Java qui serait plus
excitant que de faire la queue
pour changer sa carte grise  ?
Mais ce n’est probablement
qu’un rêve...
Kathy Sierra
Bert Bates

Traduction de
Marie-Cécile Baland

Beijing • Cambridge • Köln • Paris • Sebastopol • Taipei • Tokyo


L’édittion originale de cet ouvrage a été publiée aux États-Unis par O’Reilly Media sous le titre
Head First Java™
ISBN 0-596-00920-8

Copyright © 2003 et 2005 O’Reilly Media.

Éditeur de la VO : Mike Loukides


Éditrice de la VF : Dominique Buraud
Couverture : Edie Freedman et Marcia Friedman
Maquette : Kathy Sierra et Bates

© Éditions O’Reilly, Paris, 2004 et 2006


ISBN 2-84177-411-2
Historique :
septembre 2004 : première édition
novembre 2006 : seconde édition

Les programmes figurant dans ce livre ont pour but d’illustrer les sujets traités. Il n’est donné aucune garantie quant à leur
fonctionnement une fois compilés, assemblés ou in­terprétés dans le cadre d’une utilisation professionnelle ou commerciale.

Toute représentation ou reproduction, intégrale ou partielle, faite sans le consentement de l’auteur, de ses ayants droit, ou
ayants cause, est illicite (loi du 11 mars 1957, alinéa 1er de l’article 40). Cette représen­tation ou reproduction, par quelque
procédé que ce soit, constituerait une contrefaçon sanctionnée par les articles 425 et suivants du Code pénal. La loi du
11 mars 1957 autorise uniquement, aux termes des alinéas 2 et 3 de l’article 41, les copies ou reproductions strictement
réservées à l’usage privé du copiste et non destinées à une utilisation collective d’une part et, d’autre part, les analyses et les
courtes citations dans un but d’exemple et d’illustration.
À nos cerveaux, toujours à notre disposition.
Enfin plus ou moins ...
Les auteurs de Java — Tête la première

Kathy Sierra
Bert Bates

Bert est architecte et développeur de logiciels, mais dix ans


d’expérience dans le domaine de l’intelligence artificielle
l’ont amené à s’intéresser aux théories de l’apprentissage
Kathy s’intéresse aux théories de l’apprentissage et aux apports des nouvelles technologies à la formation.
depuis l’époque où elle était conceptrice de jeux Depuis lors, il enseigne la programmation à ses clients.
(elle a écrit des programmes pour Virgin, MGM et Récemment, il a fait partie de l’équipe de développement de
Amblin). Elle a mis au point la majeure partie du plusieurs examens pour la certification Java de Sun.
concept de ce livre lorsqu’elle enseignait les nouveaux
médias à l’université de Californie à Los Angeles. Plus Il a consacré la première décennie de sa carrière
récemment elle a été formatrice de formateurs chez d’informaticien à aider des clients du secteur de la
Sun Microsystems, où elle a enseigné aux instructeurs radiodiffusion, comme Radio New Zealand, Weather
la façon de transmettre les dernières technologies et où Channel et A & E (Arts & Entertainment Network). L’un
elle a été l’un des principaux développeurs de plusieurs des ses projets favoris a été de tous temps un programme de
examens de certification. Avec Bert Bates, elle a utilisé simulation complet pour l’Union Pacific Railroad.
activement les concepts de Java —Tête la première pour Bert est un joueur de go désespérément accro et il travaille à
former des centaines de formateurs, de développeurs et un programme de go depuis bien trop longtemps. Java sera
même de non-programmeurs. Elle a également fondé peut-être enfin un langage suffisamment expressif pour lui
le site web de l’une des plus importantes communautés permettre de terminer son projet. Bon guitariste, il s’essaie
Java au monde, [Link], et le blog Creating Passionate maintenant au banjo et aime passer du temps à courir, skier
Users. et dresser son cheval islandais, Andi (ou à en apprendre
Outre ce livre, elle a écrit avec Bert Bates HeadFirst quelque chose).
Servlets, HeadFirst EJB et Design Patterns —Tête la première. Il est co-auteur des mêmes ouvrages que Kathy et travaille
Durant son temps libre, elle aime aussi monter son dur à de nouveaux projets (voir le blog pour les mises à jour).
nouveau cheval islandais, courir, skier et la vitesse de la Vous pouvez le rencontrer sur le serveur IGS Go (sous le
lumière. nom de jackStraw).
kathy@[Link]. terrapin@[Link].

Kathy et Bert essaient de répondre à tous les courriels qu’ils reçoivent, mais le volume de ceux-ci et leurs nombreux
déplacements leur rendent la tâche difficile. La meilleure façon (et la plus rapide) d’obtenir une aide technique est de
consulter le très actif forum des débutants en Java sur le site [Link].
Table des matières (résumé)
Intro xix
1 Jetons nous à l’eau : on pique une tête 1
2 Voyage à Objectville : oui, il y aura des objets 27
3 Maîtrisez vos variables : types primitifs et références 49
4 Le comportement des objets : l’état des objets affecte le comportement des méthodes 71
5 Méthodes extra-fortes : contrôle de flots, opérations et autres 95
6 Utiliser la bibliothèque Java : pour éviter de tout écrire vous-même 125
7 Mieux vivre à Objectville : planifier l’avenir 165
8 Le polymorphisme dans tous ses états : interfaces et classes abstraites 197
9 Vie et mort d’un objet : constructeurs et gestion de la mémoire 235
10 Affaires de nombres : math, formatage, classes, enveloppes et static 273
11 Comportements à risque : gestion des exceptions 315
12 Une histoire très graphique : IHM, gestion des événements et classes internes 353
13 Travaillez votre Swing : gestionnaires d’agencement et composants 399
14 Sauvegarder les objets : sérialisation et E/S 429
15 Établir une connexion : sockets et threads 471
16 Structures de données : collections et génériques 529
16 Déployez votre code : packages et déploiement 581
17 Informatique distribuée : RMI plus une touche de servlets, d’EJB et de Jini 607
A Annexe A : Recettes de code 649
B Annexe B : Dix notions importantes qui ne rentraient pas dans le reste du livre 659
Index 677

Table des matières (le vrai contenu)

i Intro
Votre cerveau et Java. Voilà que vous essayez d’apprendre quelque chose tandis
que votre cerveau fait tout ce qu’il peut pour vous empêcher de mémoriser. Votre cerveau
pense « Mieux vaut laisser de la place pour les choses vraiment importantes, comme savoir
quels sont les animaux sauvages qu’il vaut mieux éviter ou se rendre compte que faire du
snowboard en maillot de bain n’est pas une bonne idée ». Mais comment procéder pour lui
faire croire que votre vie dépend de vos connaissances en Java ?
À qui s’adresse ce livre ? xxii
Ce que pense votre cerveau xxiii
Métacognition xxv
Soumettez votre cerveau xxvii
De quoi avez-vous besoin xxviii
Éditeurs techniques xxx
Remerciements xxxi
ix
1 Jetons-nous à l’eau
Java vous emmène ailleurs. Depuis l’humble révélation au public de la version
1.02, Java a séduit les programmeurs par sa syntaxe conviviale, ses caractéristiques orientées
objet, sa gestion de la mémoire, et, surtout, sa promesse de portabilité. Nous allons piquer une
tête, écrire du code et le compiler. Nous parlerons de syntaxe, de boucles, de branchements et
de ce qui rend Java si génial. Plongez.

Comment fonctionne Java 2


Machines Structure du code en Java 7
virtuelles Anatomie d’une classe 8
La méthode main() 9
Method Party() Itérations (boucles) 11
0 aload_0
Branchements conditionnels (tests if ) 13
1 invokespecial #1
<Method [Link]. Coder une première application 14
Object()>
Phrase-o-matic 16
4 return
Face-à-face : le compilateur et la JVM 18
Bytecode O.K.
Exercices et jeux 20
compilé
Desole

2 Voyage à Objectville
On avait dit qu’il y aurait des objets. Au chapitre 1, nous avons placé tout
notre code dans la méthode main(), ce qui n’est pas précisément orienté objet. Il nous faut
maintenant laisser le monde procédural derrière nous et commencer à créer nos propres
objets. Nous verrons ce qui rend le développement orienté objet (OO) en Java si amusant.
Nous étudierons la différence entre une classe et un objet. Et nous verrons comment les
objets peuvent vous changer la vie.

CHIEN La guerre des chaises (Kevin (OO) et Bernard (procédural)) 28


taille une classe Héritage (introduction) 31
race
nom Redéfinir les méthodes (introduction) 32
aboyer() Qu’y a-t-il dans une classe ? (méthodes, variables d’instance) 34
Créer votre premier objet 36
Utiliser main() 38
Codons un jeu 39
plusieurs objets Exercices et jeux 42


3 Maîtrisez vos variables
Il existe deux sortes de variables : les types primitifs et les
références. Il y a autre chose dans la vie que des entiers, par exemple des chaînes de
caractères et des tableaux. Que se passe-t-il si vous avez un objet Maître avec une variable
d’instance Chien ? Ou une Voiture avec un Moteur ? Dans ce chapitre, nous dévoilerons les
mystères des types Java et nous verrons ce que vous pouvez déclarer comme une variable,
ce que vous pouvez placer dans une variable et ce que vous pouvez faire avec. Et nous ver-
rons enfin à quoi ressemble la vie des objets sur le tas et comment fonctionne le ramasse-
miettes.

Déclarer une variable (le type est significatif) 50


24
taille Types primitifs (« Donnez-moi un double café ») 51
Mots-clés Java 53
int
Variables référence (télécommandes d’objets) 54
ie
n

Objet Ch Déclaration et affectation des objets 55


Vie des objets sur le tas 57
fido Tableaux (premier aperçu) 59
Exercices et jeux 63
Référence

4 Comportement des objets


L’état affecte le comportement et le comportement affecte
l’état. Nous savons que les objets ont un état et un comportement, représentés par
des variables d’instance et des méthodes. Nous allons maintenant voir comment état et
comportement sont liés. Le comportement d’un objet utilise son état unique. Autrement
dit, les méthodes utilisent les valeurs des variables d’instance. Par exemple « si chien est
inférieur à 7 kilos, japper, sinon… » ou « augmenter poids de 2 ». Voyons donc comment on
modifie un état.

passage par valeur = Les méthodes utilisent l’état des objets (aboyez autrement) 73
Arguments et types de retour 74
passage par copie Passage par valeur (la variable est toujours copiée) 77
Méthodes get et set 78
copie de
x Encapsulation (faites-le ou vous risquez d’être humilié) 80
11 0 111
01 00 Utiliser des références dans un tableau 83
00 00
00 Exercices et jeux 88
X Z
int int
[Link](x); void go(int z){ }

xi
5 Méthodes extra-fortes
Musclons un peu nos méthodes. Nous avons taquiné les variables, joué
avec quelques objets et écrit des fragments de code. Maintenant il nous faut des outils. Par
exemple des opérateurs. Et des boucles. Il pourrait être utile de générer des nombres
aléatoires. Et de convertir un String en int. Oui, ce serait génial. Et pourquoi ne pas
apprendre tout cela en construisant quelque chose de réel, pour voir comment on écrit (et
on teste) un programme de toutes pièces. Peut-être un jeu, Comme couler un PointCom
ire un
s constru Com.
(une sorte de bataille navale).
N o u s a ll o n
r un Point
jeu : Coule Construire un jeu : Couler un PointCom 96
A Commençons par SimplePointCom (version simplifiée) 98
B Écrire le pseudocode du jeu 100
[Link]

C Écrire les tests 102


D [Link] Coder le Jeu 103
E Version finale de SimplePointCom 106
F Générer des nombres aléatoires avec [Link]() 111
G Code prêt à l’emploi pour lire les saisies utilisateur 112
[Link]
0 1 2 3 4 5 6 Boucles for 114
Convertir des types primitifs 117
Convertir une chaîne en entier avec [Link]() 117
Exercices et jeux 118

6 Utiliser la bibliothèque Java


Java est livré avec des centaines de classes intégrées. Inutile
de réinventer la roue si vous savez trouver ce qu’il vous faut dans la bibliothèque Java,
autrement dit l’API Java. Vous avez mieux à faire. Tant qu’à écrire du code, autant ne
développer que les parties spécifiques à votre application. La bibliothèque Java est une pile
géante de classes qui n’attendent qu’une chose  : que vous les utilisiez comme blocs de base
pour assembler votre propre programme.

Déboguer SimplePointCom 126


“Il y a une classe ArrayList dans le ArrayList (exploiter l’API Java) 132
package [Link]. Super ! Mais comment Corriger le code de la classe PointCom 138
aurais-je pu le savoir ?”
Construire le vrai jeu 140
- Julie, 31 ans, manucure
Pseudo-code du vrai jeu 144
Code du vrai jeu 146
Expressions booléennes 151
Utiliser la bibliothèque de classes (l’API Java) 154
Utiliser les packages (instructions import, noms qualifiés) 155
Utiliser la documentation HTML et les ouvrages de référence 158
Exercices et jeux 161

xii
7 Mieux vivre à Objectville
Planifiez vos programmes en pensant à l’avenir. Et si vous pouviez écrire
du code que quelqu’un d’autre puisse étendre facilement ? Et si ce code était suffisamment
souple pour autoriser ces satanés changements de spécifications de dernière minute ? Quand
vous aurez adhéré au Plan Polymorphisme, vous apprendrez les 5 étapes pour mieux concevoir
vos classes, les 3 clés du polymorphisme, les 8 façons d’apporter de la souplesse à votre code, et, si
vous répondez maintenant : 4 astuces en cadeau pour exploiter l’héritage.
Attention,
passage Comprendre l’héritage (relations superclasse/sous-classes) 168
par valeur
Concevoir une hiérarchie d’héritage (la simulation Animal ) 170

Aide-mémoire threads
attendre()
Laver
le chat Éviter le code dupliqué grâce à l’héritage
Redéfinir les méthodes
171
172
notifier()
Les roses so
nt rouges, m EST-UN et A-UN 177
Carré est-un ets ton chap
e Forme, le eau. Qu’hérite-t-on de la superclasse ? 180
contraire es
Les roses so t faux.
nt rouges, de Qu’apporte réellement l’héritage ? 182
Bière étend m ai n n’est pas hi
Boisson, Bo er. Polymorphisme (utiliser une référence au supertype sur un
isson n’éten
À votre tou d pas Bière objet d’une sous-classe) 183
r. Écrivez u .
l’unidirec ti n texte qui
onnalité de montre Règles de la redéfinition (arguments et types de retour intouchables !) 190
N’oubliez p la relation
as que si X EST-UN.
X EST-UN Y étend Y, Surcharge des méthodes (réutilisation des noms) 191
doit avoir u
n sens.
Exercices et jeux 192

8
Le polymorphisme dans tous ses états
L’héritage n’est qu’un début. Pour exploiter le polymorphisme, il nous faut des
interfaces. Pour dépasser le simple héritage et acquérir de la souplesse, nous devons concevoir
et coder des interfaces. Mais qu’est-ce qu’une interface ? Une classe 100 % abstraite. Et qu’est-ce
qu’une classe abstraite ? Une classe qui ne peut pas être instanciée. Et à quoi sert-elle ? Lisez ce
chapitre… Certaines classes ne doivent pas être instanciées 200
Classes abstraites (non instanciables) 201
Object o = [Link](id); Méthodes abstraites (doivent être implémentées) 203
Chien c = (Chien) o; Le polymorphisme en action 206
[Link](); La classe Object (la superclasse ultime) 208
Extraire des objets d’une ArrayList (ils sont de type Object) 211
Object
Le compilateur vérifie le type de la référence
Ob (avant de vous laisser appeler une méthode) 213
jet Chien
o Entrez en contact avec votre objet intérieur 214
Références polymorphes 215
Object Reconve
d Object ertir l'objet Transtyper une référence (descendre l’arbre d’héritage) 216

(nous sav n Chien Le losange de la mort (problèmes de l’héritage multiple) 223


Chien est là). ons qu'il Utiliser des interfaces (la meilleure solution !) 224
Exercices et jeux 230

xiii
9 Vie et mort d’un objet
Les objets vivent et les objets meurent. Vous en êtes responsable. C’est
vous qui décidez quand et comment les construire. Et quand les abandonner. Le Ramasse-
miettes récupère la mémoire. Nous verrons comment les objets sont créés, où ils résident et
comment les conserver ou les abandonner de manière efficace. Nous parlerons donc du tas,
de la pile, de la visibilité, des constructeurs, des super-constructeurs, des références nulles
et de l’égilibilité au ramasse-miettes.

lle la méthode
Quand on appe est abandonné. La pile et le tas, lieux de résidence des objets et des variables 236
go(), ce canard nce a été
Sa seule référepour un nouveau
Les méthodes vivent sur la pile 237

reprogrammée Où vivent les variables locales ? 238


Canard. Où vivent les variables d’instance ? 239

Ob Le miracle de la création d’un objet 240


rd

jet Cana
Constructeurs (le code qui s’exécute quand vous écrivez new) 241
c Initialiser l’état d’un nouveau Canard 243

Ob Tas Constructeurs surchargés 247


rd

jet Cana
Constructeurs de la superclasse (chaînage des constructeurs) 250
Canard et
“c" se voit affecter un nouvel objet premier
Invoquer des constructeurs surchargés avec this() 256
le Canard d'origine est abandonné. Ce Vie d’un objet 258
Canard est grillé... Ramasse-miettes (et libération de la mémoire) 260
Exercices et jeux 266

Les variables stati-


10 Affaire de nombres
Faites vos calculs. L’API Java contient des méthodes pour calculer une valeur
absolue, un minimum ou un maximum, arrondir un nombre, etc. Et le formatage ? Vous
voulez peut-être afficher un dollar et deux chiffres après la virgule. Ou une date. Une date au
ques sont partagées format anglais. Ou convertir une chaîne de caractères en nombre. Ou l’inverse. Nous allons
par toutes les instan-
ces d’une classe. commencer par apprendre ce que signifie une variable ou une méthode statique, y compris
Variable statique : esquimau les constantes Java — des variables statiques finales.
1 Insta nce d'enfant 2
Instance d'enfant La classe Math (avez-vous vraiment besoin de l’instancier ?) 274
Méthodes statiques 275
Variables d'instance : Variables statiques 277
une par instance
Constantes (variables statiques finales) 282
Variables statiques :
une par classe Méthodes de la classe Math (random(), round(), abs(), etc. 286
Classes enveloppe (Integer, Boolean, Character, etc.) 287
Autoboxing 289
Formatage des nombres 294
Formatage et manipulation des dates 301
Imports statiques 307
Exercices et jeux 310
xiv
11 Comportement à risques
Des problèmes surviennent. Le fichier a disparu. Le serveur est en panne. Vous
avez beau être un bon programmeur, vous ne pouvez pas tout contrôler. Quand vous écrivez
une méthode risquée, il vous faut du code capable de gérer les éventuelles retombées. Mais
comment savoir qu’une méthode est risquée ? Où placer le code pour gérer cette situation
exceptionnelle ? Dans ce chapitre, nous allons construire un lecteur MIDI qui utilise l’API
JavaSound. Cette API est risquée, alors mieux vaut le savoir.

Créer une boîte à rythmes (la BeatBox) 316


er l’except
o u rn ion
et 2
Et si vous devez appelrr un code risqué ? 319
r

Les exceptions signalent la survenue d’une erreur 320


Le compilateur vérifie que vous êtes conscient des risques 321
class Vache {

Intercepter les exceptions avec un bloc try/catch 322


class Bar { void meuh() {
void go() { if (serveurEnPanne){

1
meuh(); explode();
} }
}

Contrôle de flots dans les blocs try/catch 326


int truc() {

appelle une
}
[Link]();
}
}

méthode risquée Le bloc finally (quoi qu’il arrive, éteindre le four !) 327
votre code classe avec
Intercepter plusieurs exceptions (l’ordre compte) 329
méthode
risquée Déclarer une exception (l’esquiver) 335
Gérer ou déclarer, telle est la loi 337
Recettes de code (créer des sons) 339
Exercices et jeux 348

12 Une histoire très graphique


Vous allez devoir créer des interfaces graphiques, des
interfaces homme-machine (IHM). Même si vous pensez passer votre vie
à écrire du code côté serveur, où l’interface des clients est une page web, vous devrez tôt
ou tard écrire des outils, et il vous faudra une IHM. Nous allons leur consacrer les deux
prochains chapitres et apprendre au passage d’autres fonctionnalités comme la gestion
des événements et les classes internes. Nous afficherons des boutons, des dessins et des
images, et nous ferons même un peu d’animation.
class MonExterne{
Votre première IHM 355
class MonInterne {
void go() { Lire un événement utilisateur 357
}
} Implémenter une interface auditeur 358
Lire l’ActionEvent d’un bouton 360
}
Placer des composants graphiques dans une IHM 363
Les objets interne et Jouer avec paintComponent() 365
externe sont maintenant L’objet Graphics2D 366
ne

r
intimement liés. exte Afficher plusieurs boutons à l’écran 367
t
ts sur le tas on interne Les classes internes à la rescousse 376
Ces deux obje ivilégiée. L'objet
une relation pr iliser les variables
Animation (dessiner, déplacer, dessiner, déplacer, dessiner...) 382
interne peut utrne et inversement. Recettes de code (dessiner au rythme de la musique) 386
de l'objet exte Exercices et jeux 394

xv
13 Travaillez votre Swing
Swing est facile. Tant que vous n’attachez pas trop d’importance au placement des
objets. Le code Swing a l’air simple, mais compilez-le, exécutez-le, regardez le résultat et
vous penserez « Hé, ce n’est pas ce que j’avais prévu ». Ce qui facilite le codage est aussi ce qui
rend le contrôle difficile — le gestionnaire d’agencement. Mais avec un peu de travail,
les gestionnaires d’agencement se soumettront à votre volonté. Dans ce chapitre, vous
travaillerez votre Swing et vous en apprendrez plus sur les widgets.

Composants Swing 400


st,
À l'est et à l'oue t Gestionnaires d’agencement (contrôle de la taille et du placement) 401

les composants onée. Trois gestionnaires (BorderLayout, FlowLayout, BoxLayout) 403


leur taille préfér BorderLayout (gère cinq régions) 404
FlowLayout (gère l’ordre et la taille préférée) 408
BoxLayout (Comme FlowLayout mais empile verticalement) 411
Au nord et au
sud également. Le centre obtient JTextField (une seule ligne de texte) 413
ce qui reste JTextArea (texte déroulant sur plusieurs lignes) 414
JCheckBox (sélectionner une case) 416
JList (liste déroulante sélectionnable) 417
Recette de code (la client de discussion de la BeatBox) 418
Exercices et jeux 424

14 Sauvegarder les objets


On peut compresser et décompresser les objets. Les objets ont
un état et un comportement. Le comportement se trouve dans la classe, mais l’état réside
dans chaque objet individuel. Si vous devez sauvegarder un état vous pouvez emprunter la
voie difficile, interroger chaque objet et écrire laborieusement la valeur de chaque variable
d’instance. Ou bien vous le faites facilement, à la mode OO — le lyophiliser (le sérialiser)
puis le reconstituer (le désérialiser) pour le récupérer.
Sauvegarder l’état d’un objet 431
sérialisé
Écrire un objet sérialisé dans un fichier 432
Les flots d’entrées/sorties Java (traitement et communication) 433
Sérialisation des objets 434
Implémenter l’interface Serializable 437
stions  ?
Des que désérialisé
Utiliser des variables temporaires 439
Désérialiser un objet 441
Écrire dans un fichier texte 447
[Link]. 452
Lire dans un fichier texte 454
StringTokenizer 458
Recette de code 462
Exercices et jeux 466

xvi
15 Établir une connexion
Connectez-vous au monde extérieur. C’est facile. Tous les détails de bas
niveau du réseau sont pris en charge par les classes de la bibliothèque [Link]. L’une des
caractéristiques de Java est que l’émission et la réception de données sur un réseau se
résume à des opérations d’E/S avec un flot de connexion légèrement différent en bout de
chaîne. Dans ce chapitre, nous créerons des sockets client et des sockets serveur. À la fin du
chapitre, nous disposerons d’un client de discussion multithread pleinement fonctionnel.
Avons nous-dit multithread ?
Connexion so
port 5000 cket au
serveur à l'a sur le Aperçu du programme de discussion 473
[Link] dresse Se connecter, émettre et recevoir 474
3
Sockets réseau 475
Ports TCP 476
Lire des données dans une socket (avec BufferedReader) 478
Écrire des données dans une socket (avec PrintWriter) 479
Client Serveur
Conseil du jour : le code du client 480
Connexion s le
r
socket ve dresse Écrire un serveur simple 483
t à l' a
clien 00, port Conseil du jour : le code du serveur 484
[Link]
4242 Écrire un client de discussion 486
Piles d’appels multiples 490
Lancer un nouveau thread (création et démarrage) 492
L’interface Runnable (la tâche du thread) 494
Les trois états d’un nouvel objet Thread 495
Ordre d’exécution des threads 496
L’ordonnanceur de threads (c’est lui qui prend les décisions) 497
Mettre un thread en sommeil 501
Créer et lancer deux threads 503
Accès concurrents : ce couple peut-il être sauvé ? 505
Le problème des accès concurrents : Sylvie et Bruno 506
Verrouillage et atomicité 510
Tout objet possède un verrou 511
Le problème des mises à jour perdues 512
Méthodes synchronisées (avec un verrou) 514
Verrou mortel ! 516
Le code du client de discussion multithread 518
Code prêt à l’emploi : le serveur de discussion 520
Exercices et jeux 524

xvii
16 Structures de données
Le tri est un jeu d’enfant en Java. Vous disposez de tous les outils qui permettent
de collecter et de manipuler vos données sans devoir écrire vos propres algorithmes de tri.
Le framework Java Collections a des structures de données qui doivent fonctionner pour
pratiquement tout ce que vous aurez jamais besoin de faire. Vous voulez une liste dans laquelle
il est facile d’ajouter des éléments ? Vous voulez trouver un élément par son nom ? Vous voulez
créer une liste qui élimine automatiquement tous les doublons ? Ou encore trier vos collègues de
travail selon le nombre de fois qu’ils vous ont tapé dans le dos ?

Collections 533
Trier une ArrayList avec [Link]() 534
List 0 1 2 3 Génériques et fiabilité du type 540
Généricité et typage 540
Trier des objets qui implémentent l’interface Comparable 547
Trier des objets avec un Comparateur personnalisé 552
Set L’API des collections : List, Set et Map 557
Éviter les doublons avec HashSet 559
Redéfinir les méthodes hashCode() et equals() 560
HashMap 567
Map “Balle1”
“Ball” “Fish”
“Balle2” “Car”
“Poison” “Auto”
Utiliser des jokers pour le polymorphisme 574
Exercices et jeux 576

xviii
17 Déployez votre code
Il est temps de lâcher prise. Vous avez écrit votre code. Vous l’avez testé.
Vous l’avez peaufiné. Vous avez dit à tout le monde que vous adoreriez ne plus jamais
voir une ligne de code. Mais vous avez fini par créer un chef d’œuvre. Et en plus il
tourne ! Et maintenant ? Dans les deux derniers chapitres, nous allons voir comment
organiser, packager et déployer votre programme Java. Nous étudierons le déploiement
local, semi-local et distant avec les JAR exécutables, Java Web Start, RMI et les servlets.
classes Décontractez-vous. Certains des aspects les plus puissants de Java sont beaucoup plus
simples que vous ne l’imaginez.
fr

101101
Options de déploiement 582
10 110 1

[Link] foo 0 11 0
001 10
001 01
Séparez le code source des fichiers compilés 584
[Link] Créer un JAR (Java ARchive) exécutable 585
[Link]
Exécuter un JAR 586
Serveur web Placez vos classes dans un package ! 587
JWS
Lorper
iure
eugue
tat vero
Structure de répertoires des packages 589
conse

Compiler et exécuter avec des packages 590


euguero-
[Link]
[Link]
Compiler avec l’option -d 591
Créer un JAR exécutable (avec des packages) 592
Java Web Start (JWS) pour déployer sur le Web 597
Comment créer et déployer une application JWS 600
Exercices et jeux 601

18
Informatique distribuée
La distance n’est pas nécessairement négative. Bien sûr, tout
est plus facile quand toutes les parties de votre application sont centralisées, avec un
seul tas et une seule JVM pour gérer le tout. Mais ce n’est pas toujours possible. Ni
souhaitable. Que se passe-t-il si votre programme a besoin de beaucoup de puissance
de calcul ? Ou s’il doit accéder aux données d’une base de données sécurisée ? Dans ce
chapitre, nous allons apprendre à utiliser RMI (étonnamment simple). Nous jetterons
également un rapide coup d’œil sur les servlets, les EJB et Jini.

Tas client Tas serveur RMI en pratique (très détaillé) 614


Servlets (un bref aperçu) 625
SOUCHE RMI SQUELETTE
RMI
Les EJB (Enterprise JavaBeans), aperçu très rapide 631
Jini, le meilleur de tous 632
nt vi c
e

He He Construire un super-serveur de services universels 636


lper Clie lper Ser Ob e
jet servic
Ob
Fin 648
jet client

xix
A Annexe A
La version finale du projet BeatBox. Tout le code côté client et côté
serveur. Votre chance de devenir une rock star.

BeatBoxFinal (code du client ) 650


ServeurMusique (code du serveur) 657

B Annexe B
Les dix sujets importants qui n’entraient pas dans le livre. Nous
ne pouvons pas vous laisser repartir comme ça dans le monde réel. Encore quelques petites
choses et ce sera la fin de ce livre. Cette fois, c’est vrai.

Manipulation des bits 660


Immuabilité 661
Assertions 662
Portée de bloc 663
Invocations liées 664
Classes imbriquées anonymes et statiques 665
Niveaux et modificateurs d’accès (qui voit quoi) 667
Les méthodes de String et de StringBuffer/StringBuilder 669
Tableaux multidimensionnels 670

i
Énumérations 671

Index
677

xx

Vous aimerez peut-être aussi