Programmer avec Java
Benjamin J. Evans et David Flanagan
First Éditions, O'Reilly®
Avant-proposix
Préfacexi
Partie I : Présentation de Java1
1. Introduction à l'environnement Java
3
Le langage, la machine JVM et l'écosystème4
Bref historique de Java et de la JVM9
Cycle de vie d'un programme Java12
Quelques questions fréquentes12
Java et la sécurité15
Comparaison de Java à d'autres langages15
Réponses à quelques critiques de Java17
2. Les règles d'écriture Java
21
Présentation du parcours22
Structure lexicale22
Types de données primitifs27
Expressions et opérateurs36
Instructions55
Méthodes77
Présentation rapide des classes et des objets85
Tableaux90
Types référence99
Paquetages et espace de noms Java103
Structure d'un fichier source Java109
Fichiers de classes et exécution du programme110
Conclusion111
3. Programmation orientée objets Java
113
Le concept de classe113
Champs et méthodes116
Création et initialisation d'un objet123
Sous-classes et héritage128
Confinement des données et encapsulation140
Méthodes abstraites et classes abstraites148
Synthèse des modificateurs153
4. Le système des types Java
155
Interfaces156
Types génériques165
Énumérations et annotations178
Expressions lambda183
Types imbriqués191
Types non dénotables et mot clé var202
Conclusion204
5. Introduction à la conception orientée objets Java
207
Valeurs Java207
Quelques méthodes fondamentales de java.lang.Object209
À propos de conception orientée objets214
Conception orientée objets avec les lambdas225
Gestion des exceptions228
Programmation robuste en Java230
6. Gestion mémoire et parallélisme en Java
233
Fondamentaux de la gestion mémoire Java233
Techniques d'optimisation du recyclage mémoire par la JVM238
La zone du tas (heap) de HotSpot240
Finalisation244
Programmation à concurrence en Java247
Conseils d'utilisation des exétrons259
Conclusion261
Partie II : Utilisation de la plate-forme Java263
7. Conventions de rédaction et documentation
265
Conventions de nommage et de capitalisation265
Conseils pratiques de nommage268
Commentaires documentaires Java269
Outils documentaires Doclets279
Bonnes pratiques de portabilité280
8. Les collections de données Java
285
Introduction à l'API Collections285
Flux Java Streams et expressions lambda307
Conclusion316
9. Gestion des formats de données standard
317
Le format texte317
Nombres et librairies Math324
Dates et heures en Java 8330
Conclusion336
10. Gestion de fichiers et entrées/sorties (I/0)
337
Entrées/sorties Java classiques337
Les entrées/sorties Java modernes343
Canaux et tampons de NIO347
Entrées/sorties asynchrones350
API réseau de Java353
11. Chargement de classes, Reflection et handles de méthodes
359
Fichiers de classes, objets de classes et métadonnées359
Phases du chargement de classes362
Chargement de classes et sécurité364
Fonctionnement du chargement de classes366
Le mécanisme Reflection370
Handles de méthodes376
12. Les modules de plate-forme Java (JPMS)
381
Pourquoi des modules ?382
Conception d'un nouveau module386
Points sensibles des modules396
Conclusion398
13. Outils de la plate-forme
401
Outils sur ligne de commande401
L'interpréteur JShell416
Conclusion420
Annexe A : Nashorn et VisualVM421
Présentation de Nashorn421
Exécution de JavaScript par Nashorn423
Nashorn et javax.script425
Concepts Nashorn avancés428
Le futur de Nashorn et GraalVM433
VisualVM435
Index443