Qu'est-ce que la JVM ? Expliquez la JVM. Architecture
โก Rรฉsumรฉ intelligent
Java La machine virtuelle (JVM) est le moteur qui fournit un environnement d'exรฉcution pour piloter les applications. Java code, convertissant le bytecode indรฉpendant de la plateforme en langage machine natif. Il fait partie du Java Environnement d'exรฉcution et permet Javasa portabilitรฉ ยซ รฉcrire une fois, exรฉcuter partout ยป.

Qu'est-ce que JVM dans Java?
Java Machine virtuelle (JVM) est un moteur qui fournit un environnement d'exรฉcution pour piloter le Java code ou applications. Il convertit Java bytecode en langage machine. JVM fait partie de Java Environnement d'exรฉcution (JRE). Dans d'autres langages de programmation, le compilateur produit du code machine pour un systรจme particulier. Cependant, le Java le compilateur produit du code pour une machine virtuelle appelรฉe Java Machine virtuelle.
Comment fonctionne la JVM ?
Tout d'abord, Java Le code est compilรฉ en bytecode. Ce bytecode est interprรฉtรฉ sur diffรฉrentes machines. Entre le systรจme hรดte et le systรจme distant, le code est interprรฉtรฉ sur diffรฉrentes machines. Java Le bytecode, langage intermรฉdiaire, est utilisรฉ dans la JVM. Java est responsable de l'allocation de l'espace mรฉmoire.
Fonctionnement de Java Machine virtuelle (JVM)
Archistructure de la JVM (Java Machine virtuelle)
ร prรฉsent, examinons l'architecture de la JVM. Architecture de la JVM dans Java Contient un chargeur de classes, une zone de mรฉmoire, un moteur d'exรฉcution, et plus encore.
Java Machine virtuelle Architecture
1) Chargeur de classe
Le chargeur de classes est un sous-systรจme utilisรฉ pour charger les fichiers de classes. Il remplit trois fonctions principales : le chargement, lโรฉdition de liens et lโinitialisation.
2) Domaine de la mรฉthode
La zone de mรฉthodes JVM stocke les structures de classe telles que les mรฉtadonnรฉes, le pool d'exรฉcution des constantes et le code des mรฉthodes.
3) Tas
Tous les Objets, leurs variables d'instance associรฉes et leurs tableaux sont stockรฉs dans le tas. Cette mรฉmoire est commune et partagรฉe entre plusieurs threads.
4) Piles de langages JVM
Java Les piles d'exรฉcution stockent les variables locales et leurs rรฉsultats partiels. Chaque thread possรจde sa propre pile JVM, crรฉรฉe simultanรฉment ร sa crรฉation. Un nouveau cadre est crรฉรฉ ร chaque appel de mรฉthode et supprimรฉ une fois l'exรฉcution terminรฉe.
5) Registres PC
Le registre du PC stocke l'adresse du Java Instruction de machine virtuelle en cours d'exรฉcution. Java, chaque thread possรจde son propre registre PC distinct.
6) Piles de mรฉthodes natives
Les piles de mรฉthodes natives contiennent les instructions du code natif qui dรฉpendent de la bibliothรจque native. Ce code est รฉcrit dans un autre langage. Java.
7) Moteur d'exรฉcution
Le moteur d'exรฉcution lit le bytecode et l'exรฉcute morceau par morceau. Il utilise un interprรฉteur et un compilateur JIT (Just-In-Time) pour convertir le bytecode en code machine natif et l'exรฉcuter.
8) Interface de mรฉthode native
La Native Method Interface est un framework de programmation. Il permet Java du code s'exรฉcutant dans une JVM pour appeler, et รชtre appelรฉ par, des applications et des bibliothรจques natives.
9) Bibliothรจques de mรฉthodes natives
Native Libraries est une collection des bibliothรจques natives (C, C++) qui sont nรฉcessaires au moteur d'exรฉcution.
Logiciels Code Processus de compilation et d'exรฉcution
Pour รฉcrire et exรฉcuter un programme logiciel, vous avez besoin des รฉlรฉments suivants :
- 1) รditeur โ Pour saisir votre programme ; un bloc-notes peut รชtre utilisรฉ ร cet effet.
- 2) Compilateur โ Pour convertir votre programme en langage de haut niveau en code machine natif.
- 3) รditeur de liens โ Pour combiner les diffรฉrentes rรฉfรฉrences aux fichiers du programme dans votre programme principal.
- 4) Chargeur โ Pour charger les fichiers depuis votre pรฉriphรฉrique de stockage secondaire (disque dur, clรฉ USB ou CD) dans la mรฉmoire vive (RAM) en vue de leur exรฉcution. Ce chargement s'effectue automatiquement lors de l'exรฉcution de votre code.
- 5) Exรฉcution โ Lโexรฉcution effective du code, gรฉrรฉe par votre systรจme dโexploitation et votre processeur.
Compte tenu de ces informations, reportez-vous ร la vidรฉo suivante et dรฉcouvrez le fonctionnement interne et l'architecture de la JVM (Java Machine Virtuelle).
Cliquez ร nouveau ici si la vidรฉo n'est pas accessible
Processus de compilation et dโexรฉcution du code C
Pour comprendre le Java Pour aborder le processus de compilation, jetons tout d'abord un rapide coup d'ลil au processus de compilation et d'รฉdition de liens en C.
Supposons que dans la fonction principale, 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 constituรฉe des 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 d'un รฉditeur de liens. Ce dernier regroupera tous ces fichiers et produira le fichier .exe.
Lors de l'exรฉcution du programme, un programme de chargement chargera un fichier a.exe dans le rรฉpertoire. RAM pour exรฉcution.
Java Compilation et exรฉcution de code dans Java VM
Examinons maintenant le processus pour JavaDans votre fonction principale, 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 trois fichiers .class correspondants, composรฉs de code BYTE. Contrairement au C, aucune liaison n'est effectuรฉe.
Le Java VM, ou Java La machine virtuelle rรฉside dans la RAM. Lors de l'exรฉcution, les fichiers de classe sont chargรฉs dans la RAM via le chargeur de classes. Le code binaire est vรฉrifiรฉ afin de dรฉtecter toute faille de sรฉcuritรฉ.
Ensuite, le moteur d'exรฉcution convertit le bytecode en code machine natif. C'est la compilation ร la volรฉe. C'est l'une des principales raisons pour lesquelles Java est relativement lent.
NOTE: Le JIT, ou compilateur juste-ร -temps, est la partie du Java Machine virtuelle (JVM). Elle interprรจte simultanรฉment des portions de code binaire ayant des fonctionnalitรฉs similaires.
Pourquoi est- Java Langage interprรฉtรฉ et compilรฉ ?
Langages de programmation sont classรฉs comme suit :
- Langage de niveau supรฉrieur, par exemple, C++, Java
- Langages de niveau intermรฉdiaire, par exemple, C
- Langage de bas niveau, par exemple, Assembly
- Enfin, le niveau le plus bas est le langage machine.
A compilateur est un programme qui convertit un programme d'un niveau de langage ร un autre. Par exemple, la conversion d'un C++ programmer en code machine. Java le compilateur convertit le haut niveau Java convertir le code en bytecode (qui est รฉgalement un type de code machine).
An interprรจte est un programme qui convertit un programme d'un niveau ร un autre langage de programmation au niveau mรชme niveauPar exemple, la conversion d'un Java programme dans C++.
In JavaLe gรฉnรฉrateur de code Just-In-Time convertit le bytecode en code machine natif, qui se situe au mรชme niveau de programmation. Par consรฉquent, Java est ร la fois un langage compilรฉ et interprรฉtรฉ.
Pourquoi est- Java lent?
Les deux principales raisons de la lenteur du Java sont:
- Liaison dynamique : Contrairement au C, la liaison est effectuรฉe au moment de l'exรฉcution, ร chaque fois que le programme est exรฉcutรฉ. Java.
- Interprรฉteur d'exรฉcution : La conversion du byte code en code machine natif se fait au moment de l'exรฉcution dans Javace qui ralentit encore davantage la vitesse.
Cependant, les derniรจres versions de Java ont largement remรฉdiรฉ ร ces problรจmes de performance.











