Qu'est-ce que la JVM (Java Virtual Machine) : Archila configuration expliquée !

Qu'est-ce que la JVM ?

Machine virtuelle Java (JVM) est un moteur qui fournit un environnement d'exécution pour piloter le code Java ou les applications. Il convertit le bytecode Java en langage machine. JVM fait partie de Java Runtime Environment (JRE). Dans d'autres langages de programmation, le compilateur produit du code machine pour un système particulier. Cependant, le compilateur Java produit du code pour une machine virtuelle appelée machine virtuelle Java.

Comment fonctionne la JVM ?

Tout d’abord, le code Java est compilé en bytecode. Ce bytecode est interprété sur différentes machines

Entre système hôte et source Java, le Bytecode est un langage intermédiaire.

JVM en Java est responsable de l'allocation de l'espace mémoire.


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



Dans ce didacticiel JVM, vous apprendrez-

JVM Architecture

Maintenant, dans ce didacticiel JVM, comprenons le Archiconfiguration de la JVM. JVM archiLa tecture en Java contient un chargeur de classe, une zone mémoire, un moteur d'exécution, etc.


JVM Architecture
Machine virtuelle Java 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 viz. 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
Les piles de langage Java stockent des variables locales et leurs résultats sont partiels. Chaque thread possède sa propre pile JVM, créée simultanémentneousuellement au fur et à mesure que le fil est créé. Un nouveau cadre est créé chaque fois qu'une méthode est invoquée et il est supprimé une fois le processus d'invocation de la méthode terminé.

5) Registres PC
Le registre PC stocke l'adresse de l'instruction de la machine virtuelle Java en cours d'exécution. En Java, chaque thread a son 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. Il est écrit dans un autre langage que 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 au code Java exécuté dans une JVM d'être appelé par des bibliothèques et des applications natives.

9) Bibliothèques de méthodes natives
Les bibliothèques natives sont une collection de bibliothèques natives (C, C++) 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 suivantswing

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 suitewing vidéo et découvrez le fonctionnement interne de la JVM et archiarchitecture de JVM (Java Virtual Machine).

Cliquez ici si la vidéo n'est pas accessible

Processus de compilation et d’exécution du code C

Comprendre le processus de compilation Java en Java. Jetons d'abord un rapide coup d'œil au processus de compilation et de liaison en C.

Supposons que, pour l’essentiel, 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

Compilation et exécution de code Java 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

Compilation et exécution de code Java 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.

La machine virtuelle Java ou la machine virtuelle Java réside sur la RAM. Pendant l'exécution, à l'aide du chargeur de classe, les fichiers de classe sont placés dans la RAM. Le code BYTE est vérifié pour toute faille de sécurité.

Compilation et exécution de code Java dans Java VM

Ensuite, le moteur d'exécution convertira le Bytecode en code machine natif. C'est juste à temps pour la compilation. C'est l'une des principales raisons pour lesquelles Java est relativement lent.

Compilation et exécution de code Java dans Java VM

REMARQUE: JIT ou Le compilateur juste à temps fait partie de la machine virtuelle Java (JVM). Il interprète en même temps une partie du Byte Code qui a des fonctionnalités similaires.

Pourquoi Java est-il à la fois un 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
  • Ex Assembly de langage de bas niveau
  • 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 d'un programme C++ 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 en un autre langage de programmation au niveau même niveau. Exemple de conversion d'un programme Java en C++

En Java, le code juste à temps generator 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 Java est-il lent ?

Les deux principales raisons de la lenteur de Java sont

  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é en Java.
  2. Interpréteur d'exécution : La conversion du byte code en code machine natif s'effectue au moment de l'exécution en Java, ce qui ralentit encore davantage 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 la machine virtuelle Java. JVM en Java est le moteur qui pilote le code Java. Il convertit le bytecode Java en langage machine.
  • JVM archiLa tecture en Java contient un chargeur de classe, une zone mémoire, un moteur d'exécution, etc.
  • Dans JVM, le code Java est compilé en bytecode. Ce bytecode est interprété sur différentes machines
  • JIT signifie Compilateur juste à temps. JIT fait partie de la machine virtuelle Java (JVM). Il est utilisé pour accélérer le temps d’exécution
  • Par rapport à d’autres machines de compilation, l’exécution de JVM en Java peut être lente.