Qu'est-ce que la JVM?

JVM est une spécification dans laquelle le fonctionnement de la machine virtuelle Java est décrit spécifiquement. Cependant, l'algorithme est une identité indépendante qui n'est choisie que par le fournisseur d'implémentation comme Oracle et d'autres sociétés renommées. En tant que tel, JVM est une implémentation connue sous le nom de Java Runtime Environment (JRE).

Définition

Il est défini comme la description d'un logiciel offrant un environnement d'exécution pour le code et son exécution significative. En d'autres termes, c'est la façon dont nous exécutons les programmes Java - en configurant les paramètres de la JVM et en nous appuyant sur elle pour gérer les ressources du programme pendant le processus d'exécution.

Compréhension

Java est connu comme indépendant de la plate-forme en raison de la machine virtuelle Java. Lorsqu'une soumission est effectuée sur différents ordinateurs avec différents systèmes d'exploitation dotés de JVM, le bytecode est interprété en langage de niveau machine par JVM. Pour être précis, les programmes JVM sont écrits en langage de programmation C, tandis que JVM est indépendant du système d'exploitation. Il s'agit d'un composant clé de l'architecture Java.

En dehors de tout cela, il est responsable de l'attribution de la mémoire essentielle requise par un programme Java. Il est également responsable de l'interdiction de l'espace mémoire.

Ce qu'il fait?

Les opérations cruciales que JVM effectue sont les suivantes:

  • Chargement du code
  • Vérification du code
  • Exécution de code
  • Provision d'environnement d'exécution

En dehors de tout cela, il déploie des classifications pour le format de fichier de classe, la zone de mémoire, le tas récupéré, le registre, le rapport d'erreurs fatales, etc.

Architecture JVM

Voyons quelques informations clés sur l'architecture interne de JVM qui comprend:

1. Chargeur de classe

Il s'agit d'un sous-système de JVM utilisé pour charger les fichiers de classe. Lors de l'exécution du programme java, il est d'abord chargé par le chargeur de classe. Les trois chargeurs de classe que Java inclut sont les suivants:

a) Bootstrap ClassLoader

C'est la superclasse du chargeur de classe Extension. Il aide à charger les fichiers rt.jar qui contiennent tous les fichiers de classe.

b) Extension ClassLoader

Il s'agit du chargeur de classe parent du chargeur de classe System et du chargeur de classe enfant de Bootstrap. Les fichiers jar dans le répertoire $ JAVA_HOME / jre / lib / ext peuvent être extraits via l'extension ClassLoader.

C) System / Application ClassLoader

Il est l'enfant du chargeur de classe Extension également connu sous le nom de chargeur de classe Application. Les fichiers de classe du chemin de classe peuvent être extraits via celui-ci. Le chemin de classe, qui est défini sur le répertoire actuel, par défaut peut être modifié en utilisant le commutateur «-cp» ou «-classpath».

2. Zone de classe (méthode)

Les structures de pré-classe telles que les données de champ et de méthode, le pool de constantes d'exécution et le code des méthodes sont stockés dans la zone de classe (méthode). Il s'agit d'une mémoire créée au démarrage de la JVM et partagée entre tous les threads comme le tas.

3. Tas

Les objets sont attribués via cette zone de données d'exécution utile. Il s'agit d'un emplacement mémoire stockant des objets avec ses variables d'instance. Chaque fois qu'un objet est créé en Java, il va dans le tas - la zone de mémoire.

4. Empiler

Parallèlement au stockage de trames, Java Stack contient des variables et des résultats partiels. Il joue également un rôle central dans la méthode, l'invocation et le retour. Chaque thread individuel se compose de sa pile JVM privée, créée en même temps que le thread. Chaque fois qu'une méthode dégénère, une nouvelle trame est générée et est brisée lorsque l'invocation de la méthode est terminée.

5. Registre du compteur de programmes (PC)

Le registre PC contient l'adresse de l'instruction JVM au moment de son exécution. Gardant une trace des instructions, il a une valeur pour chaque instruction qui n'est pas définie pour les méthodes natives.

6. Pile de méthode native

Les procédures natives utilisées dans les applications font partie de la pile de méthodes natives. Ces méthodes sont écrites dans des langages autres que Java. Associées à chaque thread, les implémentations JVM ne peuvent pas s'appuyer sur des piles conventionnelles et ne peuvent pas charger de méthodes natives. Pour être précis, il est similaire à stack mais utilisé pour les méthodes natives.

