Qu’est-ce que la JVM ? Présentation de la machine virtuelle Java

Cheryl Allison

La device virtuelle Java est un programme dont le but est d’exécuter d’autres programmes. C’est une idée basic qui se présente également comme l’un de nos in addition grands exemples de codage kung-fu. La JVM a bouleversé le statu quo pour son époque et proceed de soutenir l’innovation en matière de programmation aujourd’hui.

Que fait la 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 (principe connu sous le nom de “écrire une fois, exécuter n’importe où”), et gérer et optimiser la mémoire du programme. Lorsque Java est sorti en 1995, tous les programmes informatiques étaient écrits sur un système d’exploitation spécifique et la mémoire du programme était gérée par le développeur du logiciel. La JVM a été une révélation.

Javaworld > Série d’explications JVM / JDK / JRE > Machine virtuelle Java > Présentation” width=”1200″ height=”800″ data-imageid=”100790558″ information-license=”IDG” knowledge-unique=”https://images.idgesg.internet/illustrations or photos/short article/2019/03/javaworld_jvm_jdk_jre_explainer_java_digital_machine_debug_and_optimize_3x2_overview_update-100790558-significant.jpg?auto=webp&high-quality=85,70″ course=”lazy” loading=”lazy”/></a> <small class=JavaWorld / IDG

Determine 1. Une vue de haut niveau de la JVM.

Avoir une définition method pour la JVM est utile, et il y a aussi une façon quotidienne dont les développeurs de logiciels y pensent. Décomposons cela :

  • Définition procedure: La JVM est la spécification d’un programme logiciel qui exécute du code et fournit l’environnement d’exécution pour ce code.
  • Définition de tous les jours: La JVM est la façon dont nous exécutons nos programmes Java. Nous configurons les paramètres, puis comptons sur la JVM pour gérer les ressources du programme pendant l’exécution.

Lorsque les développeurs parlent de JVM, nous entendons généralement le processus exécuté sur une equipment, en particulier un serveur, qui représente et contrôle l’utilisation des ressources pour une application Java. Comparez cela à la Spécification JVMqui décrit les circumstances requises pour créer un programme qui exécute ces tâches.

Langages JVM

Alors qu’elle était autrefois réservée à Java, la JVM est suffisamment versatile et puissante pour prendre en charge de nombreux autres langages aujourd’hui. Parmi les as well as populaires figurent Scala, utilisé pour les programs simultanées en temps réel, et Groovy, un langage de script à typage dynamique. Un autre exemple significant est Kotlin, qui offre un mélange de kinds orientés objet et fonctionnels. Tout cela est considéré Langages JVMce qui signifie que, même s’il ne code pas en Java, le programmeur conserve l’accès au vaste écosystème de bibliothèques Java.

Collecte des ordures

L’interaction la furthermore courante avec une JVM en cours d’exécution consiste à vérifier l’utilisation de la mémoire dans le tas et la pile. L’ajustement le plus courant est le réglage des performances des paramètres de mémoire de la JVM.

Avant Java, toute la mémoire du programme était gérée par le programmeur. En Java, la mémoire programme est gérée par la JVM. La JVM gère la mémoire by means of un processus appelé collecte des ordures, qui identifie et élimine en permanence la mémoire inutilisée dans les programmes Java. La récupération de area se produit à l’intérieur d’une JVM en cours d’exécution.

Au début, Java a fait l’objet de nombreuses critiques pour ne pas être aussi « proche du métal » que C++, et donc pas aussi rapide. Le processus de collecte des ordures était particulièrement controversé. Depuis lors, une variété d’algorithmes et d’approches ont été proposés et utilisés pour le ramasse-miettes. Grâce à un développement et à une optimisation constants, la récupération de spot s’est considérablement améliorée. (La gestion automatique de la mémoire a également fait son chemin et est une caractéristique commune à d’autres langages modernes comme JavaScript et Python.)

Les trois events de la JVM

On pourrait dire qu’il y a trois features dans la JVM : spécification, implémentation et occasion. Considérons chacun d’eux.

