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 | Qu'est-ce que la machine virtuelle Java et son architecture

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 connue sous le nom de machine virtuelle Java.

Voici comment fonctionne la JVM

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

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

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

Dans ce tutoriel JVM, vous apprendrez-

Architecture JVM

Maintenant, dans ce tutoriel JVM, comprenons l'architecture de JVM. L'architecture JVM en 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 les fichiers de classe. Il remplit trois fonctions principales à savoir. Chargement, liaison et initialisation.

2) Zone de méthode

JVM Method Area 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 les tableaux sont stockés dans le tas. Cette mémoire est commune et partagée sur plusieurs threads.

4) Piles de langage JVM

Le langage Java Stacks stocke des variables locales et ses résultats partiels. Chaque thread a sa propre pile JVM, créée simultanément à la création du thread. Un nouveau cadre est créé chaque fois qu'une méthode est invoquée et il est supprimé lorsque le processus d'invocation de la méthode est 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 propre registre PC.

6) Piles de méthodes natives

Les piles de méthodes natives contiennent l'instruction du code natif qui dépend de la bibliothèque native. Il est écrit dans un autre langage 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

L'interface de méthode native est un cadre de programmation. Il permet au code Java qui s'exécute 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 programme logiciel, vous avez besoin des éléments suivants

1) Éditeur – Pour taper votre programme, un bloc-notes pourrait être utilisé pour cela

2) Compilateur – Pour convertir votre programme en langage avancé en code machine natif

3) Lien – Pour combiner ensemble 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 l'exécution. Le chargement se fait automatiquement lorsque vous exécutez votre code.

5) Exécution – Exécution réelle du code qui est 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 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 coup d'œil au processus de compilation et de liaison en C.

Supposons que dans l'ensemble, 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 les 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 de l'é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 fichier .exe dans la RAM pour l'exécution.

Compilation et exécution de code Java dans Java VM

Maintenant, dans ce didacticiel JVM, examinons le processus pour JAVA. Dans votre main, vous avez deux méthodes f1 et f2.

Le compilateur compilera les trois fichiers et produira 3 fichiers .class correspondants qui se composent de code BYTE. Contrairement à C, aucun lien n'est fait .

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

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

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

Pourquoi Java est-il à la fois un langage interprété et compilé ?

Les langages de programmation sont classés comme

Un 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).

Un interprète est un programme qui convertit un programme à un niveau vers un autre langage de programmation au même niveau. Exemple de conversion d'un programme Java en C++

En Java, le générateur de code Just In Time convertit le bytecode en code machine natif qui sont 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. Lien 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ète d'exécution : La conversion du code binaire en code machine natif est effectuée au moment de l'exécution en Java, ce qui ralentit davantage la vitesse

Cependant, la dernière version de Java a résolu dans une large mesure les goulots d'étranglement des performances.

Résumé :


Java

  1. Qu'est-ce que la CNC ?
  2. Java 10 - Poignée de main locale au thread
  3. Qu'est-ce que le tournage machine ?
  4. Qu'est-ce que la conception architecturale ?
  5. Qu'est-ce qu'un boulon mécanique ?
  6. Qu'est-ce qu'une machine à filer ?
  7. Qu'est-ce qu'un distributeur automatique de lait ?
  8. Qu'est-ce qu'une aléseuse horizontale ?
  9. Qu'est-ce qu'une presse automatique ?