Qu'est-ce que la machine virtuelle Java et comment ça marche?

Bien qu'il ne soit pas strictement nécessaire de savoir que cela fonctionne pour programmer en Java, il est toujours bon à savoir car cela peut vous aider à devenir un meilleur programmeur.

Bien qu'il ne soit pas strictement nécessaire de savoir que cela fonctionne pour programmer en Java, il est toujours bon à savoir car cela peut vous aider à devenir un meilleur programmeur.
Publicité

La machine virtuelle Java (JVM) est un dropper de nom réel 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 Java Virtual Machine, ou 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 brosse 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 y ait certainement plus de littérature 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 concis et facile à interpréter pour une machine. Comme vous le savez probablement, le langage de programmation est totalement différent du code machine, l'ensemble d'instructions qu'un ordinateur utilise pour construire et exécuter un programme. Nous appelons cela des langages 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é. Un grand nombre d'interfaces de programmation compilent à l'avance ( compilation AOT ) pour une plate-forme spécifique. Cela rend le programme plus efficace lors de l'exécution, mais beaucoup moins compatible avec différentes plates-formes. Java, en revanche, fonctionne avec un langage intermédiaire appelé Java bytecode et Java Virtual Machine .

JVM & Java Bytecode

Lors de la génération de votre projet Java, il traduit le code source (contenu dans les fichiers sources * .java ) en un bytecode Java (le plus souvent contenu dans les 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 pour une machine à interpréter, 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 passez essentiellement ce bytecode Java à la machine virtuelle Java. L'interpréteur dans la machine virtuelle Java commence généralement à compiler le bytecode entier à l'exécution, en suivant les principes de la compilation dite juste à temps . Cela rend 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 à la compilation interprétée .

machine virtuelle Java

Le principal avantage de ce système est la compatibilité accrue. Comme vos applications s'exécutent sur une machine virtuelle plutôt que directement sur votre matériel, le développeur peut programmer et construire 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 Java: " Écrivez une fois, courez partout ".

Pro: Compatibilité et sécurité accrue

En dehors de la compatibilité de code, la machine virtuelle Java a d'autres avantages. L'un des plus importants d'entre eux est la sécurité relative des programmes Java à la suite de la machine virtuelle Java. Sécurité, ce qui signifie qu'un programme s'exécutant sur une machine virtuelle risque beaucoup moins 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 JVM et débogage

L'une des principales critiques formulé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 elles satisfont à diverses revendications pratiques et contractuelles.

Ces différentes implémentations signifient que votre code peut fonctionner correctement sur une machine virtuelle Java, mais se bloquer et graver sur une autre. Bien que, dans la pratique, vous puissiez écrire votre code une seule fois et l'exécuter partout, un code plus complexe doit parfois être débogué dans différentes implémentations Java Virtual Machine pour garantir un fonctionnement correct.

Avez-vous une expérience de travail avec Java Virtual Machine? Si oui, y a-t-il quelque chose que j'ai manqué ici qui devrait être mentionné?

Crédit d'image: Michaelaw, Dcoetzee

In this article