La spécification JVM

Tout d’abord, la JVM est une spécification du logiciel. De manière quelque peu circulaire, la spécification JVM souligne que ses détails d’implémentation sont ne pas défini dans le cahier des costs, afin de permettre un highest de créativité dans sa réalisation :

Pour implémenter correctement la device virtuelle Java, il vous suffit de savoir lire le class structure de fichier et effectuer correctement les opérations qui y sont spécifiées.

JS Bach a un jour décrit la création musicale de la même manière :

Tout ce que vous avez à faire est de toucher la bonne touche au bon second.

Ainsi, tout ce que la JVM a à faire est d’exécuter correctement les programmes Java. Cela semble simple, et peut même sembler very simple de l’extérieur, mais c’est une entreprise colossale, surtout compte tenu de la puissance et de la flexibilité du langage Java.

Implémentations JVM

L’implémentation de la spécification JVM aboutit à un programme logiciel réel, qui est une implémentation JVM. En fait, il y a beaucoup Implémentations JVM, à la fois open up supply et propriétaire. OpenJDK Level chaud est l’implémentation de référence de la JVM. Il reste l’une des bases de code les moreover éprouvées au monde.

HotSpot est peut-être la JVM la in addition couramment utilisée, mais ce n’est en aucun cas la seule. Une autre implémentation intéressante et populaire est GraalVM qui offre des performances élevées et prend en demand d’autres langages traditionnellement non JVM comme C ++ et Rust by way of le Spécification LLVM. Il existe également des JVM spécifiques à un domaine comme la JVM de robotique embarquée, LeJOS

Typiquement, vous télécharger et installer la JVM en tant que partie groupée d’un Environnement d’exécution Java (JRE). Le JRE est la partie sur disque de Java qui génère une JVM en cours d’exécution.

Une occasion JVM

Une fois la spécification JVM implémentée et publiée en tant que produit logiciel, vous pouvez la télécharger et l’exécuter en tant que programme. Ce programme téléchargé est une instance (ou une model instanciée) de la JVM.

La plupart du temps, lorsque les développeurs parlent de “JVM”, nous faisons référence à une occasion JVM exécutée dans un environnement de développement ou de output de logiciels. Vous pourriez dire : “Hey Anand, quelle quantité de mémoire la JVM utilise-t-elle sur ce serveur ?” ou, “Je n’arrive pas à croire que j’ai créé un appel circulaire et qu’une erreur de débordement de pile a planté ma JVM. Quelle erreur de débutant !”

Comment la JVM demand et exécute les fichiers de classe

Nous avons parlé du rôle de la JVM dans l’exécution des programs Java, mais comment remplit-elle sa fonction ? Pour exécuter des purposes Java, la JVM dépend du chargeur de classe Java et d’un moteur d’exécution Java.

Le chargeur de lessons Java

Tout en Java est une classe, et toutes les programs Java sont construites à partir de classes. Une application peut comprendre une classe ou des milliers. Pour exécuter une application Java, une JVM doit charger des fichiers .course compilés dans un contexte, tel qu’un serveur, où ils sont accessibles. Une JVM dépend de son chargeur de classe pour exécuter cette fonction.

Lorsque vous tapez java classfilevous dites: démarrez une JVM et chargez-y la classe nommée.

La Chargeur de classe Java est la partie de la JVM qui cost les classes en mémoire et les rend disponibles pour l’exécution. Les chargeurs de classe utilisent des techniques telles que le chargement différé et la mise en cache pour rendre le chargement de classe aussi efficace que doable. Cela dit, le chargement de classe n’est pas le casse-tête épique qu’est (disons) la gestion de la mémoire d’exécution moveable, donc les procedures sont relativement simples.

Chaque machine virtuelle Java comprend un chargeur de classe. La spécification JVM décrit des méthodes typical pour interroger et manipuler le chargeur de classe lors de l’exécution, mais les implémentations JVM sont responsables de la réalisation de ces fonctionnalités. Du issue de vue du développeur, le mécanisme sous-jacent du chargeur de classe est une boîte noire.

