Qu'est-ce que la machine virtuelle Java et comment fonctionne-t-il?
La machine virtuelle Java (JVM) est un véritable compte-gouttes lorsque vous programmez en Java. Contrairement à ce que son nom l'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'autre part, se familiariser avec le fonctionnement interne d'une machine contribue à améliorer votre compréhension et votre compréhension globale..
Cet article passe en revue l’idée de la machine virtuelle Java, ce qu’elle fait pour vous et certains des plus importants avantages et inconvénients. Bien que j'aie essayé de garder les choses simples, et que la littérature sur le sujet soit certainement plus avancée, 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 totalement différent du code machine, du jeu d’instructions qu’un ordinateur utilise pour construire et exécuter un programme. On appelle ça langues de haut niveau; un ou plusieurs niveaux d'abstraction à partir du code machine.
Avant de pouvoir fonctionner, le code de haut niveau doit d'abord être interprété. De nombreuses interfaces de programmation sont compilées à l’avance (AOT compilation) pour une plate-forme spécifique. Cela rend le programme plus efficace au moment de 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.
Bytecode JVM & Java
Lorsque votre projet Java est construit, il traduit le code source (contenu dans *.Java source) en 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 un ensemble d'instructions compactes. plus facile à interpréter par 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ète de la machine virtuelle Java commence généralement par compiler le bytecode complet au moment de l’exécution, en suivant les principes de ce que l’on appelle compilation juste à temps. Cela donne le 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 et non directement sur votre matériel, le développeur peut programmer et créer son application une seule fois, qui peut ensuite être exécutée sur chaque périphérique avec une implémentation de la machine virtuelle Java. Ce principe a donné naissance au slogan de Java: “Ecrire une fois, courir 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 est la sécurité relative des programmes Java résultant de 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 de JVM
L’une des principales critiques formulées à l’égard de la compatibilité du code et de 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 le leur si cela répond à diverses revendications pratiques et contractuelles..
Ces différentes implémentations signifient que votre code peut s'exécuter correctement sur une machine virtuelle Java, mais se bloquer et se graver sur une autre. Bien que, dans la pratique, vous puissiez écrire votre code une fois et l'exécuter partout, des codes plus complexes doivent parfois être débogués dans différentes implémentations de la machine virtuelle Java pour garantir un fonctionnement correct..
Avez-vous déjà travaillé 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
En savoir plus sur: Java, Programmation.