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.


Comment fonctionne la JVM
Fonctionnement de Java Machine virtuelle (JVM)

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.

 


JVM Architecture
Java Machine virtuelle Architecture

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.

Processus de compilation et dโ€™exรฉcution du code C

La fonction f1 est stockรฉe dans un fichier a2.c

Processus de compilation et dโ€™exรฉcution du code C

La fonction f2 est stockรฉe dans un fichier a3.c

Processus de compilation et dโ€™exรฉcution du code 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.

Processus de compilation et dโ€™exรฉcution du code C

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.

Processus de compilation et dโ€™exรฉcution du code C

Pendant l'exรฉcution du programme, un programme de chargement chargera un.exe dans le RAM pour l'exรฉcution.

Processus de compilation et dโ€™exรฉcution du code C

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

Java Compilation et exรฉcution de code dans Java VM

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รฉ.

Java Compilation et exรฉcution de code dans Java VM

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.

Java Compilation et exรฉcution de code dans Java VM

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

  1. 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.
  2. 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.

Rรฉsumez cet article avec :