Publicité
La machine virtuelle Java (JVM) est un véritable compte-gouttes lorsque vous programmez en Java. Contrairement à ce que son nom indique, la machine virtuelle Java peut également être rencontrée en relation avec d'autres langages de programmation.
En général, il n'est pas nécessaire de savoir ce qu'est la machine virtuelle Java, ni même ce qu'elle fait, pour pouvoir programmer en Java. D'un autre côté, vous familiariser avec le fonctionnement interne d'une machine aide à améliorer votre compréhension et votre compréhension globale.
Cet article évoque l'idée de la machine virtuelle Java, ce qu'elle fait pour vous et certains des avantages et des inconvénients les plus importants. Bien que j'aie essayé de rester simple, et qu'il existe certainement une littérature plus avancée sur le sujet, une compréhension rudimentaire de Java et de la programmation est attendue.
Langues de haut niveau
La sémantique d'un langage de programmation est conçue pour être proche de notre langage naturel, tout en restant concise et facile à interpréter pour une machine. Comme vous le savez probablement, le langage de programmation est complètement différent du code machine, l'ensemble d'instructions qu'un ordinateur utilise pour construire et exécuter un programme. C'est ce que nous appelons
langues de haut niveau; un ou plusieurs niveaux d'abstraction du code machine.Avant de pouvoir s'exécuter, le code de haut niveau doit d'abord être interprété. De nombreuses interfaces de programmation sont compilées à l'avance (Compilation AOT) pour une plate-forme spécifique. Cela rend le programme plus efficace à l'exécution, mais beaucoup moins compatible avec différentes plates-formes. Java, en revanche, fonctionne avec un langage intermédiaire appelé Bytecode Java et le Machine virtuelle Java.
JVM & Java Bytecode
Lorsque votre projet Java se construit, il traduit le code source (contenu dans *.Java fichiers source) vers le bytecode Java (le plus souvent contenu dans des fichiers * .class). Cela rapproche votre code de haut niveau du code machine, mais pas encore tout à fait. Ce bytecode est une collection d'instructions compactes; plus facile à interpréter pour une machine, mais moins lisible.
Lorsque vous exécutez une application Java sur votre ordinateur, votre téléphone portable ou toute autre plate-forme compatible Java, vous transmettez essentiellement ce bytecode Java à la machine virtuelle Java. L'interpréteur de la machine virtuelle Java commence généralement à compiler l'intégralité du bytecode au moment de l'exécution, en suivant les principes de ce que l'on appelle compilation juste à temps. Cela entraîne un délai typique, bien que souvent léger, lors de l'ouverture d'une application Java, mais améliore généralement les performances du programme par rapport à compilation interprétée.
Le principal avantage de ce système est la compatibilité accrue. Étant donné que vos applications s'exécutent sur une machine virtuelle au lieu d'être directement sur votre matériel, le développeur peut programmer et construire leur application une fois, qui peut ensuite être exécutée sur chaque appareil avec une implémentation de Java Virtual Machine. Ce principe a donné naissance au slogan Java: «Écrivez une fois, courez partout.”
Pro: compatibilité et sécurité accrue
Outre la compatibilité du code, la machine virtuelle Java présente d'autres avantages. L'un des plus importants d'entre eux est la sécurité relative des programmes Java grâce à la machine virtuelle Java. Sécurité, ce qui signifie qu'un programme exécuté sur une machine virtuelle est beaucoup moins susceptible de perturber le système d'exploitation de l'utilisateur ou de corrompre les fichiers de données en cas d'erreur.
Con: différentes implémentations et débogage JVM
L'une des principales critiques exprimées contre la compatibilité du code et la machine virtuelle Java est due aux nombreuses implémentations différentes de cette dernière. Vous voyez, la machine virtuelle Java n'est pas un logiciel. Oracle, les propriétaires de Java, ont leur implémentation de la machine virtuelle Java, mais d'autres personnes peuvent faire la leur si elle satisfait à diverses revendications pratiques et contractuelles.
Ces différentes implémentations signifient que votre code peut s'exécuter sans problème sur une machine virtuelle Java, mais se bloquer et graver sur une autre. Bien que, dans la pratique, vous puissiez écrire votre code une fois et l'exécuter partout, du code plus complexe parfois doit encore être débogué dans différentes implémentations de machine virtuelle Java pour garantir un fonctionnement correct.
Avez-vous une expérience de travail avec la machine virtuelle Java? Si oui, y a-t-il quelque chose que j'ai manqué ici qui devrait être mentionné?
Crédit d'image: Michaelaw, Dcoetzee
Je suis écrivain et étudiant en informatique de Belgique. Vous pouvez toujours me faire une faveur avec une bonne idée d'article, une recommandation de livre ou une idée de recette.