7. Moteur

Étant l'élément clé de la JVM, il communique avec ses différentes zones de mémoire. Ceci comprend:

une. Éboueur

Cela joue un rôle essentiel dans le système de gestion dynamique de la mémoire de la JVM. La mémoire occupée et qui n'est plus référencée par aucun des objets Java accessibles est libérée via le Garbage Collector.

b. Interprète

Il exécute les instructions après avoir lu le flux de bytecode.

c. Compilateur Just-In-Time (JIT)

En permettant l'amélioration des performances, le compilateur JIT compile en même temps des parties du bytecode avec des fonctionnalités similaires. Il aide à réduire le temps nécessaire au processus de compilation.

8. Interface native Java (JNI)

Les applications scriptées dans d'autres langages c'est-à-dire C, C ++, Assembly, etc. peuvent être connectées, via une interface fournie par JNI. Le framework JNI est utilisé par Java pour interagir avec les bibliothèques du système d'exploitation ou pour envoyer la sortie à la console.

Quelle est l'utilisation de JVM?

La JVM a deux fonctions principales: permettre aux programmes Java de s’exécuter sur n’importe quel appareil ou système d’exploitation (connu sous le nom de principe «Écrire une fois, exécuter n’importe où») et gérer et optimiser la mémoire du programme.

Avantages et inconvénients

Les programmes Java sont correctement exécutés via JVM. Bytecode - un langage intermédiaire est utilisé pour compiler des programmes Java, puis exécuté via JVM. Chaque programme individuel qui est compilé en bytecode peut être exécuté par n'importe quelle plate-forme alimentée par JVM. Cela permet aux logiciels Java d'être plus efficaces et compatibles selon les différentes plates-formes informatiques concernées. La JVM présente quelques avantages et inconvénients notables que tout développeur doit peser soigneusement avant d'investir dans le développement Java.

1. Sécurité

Grâce aux trucs de sécurité de JVM, les programmeurs peuvent efficacement écrire des programmes Java sécurisés haut de gamme. Il permet aux ressources du système d'exploitation d'identifier les logiciels malveillants et contribue également à sa prévention en conséquence.

2. Performance

Les programmes Java qui s'exécutent sur une machine virtuelle Java sont susceptibles d'offrir une exécution plus lente par rapport aux programmes écrits en C ++. Cela est dû à l'optimisation du code qui repose excessivement sur différentes fonctionnalités spécifiques au système. De plus, le bytecode Java ne peut pas être optimisé pour un ensemble matériel spécifique, car il est neutre pour le système.

3. Exactitude

Correct est le programme qui fonctionne efficacement et répond au mieux aux attentes d'un utilisateur. Les fonctionnalités intégrées de JVM lui permettent de fonctionner correctement et sans erreurs.

Pourquoi devrions-nous utiliser JVM?

Malgré le code syntaxique Java, JVM peut s'exécuter sur différents programmes de langage. Peu de raisons pour lesquelles il est si largement utilisé et pourquoi l'utiliser sur différentes plates-formes sont énumérées ci-dessous:

Il utilise la mémoire de tas: la mémoire de tas est un composant de base qui est utilisé pour l'allocation dynamique de mémoire pour définir les classes et l'initialisation d'objet et puisque JVM prend en charge la mémoire de tas, il est largement accepté.

Assurer la sécurité de l'emplacement du code à distance: le cadre JVM est conçu de telle manière que l'application à distance est facilement exécutée. Cette théorie est suivie pour exécuter l'applet Java.

Conclusion

Le fait que JVM fonctionne sur plusieurs systèmes d'exploitation lui donne un coup de pouce dans le domaine technologique. En l'utilisant sur Windows, Linux et d'autres systèmes d'exploitation, il est activé pour transformer le bytecode indépendamment du matériel et du système d'exploitation à exécuter. En outre, sa capacité à offrir une sécurité à l'ordinateur hôte en sécurisant ses données et ses programmes est une autre raison pour laquelle la JVM a connu un tel succès dans le passé et continue de dominer à l'avenir.

Articles recommandés

Ceci a été un guide sur Qu'est-ce qu'une JVM (Java Virtual Machine). Ici, nous avons discuté des concepts de base avec la liste de l'architecture et des utilisations de JVM. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Meilleurs cadres Javascript
  2. Est orienté objet Python
  3. Applications de C ++ dans le monde réel
  4. Carrière dans ASP.NET
  5. JRE vs JVM | 8 principales différences avec (infographie)