Le moteur d’exécution

Une fois que le chargeur de classe a terminé son travail de chargement des lessons, la JVM begin à exécuter le code dans chaque classe. La moteur d’exécution est le composant JVM qui gère cette fonction. Le moteur d’exécution est essentiel au fonctionnement de la JVM. En fait, à toutes fins pratiques, il est l’instance JVM.

L’exécution de code implique la gestion de l’accès aux ressources système. Le moteur d’exécution JVM se situe entre le programme en cours d’exécution, avec ses demandes de ressources de fichiers, de réseau et de mémoire, et le système d’exploitation, qui fournit ces ressources.

Les ressources système peuvent être divisées en deux grandes catégories : la mémoire et tout le reste. Rappelez-vous que la JVM est responsable de l’élimination de la mémoire inutilisée et que la récupération de position est le mécanisme qui effectue cette élimination. La JVM est également responsable de l’allocation et de la maintenance des structure référentielle que le développeur tient pour acquis. Par exemple, le moteur d’exécution de la JVM est chargé de prendre quelque selected comme le new mot-clé en Java et en le transformant en une demande d’allocation de mémoire spécifique au système d’exploitation.

Au-delà de la mémoire, le moteur d’exécution gère les ressources pour l’accès au système de fichiers et les E/S réseau. Étant donné que la JVM est interopérable entre les systèmes d’exploitation, ce n’est pas une tâche facile. En in addition des besoins en ressources de chaque application, le moteur d’exécution doit être réactif à chaque environnement de système d’exploitation. C’est ainsi que la JVM est able de gérer les demandes dans la nature.

Évolution de la JVM : passé, présent, futur

Étant donné que la JVM est un environnement d’exécution bien connu avec une configuration, une surveillance et une gestion standardisées, elle convient parfaitement au développement conteneurisé à l’aide de systems telles que Docker et Kubernetes. Cela fonctionne également bien pour la plate-forme en tant que support (PaaS), et il existe une variété de sans serveur approches. En raison de tous ces facteurs, la JVM est bien adaptée aux architectures de microservices.

Une autre fonctionnalité importante à l’horizon est Project Loom, qui cherche à introduire des threads virtuels dans la JVM. Les threads virtuels sont capables de simultanéité à une abstraction additionally élevée au-dessus des processus du système d’exploitation. Les threads virtuels sont capables de partager de la mémoire entre eux pour des améliorations potentiellement énormes des idiomes de codage et des performances.

Conclusion

En 1995, la JVM a introduit deux principles révolutionnaires qui sont depuis devenus la norme pour le développement de logiciels modernes : « Écrire une fois, exécuter n’importe où » et la gestion automatique de la mémoire. L’interopérabilité logicielle était un idea audacieux à l’époque, mais peu de développeurs aujourd’hui y penseraient à deux fois. De même, alors que nos ancêtres ingénieurs devaient gérer eux-mêmes la mémoire programme, ma génération a grandi avec le ramasse-miettes.

Nous pourrions dire que James Gosling et Brendan Eich ont inventé la programmation moderne, mais des milliers d’autres ont affiné et développé leurs idées au cours des décennies suivantes. Alors que la machine virtuelle Java était à l’origine réservée à Java, elle a aujourd’hui évolué pour prendre en cost de nombreux langages de script et de programmation, notamment Scala, Groovy et Kotlin. Pour l’avenir, il est difficile de voir un avenir où la JVM ne sera pas une partie importante du paysage du développement.

Copyright © 2022 IDG Communications, Inc.

Leave a Reply

Next Post

Comment changer d'objectif d'exercice sur Apple Watch ?

L’Apple View est un outstanding moyen de changer votre vie en matière de health and fitness. Le fait que vous puissiez réellement suivre vos mesures en tant que calories brûlées, horaires, fréquence cardiaque et autres tendances qui accompagnent l’Apple Enjoy vous donnera un meilleur aperçu de la santé. Dans cet […]