
Exploration des entrailles de la JVM
Description
Introduction au livre
« Une aventure passionnante au cœur de la machine virtuelle Java. »
À l'époque où la programmation se faisait principalement en C et C++, les difficultés liées à la gestion de la mémoire et à la portabilité des plateformes représentaient un fardeau important pour les développeurs.
Dans ce contexte, Java, apparu avec le slogan « Écrire une fois, exécuter partout », était considéré comme un langage révolutionnaire.
La technologie qui a permis de concrétiser ce slogan est la machine virtuelle Java (JVM). Si la JVM semblait offrir aux développeurs la gestion automatique de la mémoire et l'indépendance de la plateforme, cela avait un prix : des performances médiocres et des erreurs de mémoire insuffisante.
Et la réalité est que, même aujourd'hui, nous ne sommes pas exempts de tels problèmes.
Pour résoudre ces problèmes, nous devons comprendre les principes fondamentaux de la manière dont la JVM gère les problèmes complexes de bas niveau.
« Comprendre la JVM » examine les principes de fonctionnement fondamentaux de la gestion automatique de la mémoire, du sous-système d'exécution, de la compilation et de la concurrence, qui sont les quatre principaux thèmes de la JVM, et explique comment ces principes affectent l'exécution des logiciels réellement écrits en Java et comment le mécanisme de fonctionnement de la JVM peut être appliqué aux problèmes rencontrés dans le domaine du développement.
Les développeurs qui souhaitent construire des systèmes robustes en utilisant Java, langage qui a évolué depuis l'époque de la création de petites applets jusqu'à celui qui alimente aujourd'hui une partie d'Internet, trouveront de nombreuses idées et sources d'inspiration dans ce livre.
À l'époque où la programmation se faisait principalement en C et C++, les difficultés liées à la gestion de la mémoire et à la portabilité des plateformes représentaient un fardeau important pour les développeurs.
Dans ce contexte, Java, apparu avec le slogan « Écrire une fois, exécuter partout », était considéré comme un langage révolutionnaire.
La technologie qui a permis de concrétiser ce slogan est la machine virtuelle Java (JVM). Si la JVM semblait offrir aux développeurs la gestion automatique de la mémoire et l'indépendance de la plateforme, cela avait un prix : des performances médiocres et des erreurs de mémoire insuffisante.
Et la réalité est que, même aujourd'hui, nous ne sommes pas exempts de tels problèmes.
Pour résoudre ces problèmes, nous devons comprendre les principes fondamentaux de la manière dont la JVM gère les problèmes complexes de bas niveau.
« Comprendre la JVM » examine les principes de fonctionnement fondamentaux de la gestion automatique de la mémoire, du sous-système d'exécution, de la compilation et de la concurrence, qui sont les quatre principaux thèmes de la JVM, et explique comment ces principes affectent l'exécution des logiciels réellement écrits en Java et comment le mécanisme de fonctionnement de la JVM peut être appliqué aux problèmes rencontrés dans le domaine du développement.
Les développeurs qui souhaitent construire des systèmes robustes en utilisant Java, langage qui a évolué depuis l'époque de la création de petites applets jusqu'à celui qui alimente aujourd'hui une partie d'Internet, trouveront de nombreuses idées et sources d'inspiration dans ce livre.
indice
Note du traducteur
introduction
Remerciements
Partie 1 : Découvrir Java
Chapitre 1 : Introduction au système de technologie Java
1.1 Introduction
1.2 Système de technologie Java
1.3 Le passé et le présent de Java
1.4 Famille de machines virtuelles Java
1.5 L'avenir de la technologie Java
1.6 Cas concret : créer le JDK moi-même
1.7 En conclusion
Partie 2 Gestion automatique de la mémoire
Chapitre 2 : Zones de mémoire Java et débordement de mémoire
2.1 Introduction
2.2 Zone de données d'exécution
2.3 Observation des objets dans la machine virtuelle Hotspot
2.4 Exercice : Exception OutOfMemoryError
2.5 En conclusion
Chapitre 3 : Stratégies de gestion des déchets et d’allocation de mémoire
3.1 Introduction
3.2 Le sujet est-il mort ?
3.3 Algorithme de récupération des déchets
3.4 Implémentation détaillée de l'algorithme de point chaud
3.5 Collecteur d'ordures classique
3.6 Collecteur de déchets à faible latence
3.7 Choisir le bon collecteur d'ordures
3.8 Exercices pratiques : Stratégies d’allocation et de récupération de la mémoire
3.9 En conclusion
Chapitre 4 : Outils de surveillance et de dépannage des performances des machines virtuelles
4.1 Introduction
4.2 Outils de dépannage de base
4.3 Outils d'interface graphique
4.4 Module d'extension et outils pour machine virtuelle Hotspot
4.5 En conclusion
Chapitre 5 : Analyse de cas et pratique de l’optimisation
5.1 Introduction
5.2 Analyse de cas
5.3 Exercice pratique : Réduire le temps de démarrage d’Eclipse
5.4 En conclusion
Partie 3 Sous-système d'exécution de machine virtuelle
Chapitre 6 Structure des fichiers de classe
6.1 Introduction
6.2 La pierre angulaire de l'indépendance de la plateforme
6.3 Structure des fichiers de classe
6.4 Introduction aux instructions en bytecode
6.5 La conception est publique, la mise en œuvre est privée
6.6 Évolution de la structure des fichiers de classe
6.7 En conclusion
Chapitre 7 Mécanisme de chargement des classes
7.1 Introduction
7.2 Points de chargement de classe
7.3 Processus de chargement des classes
Chargeur de classes 7.4
7.5 Système de modules Java
7.6 En conclusion
Chapitre 8 Moteur d'exécution de bytecode
8.1 Introduction
8.2 Structure de la pile d'exécution
8.3 Appels de méthode
8.4 Prise en charge des langages à typage dynamique
8.5 Moteur d'interprétation et d'exécution de bytecode basé sur une pile
8.6 En conclusion
Chapitre 9 : Sous-systèmes de chargement et d’exécution des classes, études de cas et pratiques
9.1 Introduction
9.2 Études de cas
9.3 Exercice pratique : Implémentation de fonctions d’exécution à distance
9.4 En conclusion
Partie 4 Compilation et optimisation
Chapitre 10 Compilation et optimisation du front-end
10.1 Introduction
10.2 compilateur javac
10.3 Aspects intéressants de la grammaire pratique de Java
10.4 Exercice : Création d'un processeur d'annotations enfichable
10.5 En conclusion
Chapitre 11 Compilation et optimisation du backend
11.1 Introduction
11.2 Compilateur JIT
11.3 Compilateur AOT
11.4 Techniques d'optimisation du compilateur
11.5 Exercice : Comprendre en détail le compilateur Graal
11.6 En conclusion
Partie 5 : Concurrence efficace
Chapitre 12 : Modèle de mémoire Java et threads
12.1 Introduction
12.2 Efficacité et cohérence du matériel
12.3 Modèle de mémoire Java
12.4 Java et les threads
12.5 Java et les threads virtuels
12.6 En conclusion
Chapitre 13 : Sécurité des filetages et optimisation du verrouillage
13.1 Introduction
13.2 Sécurité du filetage
13.3 Optimisation du verrouillage
13.4 En conclusion
Annexe Liste des abréviations
Recherche
introduction
Remerciements
Partie 1 : Découvrir Java
Chapitre 1 : Introduction au système de technologie Java
1.1 Introduction
1.2 Système de technologie Java
1.3 Le passé et le présent de Java
1.4 Famille de machines virtuelles Java
1.5 L'avenir de la technologie Java
1.6 Cas concret : créer le JDK moi-même
1.7 En conclusion
Partie 2 Gestion automatique de la mémoire
Chapitre 2 : Zones de mémoire Java et débordement de mémoire
2.1 Introduction
2.2 Zone de données d'exécution
2.3 Observation des objets dans la machine virtuelle Hotspot
2.4 Exercice : Exception OutOfMemoryError
2.5 En conclusion
Chapitre 3 : Stratégies de gestion des déchets et d’allocation de mémoire
3.1 Introduction
3.2 Le sujet est-il mort ?
3.3 Algorithme de récupération des déchets
3.4 Implémentation détaillée de l'algorithme de point chaud
3.5 Collecteur d'ordures classique
3.6 Collecteur de déchets à faible latence
3.7 Choisir le bon collecteur d'ordures
3.8 Exercices pratiques : Stratégies d’allocation et de récupération de la mémoire
3.9 En conclusion
Chapitre 4 : Outils de surveillance et de dépannage des performances des machines virtuelles
4.1 Introduction
4.2 Outils de dépannage de base
4.3 Outils d'interface graphique
4.4 Module d'extension et outils pour machine virtuelle Hotspot
4.5 En conclusion
Chapitre 5 : Analyse de cas et pratique de l’optimisation
5.1 Introduction
5.2 Analyse de cas
5.3 Exercice pratique : Réduire le temps de démarrage d’Eclipse
5.4 En conclusion
Partie 3 Sous-système d'exécution de machine virtuelle
Chapitre 6 Structure des fichiers de classe
6.1 Introduction
6.2 La pierre angulaire de l'indépendance de la plateforme
6.3 Structure des fichiers de classe
6.4 Introduction aux instructions en bytecode
6.5 La conception est publique, la mise en œuvre est privée
6.6 Évolution de la structure des fichiers de classe
6.7 En conclusion
Chapitre 7 Mécanisme de chargement des classes
7.1 Introduction
7.2 Points de chargement de classe
7.3 Processus de chargement des classes
Chargeur de classes 7.4
7.5 Système de modules Java
7.6 En conclusion
Chapitre 8 Moteur d'exécution de bytecode
8.1 Introduction
8.2 Structure de la pile d'exécution
8.3 Appels de méthode
8.4 Prise en charge des langages à typage dynamique
8.5 Moteur d'interprétation et d'exécution de bytecode basé sur une pile
8.6 En conclusion
Chapitre 9 : Sous-systèmes de chargement et d’exécution des classes, études de cas et pratiques
9.1 Introduction
9.2 Études de cas
9.3 Exercice pratique : Implémentation de fonctions d’exécution à distance
9.4 En conclusion
Partie 4 Compilation et optimisation
Chapitre 10 Compilation et optimisation du front-end
10.1 Introduction
10.2 compilateur javac
10.3 Aspects intéressants de la grammaire pratique de Java
10.4 Exercice : Création d'un processeur d'annotations enfichable
10.5 En conclusion
Chapitre 11 Compilation et optimisation du backend
11.1 Introduction
11.2 Compilateur JIT
11.3 Compilateur AOT
11.4 Techniques d'optimisation du compilateur
11.5 Exercice : Comprendre en détail le compilateur Graal
11.6 En conclusion
Partie 5 : Concurrence efficace
Chapitre 12 : Modèle de mémoire Java et threads
12.1 Introduction
12.2 Efficacité et cohérence du matériel
12.3 Modèle de mémoire Java
12.4 Java et les threads
12.5 Java et les threads virtuels
12.6 En conclusion
Chapitre 13 : Sécurité des filetages et optimisation du verrouillage
13.1 Introduction
13.2 Sécurité du filetage
13.3 Optimisation du verrouillage
13.4 En conclusion
Annexe Liste des abréviations
Recherche
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 30 avril 2024
Nombre de pages, poids, dimensions : 688 pages | 1 280 g | 188 × 240 × 34 mm
- ISBN13 : 9788966264414
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne