JVM | Qu'est-ce que la machine virtuelle Java et son architecture
Qu'est-ce que la JVM ?
Machine virtuelle Java (JVM) est un moteur qui fournit un environnement d'exécution pour piloter le code Java ou les applications. Il convertit le bytecode Java en langage machine. JVM fait partie de Java Runtime Environment (JRE). Dans d'autres langages de programmation, le compilateur produit du code machine pour un système particulier. Cependant, le compilateur Java produit du code pour une machine virtuelle connue sous le nom de machine virtuelle Java.
Voici comment fonctionne la JVM
Tout d'abord, le code Java est compilé en bytecode. Ce bytecode est interprété sur différentes machines
Entre le système hôte et la source Java, le Bytecode est un langage intermédiaire.
JVM en Java est responsable de l'allocation de l'espace mémoire.
Dans ce tutoriel JVM, vous apprendrez-
- Architecture JVM
- Processus de compilation et d'exécution du code logiciel
- Processus de compilation et d'exécution du code C
- Processus de compilation et d'exécution du code Java
- Pourquoi Java est-il à la fois interprété et compilé ?
- Pourquoi Java est-il lent ?
Architecture JVM
Maintenant, dans ce tutoriel JVM, comprenons l'architecture de JVM. L'architecture JVM en Java contient un chargeur de classe, une zone mémoire, un moteur d'exécution, etc.
1) Chargeur de classe
Le chargeur de classe est un sous-système utilisé pour charger les fichiers de classe. Il remplit trois fonctions principales à savoir. Chargement, liaison et initialisation.
2) Zone de méthode
JVM Method Area stocke les structures de classe telles que les métadonnées, le pool d'exécution constant et le code des méthodes.
3) Tas
Tous les objets, leurs variables d'instance associées et les tableaux sont stockés dans le tas. Cette mémoire est commune et partagée sur plusieurs threads.
4) Piles de langage JVM
Le langage Java Stacks stocke des variables locales et ses résultats partiels. Chaque thread a sa propre pile JVM, créée simultanément à la création du thread. Un nouveau cadre est créé chaque fois qu'une méthode est invoquée et il est supprimé lorsque le processus d'invocation de la méthode est terminé.
5) Registres PC
Le registre PC stocke l'adresse de l'instruction de la machine virtuelle Java en cours d'exécution. En Java, chaque thread a son propre registre PC.
6) Piles de méthodes natives
Les piles de méthodes natives contiennent l'instruction du code natif qui dépend de la bibliothèque native. Il est écrit dans un autre langage au lieu de Java.
7) Moteur d'exécution
Il s'agit d'un type de logiciel utilisé pour tester du matériel, des logiciels ou des systèmes complets. Le moteur d'exécution des tests ne contient jamais d'informations sur le produit testé.
8) Interface de méthode native
L'interface de méthode native est un cadre de programmation. Il permet au code Java qui s'exécute dans une JVM d'être appelé par des bibliothèques et des applications natives.
9) Bibliothèques de méthodes natives
Les bibliothèques natives sont une collection de bibliothèques natives (C, C++) nécessaires au moteur d'exécution.
Processus de compilation et d'exécution du code logiciel
Pour écrire et exécuter un programme logiciel, vous avez besoin des éléments suivants
1) Éditeur – Pour taper votre programme, un bloc-notes pourrait être utilisé pour cela
2) Compilateur – Pour convertir votre programme en langage avancé en code machine natif
3) Lien – Pour combiner ensemble différentes références de fichiers de programme dans votre programme principal.
4) Chargeur - Pour charger les fichiers de votre périphérique de stockage secondaire comme le disque dur, le lecteur flash, le CD dans la RAM pour l'exécution. Le chargement se fait automatiquement lorsque vous exécutez votre code.
5) Exécution – Exécution réelle du code qui est géré par votre système d'exploitation et votre processeur.
Dans ce contexte, reportez-vous à la vidéo suivante et découvrez le fonctionnement interne et l'architecture de la JVM (Java Virtual Machine).
Cliquez ici si la vidéo n'est pas accessible
Processus de compilation et d'exécution du code C
Comprendre le processus de compilation Java en Java. Jetons d'abord un coup d'œil au processus de compilation et de liaison en C.
Supposons que dans l'ensemble, vous ayez appelé deux fonctions f1 et f2. La fonction principale est stockée dans le fichier a1.c.
La fonction f1 est stockée dans un fichier a2.c
La fonction f2 est stockée dans un fichier a3.c
Tous ces fichiers, c'est-à-dire a1.c, a2.c et a3.c, sont transmis au compilateur. Dont la sortie est les fichiers objets correspondants qui sont le code machine.
L'étape suivante consiste à intégrer tous ces fichiers objets dans un seul fichier .exe à l'aide de l'éditeur de liens. L'éditeur de liens regroupera tous ces fichiers et produira le fichier .exe.
Pendant l'exécution du programme, un programme de chargement chargera un fichier .exe dans la RAM pour l'exécution.
Compilation et exécution de code Java dans Java VM
Maintenant, dans ce didacticiel JVM, examinons le processus pour JAVA. Dans votre main, vous avez deux méthodes f1 et f2.
- La méthode principale est stockée dans le fichier a1.java
- f1 est stocké dans un fichier sous le nom a2.java
- f2 est stocké dans un fichier sous le nom a3.java
Le compilateur compilera les trois fichiers et produira 3 fichiers .class correspondants qui se composent de code BYTE. Contrairement à C, aucun lien n'est fait .
La machine virtuelle Java ou la machine virtuelle Java réside sur la RAM. Lors de l'exécution, à l'aide du chargeur de classe, les fichiers de classe sont amenés sur la RAM. Le code BYTE est vérifié pour toute faille de sécurité.
Ensuite, le moteur d'exécution convertira le Bytecode en code machine natif. C'est juste à temps pour compiler. C'est l'une des principales raisons pour lesquelles Java est relativement lent.
REMARQUE : JAT ou le compilateur juste-à-temps fait partie de la machine virtuelle Java (JVM). Il interprète une partie du Byte Code qui a des fonctionnalités similaires en même temps.
Pourquoi Java est-il à la fois un langage interprété et compilé ?
Les langages de programmation sont classés comme
- Langage de niveau supérieur Ex. C++, Java
- Langues de niveau intermédiaire Ex. C
- Ex-assemblage de langage de bas niveau
- enfin le niveau le plus bas en tant que langage machine.
Un compilateur est un programme qui convertit un programme d'un niveau de langage à un autre. Exemple de conversion d'un programme C++ en code machine.
Le compilateur Java convertit le code Java de haut niveau en bytecode (qui est également un type de code machine).
Un interprète est un programme qui convertit un programme à un niveau vers un autre langage de programmation au même niveau. Exemple de conversion d'un programme Java en C++
En Java, le générateur de code Just In Time convertit le bytecode en code machine natif qui sont aux mêmes niveaux de programmation.
Par conséquent, Java est à la fois un langage compilé et interprété.
Pourquoi Java est-il lent ?
Les deux principales raisons de la lenteur de Java sont
- Lien dynamique : Contrairement au C, la liaison est effectuée au moment de l'exécution, chaque fois que le programme est exécuté en Java.
- Interprète d'exécution : La conversion du code binaire en code machine natif est effectuée au moment de l'exécution en Java, ce qui ralentit davantage la vitesse
Cependant, la dernière version de Java a résolu dans une large mesure les goulots d'étranglement des performances.
Résumé :
- La forme complète de JVM est Java Virtual Machine. JVM en Java est le moteur qui pilote le code Java. Il convertit le bytecode Java en langage machine.
- L'architecture JVM en Java contient un chargeur de classe, une zone mémoire, un moteur d'exécution, etc.
- Dans JVM, le code Java est compilé en bytecode. Ce bytecode est interprété sur différentes machines
- JIT signifie compilateur juste-à-temps. JIT est la partie de la machine virtuelle Java (JVM). Il est utilisé pour accélérer le temps d'exécution
- Par rapport à d'autres machines compilatrices, la JVM en Java peut être lente à s'exécuter.
Java
- Qu'est-ce que la CNC ?
- Java 10 - Poignée de main locale au thread
- Qu'est-ce que le tournage machine ?
- Qu'est-ce que la conception architecturale ?
- Qu'est-ce qu'un boulon mécanique ?
- Qu'est-ce qu'une machine à filer ?
- Qu'est-ce qu'un distributeur automatique de lait ?
- Qu'est-ce qu'une aléseuse horizontale ?
- Qu'est-ce qu'une presse automatique ?