Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

JVM expliquée : Qu'est-ce que c'est et son architecture

Qu'est-ce que la JVM ?

Java Virtual Machine (JVM) est le moteur d'exécution qui propulse les applications Java. Elle transforme le bytecode Java compilé en instructions machine natives et les exécute sur toute plateforme supportant la JVM. La JVM est un composant central du Java Runtime Environment (JRE). Contrairement aux langages qui compilent directement en code machine pour un OS spécifique, le compilateur Java produit un bytecode indépendant de la plateforme que la JVM interprète ou compile à l'exécution.

Comment fonctionne la JVM

Le code source Java est d'abord compilé en bytecode, que la JVM interprète ou compile juste-à-temps (JIT) en code natif. La JVM gère aussi l'allocation mémoire, l'ordonnancement des threads et l'interaction avec les bibliothèques natives.

JVM expliquée : Qu est-ce que c est et son architecture

Dans ce tutoriel, vous apprendrez :

Architecture de la JVM

La conception de la JVM est modulaire, comprenant plusieurs sous-systèmes qui travaillent ensemble pour charger, vérifier et exécuter le code Java.

JVM expliquée : Qu est-ce que c est et son architecture
  1. Class Loader – Charge les fichiers de classe et effectue le lien (vérification, préparation, résolution) et l'initialisation.
  2. Method Area – Stocke les structures de classes, métadonnées, pools de constantes, et code des méthodes.
  3. Heap (Tas) – Contient tous les objets, variables d'instance et tableaux. Partagé entre tous les threads.
  4. Java Stack (Pile Java) – Chaque thread a sa propre pile stockant variables locales et résultats partiels. Une nouvelle frame est créée à l'entrée de méthode et dépilée à la sortie.
  5. Program Counter (PC) Register – Contient l'adresse de la prochaine instruction à exécuter pour chaque thread.
  6. Native Method Stack – Stocke les appels vers du code natif (écrit en C/C++).
  7. Execution Engine – Exécute le bytecode, soit par interprétation, soit via le compilateur JIT.
  8. Native Method Interface (JNI) – Permet au code Java d'invoquer des bibliothèques natives.
  9. Native Libraries – Collections de code natif spécifique à la plateforme utilisées par le moteur d'exécution.

Processus de compilation et exécution du code logiciel

L'exécution d'un programme implique généralement ces étapes :

  1. Éditeur – Où vous écrivez le code source.
  2. Compilateur – Traduit le code haut niveau en code machine natif ou bytecode.
  3. Éditeur de liens (Linker) – Combine les fichiers objets et résout les références externes.
  4. Chargeur (Loader) – Charge l'exécutable final en mémoire.
  5. Exécution – Le système d'exploitation et le processeur lancent le programme.

Compilation et exécution du code C

Pour illustrer le processus Java, examinons d'abord un programme C simple. Supposons que la fonction main soit dans a1.c et appelle f1 (dans a2.c) et f2 (dans a3.c).

JVM expliquée : Qu est-ce que c est et son architecture

Le compilateur transforme chaque fichier .c en fichier objet contenant du code machine. L'éditeur de liens fusionne ces fichiers objets en un unique exécutable .exe. Au démarrage, le chargeur mappe myapp.exe en RAM et le système d'exploitation commence l'exécution.

JVM expliquée : Qu est-ce que c est et son architecture

Compilation et exécution du code Java dans la JVM

Java suit un flux de travail similaire mais distinct. Les fichiers sources a1.java, a2.java, a3.java sont compilés en fichiers bytecode a1.class, a2.class, a3.class. Pas d'étape de lien séparée ; la JVM charge le bytecode à la demande.

JVM expliquée : Qu est-ce que c est et son architecture

Pendant l'exécution, le class loader de la JVM charge les fichiers de classe en mémoire, les vérifie pour la sécurité, et le moteur d'exécution interprète ou compile JIT le bytecode en code machine natif. Cette étape JIT est ce qui fait que Java est à la fois compilé et interprété.

JVM expliquée : Qu est-ce que c est et son architecture

Note : Le compilateur JIT est un composant central de la JVM qui effectue la traduction à la volée du bytecode en instructions natives efficaces.

Pourquoi Java est à la fois compilé et interprété ?

Le design de Java marie les avantages des langages compilés et interprétés :

Pourquoi Java est plus lent ?

Le surcoût d'exécution de Java provient de deux sources principales :

  1. Liaison dynamique – Les méthodes sont résolues à l'exécution plutôt qu'à la compilation, ajoutant un petit coût de recherche.
  2. Interprétation du bytecode à l'exécution – Même avec JIT, l'exécution initiale du bytecode entraîne un coût de conversion avant la production de code natif.

Les implémentations JVM modernes ont considérablement réduit ces surcoûts grâce à l'optimisation agressive, la compilation par paliers et l'optimisation matériel-spécifique.

Résumé

Java

  1. Qu'est-ce que le CNC ? – Comprendre la Commande Numérique par Ordinateur pour la fabrication moderne
  2. Java 10 : Handshakes thread-local pour safepoints VM plus rapides
  3. Comprendre le tournage : Un procédé clé de l'usinage de précision
  4. Comprendre la Conception Architecturale : Principes, Pratiques et Impact
  5. Boulons de Machine Expliqués : Types, Utilisations et Guide d'Installation
  6. Comprendre les machines à filer : de la fibre au fil
  7. Distributeurs de Lait Frais : Pratiques, Économiques et Écologiques
  8. Machines d'alésage horizontales expliquées : conception, fonctionnement et applications
  9. Comprendre les presses automatiques : fonctionnement, avantages et applications