Java Tutorial

JVM | Machine virtuelle Java

JVM (Java Virtual Machine) est une machine abstraite. C’est une spécification qui fournit un environnement d’exécution dans lequel le bytecode Java peut être exécuté.

Les JVM sont disponibles pour de nombreuses plates-formes matérielles et logicielles (c’est-à-dire que la JVM dépend de la plate-forme).

Qu’est-ce que la JVM

C’est:

  1. Un cahier des charges où le fonctionnement de la machine virtuelle Java est spécifié. Mais le fournisseur d’implémentation est indépendant pour choisir l’algorithme. Sa mise en œuvre a été assurée par Oracle et d’autres sociétés.
  2. Une mise en œuvre Son implémentation est connue sous le nom de JRE (Java Runtime Environment).
  3. Instance d’exécution Chaque fois que vous écrivez une commande java sur l’invite de commande pour exécuter la classe java, une instance de JVM est créée.

Ce qu’il fait

La JVM effectue l’opération suivante :

  • Charge le code
  • Vérifie le code
  • Exécute le code
  • Fournit un environnement d’exécution

JVM fournit des définitions pour :

  • Zone mémoire
  • Format de fichier de classe
  • Enregistrer l’ensemble
  • Tas de déchets collectés
  • Rapport d’erreur fatale, etc.

Architecture JVM

Comprenons l’architecture interne de JVM. Il contient un chargeur de classe, une zone mémoire, un moteur d’exécution, etc.

1) Chargeur de classe

Classloader est un sous-système de JVM utilisé pour charger des fichiers de classe. Chaque fois que nous exécutons le programme Java, il est d’abord chargé par le chargeur de classe. Il existe trois classloaders intégrés en Java.

  1. Bootstrap ClassLoader: Il s’agit du premier chargeur de classe qui est la super classe du chargeur de classe d’extension. Il charge le rt.jar fichier qui contient tous les fichiers de classe de Java Standard Edition comme les classes de package java.lang, les classes de package java.net, les classes de package java.util, les classes de package java.io, les classes de package java.sql, etc.
  2. Chargeur de classe d’extension: Il s’agit du chargeur de classe enfant de Bootstrap et du chargeur de classe parent du chargeur de classe système. Il charge les fichiers jar situés à l’intérieur $JAVA_HOME/jre/lib/ext annuaire.
  3. Chargeur de classe système/application: Il s’agit du chargeur de classe enfant du chargeur de classe d’extension. Il charge les fichiers de classe à partir du chemin de classe. Par défaut, le chemin de classe est défini sur le répertoire courant. Vous pouvez modifier le chemin de classe à l’aide du commutateur “-cp” ou “-classpath”. Il est également connu sous le nom de chargeur de classe d’application.

Testez-le maintenant

Sortir:

Ce sont les classloaders internes fournis par Java. Si vous souhaitez créer votre propre chargeur de classe, vous devez étendre la classe ClassLoader.

2) Zone de classe (méthode)

La zone de classe (méthode) stocke les structures par classe telles que le pool de constantes d’exécution, les données de champ et de méthode, le code des méthodes.

3) Tas

Il s’agit de la zone de données d’exécution dans laquelle les objets sont affectés.

4) Pile

Java Stack stocke les cadres. Il contient des variables locales et des résultats partiels, et joue un rôle dans l’invocation et le retour des méthodes.

Chaque thread possède une pile JVM privée, créée en même temps que le thread.

Un nouveau cadre est créé chaque fois qu’une méthode est invoquée. Une trame est détruite lorsque son invocation de méthode se termine.

5) Registre du compteur de programme

Le registre PC (compteur de programme) contient l’adresse de l’instruction de la machine virtuelle Java en cours d’exécution.

6) Pile de méthode native

Il contient toutes les méthodes natives utilisées dans l’application.

7) Moteur d’exécution

Il contient:

  1. Un processeur virtuel
  2. Interprète: Lisez le flux de bytecode puis exécutez les instructions.
  3. Compilateur juste-à-temps (JIT) : Il est utilisé pour améliorer les performances. JIT compile des parties du bytecode qui ont des fonctionnalités similaires en même temps, et réduit donc le temps nécessaire à la compilation. Ici, le terme “compilateur” fait référence à un traducteur du jeu d’instructions d’une machine virtuelle Java (JVM) vers le jeu d’instructions d’un CPU spécifique.

8) Interface native Java

Java Native Interface (JNI) est un framework qui fournit une interface pour communiquer avec une autre application écrite dans un autre langage comme C, C++, Assembly, etc. Java utilise le framework JNI pour envoyer la sortie à la console ou interagir avec les bibliothèques du système d’exploitation.

.

#JVM #Machine #virtuelle #Java

Related Articles

Check Also
Close
Back to top button