Qu'est-ce que la JVM ? Java Machine virtuelle Architecture
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, 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 Java source, Bytecode est un langage intermรฉdiaire. JVM dans Java est responsable de l'allocation de l'espace mรฉmoire.
Dans ce didacticiel JVM, vous apprendrez-
Archistructure de la JVM (Java Machine virtuelle)
Maintenant, dans ce didacticiel JVM, comprenons le Archistructure de la JVM. Architecture JVM dans 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 des fichiers de classe. Il remplit trois fonctions principales, ร savoir. Chargement, liaison et initialisation.
2) Domaine de la mรฉthode
La zone de mรฉthode JVM 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 leurs tableaux sont stockรฉs dans le tas. Cette mรฉmoire est commune et partagรฉe entre plusieurs threads.
4) Piles de langage JVM
Java Les piles de langage stockent les variables locales et leurs rรฉsultats partiels. Chaque thread possรจde sa propre pile JVM, crรฉรฉe simultanรฉment ร la crรฉation du thread. Une nouvelle trame est crรฉรฉe chaque fois qu'une mรฉthode est invoquรฉe et elle est supprimรฉe lorsque le processus d'invocation de la mรฉthode est terminรฉ.
5) Registres PC
Le registre PC stocke l'adresse du Java instruction de machine virtuelle en cours d'exรฉcution. Dans Java, chaque thread a son registre PC sรฉparรฉ.
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. Il est รฉcrit dans une autre langue 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
La Native Method Interface est un framework de programmation. Il permet Java code qui s'exรฉcute dans une JVM pour รชtre appelรฉ par les bibliothรจques et les applications natives.
9) Bibliothรจques de mรฉthodes natives
Native Libraries est une collection de bibliothรจques natives(C, C++) qui sont nรฉcessaires au moteur d'exรฉcution.
Processus de compilation et dโexรฉcution du code logiciel
Pour รฉcrire et exรฉcuter un 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 de langage avancรฉ en code machine natif
3) รditeur de liens โ Pour combiner 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 exรฉcution. Le chargement se fait automatiquement lorsque vous exรฉcutez votre code.
5) Exรฉcution โ Exรฉcution rรฉelle du code 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 Machine Virtuelle).
Cliquez ร nouveau sur ici si la vidรฉo n'est pas accessible
Processus de compilation et dโexรฉcution du code C
Pour comprendre le Java processus de compilation dans JavaCommenรงons dโabord par jeter un rapide coup dโลil au processus de compilation et de liaison en C.
Supposons que dans le fichier principal, 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. 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.exe dans le RAM pour l'exรฉcution.
Java Compilation et exรฉcution de code dans Java VM
Maintenant, dans ce didacticiel JVM, examinons le processus pour JAVA. Dans votre main, vous disposez de 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 constituรฉ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, ร l'aide du chargeur de classes, les fichiers de classe sont transfรฉrรฉs dans la RAM. Le code BYTE est vรฉrifiรฉ pour dรฉtecter toute faille de sรฉcuritรฉ.
Ensuite, le moteur d'exรฉcution convertira le Bytecode en code machine natif. Il s'agit d'une compilation juste ร temps. C'est l'une des principales raisons pour lesquelles Java est relativement lent.
NOTE: JIT ou le compilateur juste ร temps fait partie du Java Machine virtuelle (JVM). Il interprรจte en mรชme temps une partie du Byte Code qui a des fonctionnalitรฉs similaires.
Pourquoi est- Java Langage interprรฉtรฉ et compilรฉ ?
Langages de programmation sont classรฉs comme
- Langue de niveau supรฉrieur Ex. C++, Java
- Langues de niveau intermรฉdiaire Ex. C
- Examen de langage de bas niveau Assembly
- enfin le niveau le plus bas comme le Langage Machine.
A compilateur est un programme qui convertit un programme d'un niveau de langage ร un autre. Exemple de conversion de C++ programme en code machine. Le compilateur Java convertit le code Java de haut niveau en bytecode (qui est รฉgalement un type de code machine).
An interprรจte est un programme qui convertit un programme ร un niveau vers un autre langage de programmation au niveau mรชme niveau. Exemple de conversion de Java programme dans C++
In Java, le gรฉnรฉrateur de code juste ร temps convertit le bytecode en code machine natif qui se situe aux mรชmes niveaux 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 Ces
- 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 Java ce qui ralentit encore la vitesse
Cependant, la derniรจre version de Java a rรฉsolu dans une large mesure les goulots dโรฉtranglement en matiรจre de performances.
Rรฉsumรฉ:
- La forme complรจte de JVM est Java Machine virtuelle. JVM dans Java est le moteur qui entraรฎne le Java Code. Il convertit Java bytecode en langage machine.
- Architecture JVM dans Java contient un chargeur de classe, une zone mรฉmoire, un moteur d'exรฉcution, etc.
- Dans la JVM, Java le code est compilรฉ en bytecode. Ce bytecode est interprรฉtรฉ sur diffรฉrentes machines
- JIT signifie Compilateur juste ร temps. JIT fait partie du Java Machine virtuelle (JVM). Elle est utilisรฉe pour accรฉlรฉrer le temps d'exรฉcution
- Par rapport aux autres machines de compilateur, JVM dans Java peut รชtre lent ร exรฉcuter.









