La machine virtuelle Java (en anglais Java virtual machine, abr. JVM) est une machine virtuelle qui exécute des programmes compilés sous forme de bytecode Java.

Machine virtuelle Java - Spécification Java 7.

L'appareil est simulé par un logiciel spécifique à chaque plateforme ou couple (machine/système d’exploitation) et permet aux applications Java compilées en bytecode de produire les mêmes résultats quelle que soit la plate-forme, tant que celle-ci est pourvue de la machine virtuelle Java adéquate.

La JVM permet d'exécuter d'autres langages que le langage Java (Scala, Kotlin, ...), du moment qu'un compilateur transforme les expressions de cet autre langage en une série d'octets respectant le format binaire d'une classe Java.

La machine virtuelle exécute les instructions données par le bytecode contenu dans la classe Java en suivant le modèle de la pile : chaque niveau de pile contient les données propres à chaque opération.

Une spécification de Sun[1] décrit les fonctions et propriétés que doivent respecter toutes les machines virtuelles java. De plus, la plupart de ces machines comportent un ramasse-miettes (la notion est citée dans la spécification[2], mais sans être formellement rendue obligatoire), ou un compilateur à la volée.

Le compilateur Java faisant peu d'optimisations, c'est à la machine virtuelle de les faire, selon les objectifs propres à cette dernière.

HotSpot, la machine virtuelle d'Oracle

modifier

HotSpot est la machine la plus utilisée. Elle a été créée et réalisée par Sun, elle est aujourd'hui propriété d'Oracle[3], depuis que cette dernière a racheté Sun. Elle est gratuite, propriétaire jusqu'à la version 6 (stable) et libre à partir de la version 7.

Le 11 novembre 2006, Sun Microsystems a publié les sources de sa machine virtuelle HotSpot et de son compilateur javac sous licence GNU GPL.

La toute première version ne se comportait que comme un interpréteur. Cette approche était pénalisante, car l'interprète passe plus de temps à interpréter qu'à exécuter. Puis est apparue la compilation à la volée, qui traduit le bytecode en langage machine, et exécute ce langage machine. Ensuite la machine virtuelle est devenue capable de détecter les portions les plus fréquemment utilisées pour concentrer les optimisations sur elles. Elle a été dotée d'un profileur, et d'optimisations standards comme la mise à plat des boucles. Toutes ces opérations peuvent être faites en plusieurs passes, soit pour les améliorer progressivement, soit pour les annuler si elles se révèlent obsolètes[4].

Autres machines virtuelles Java

modifier

En développement

modifier

Abandonnées

modifier

Annexes

modifier

Liens internes

modifier

Liens externes

modifier

Références

modifier

📚 Artikel Terkait di Wikipedia

Machine virtuelle

la machine virtuelle Java de Sun Microsystems sont des machines virtuelles de haut niveau. La spécification technique de la machine virtuelle Java ou

Java Specification Requests

effectuer la traduction. Java Specification Requests (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. Certaines JSR sont

Java (langage)

Sun (en) Java SE Virtual Machine Garbage Collection Tuning Microsoft poussé à parler Java Libération - 26/12/2002 The Java Language Specification - 3.9.

Java (technique)

machine virtuelle (Java Virtual Machine), qui inclut un compilateur, ainsi que de nombreux outils visant à faciliter l'investissement du Web par Java

Plateforme Java

compilateur Java permet de convertir les codes source Java en bytecode Java (un langage intermédiaire destinée à la JVM (Java Virtual Machine ou machine virtuelle

Environnement d'exécution Java

détaillé : machine virtuelle Java. La machine virtuelle Java (abr. JVM pour Java Virtual Machine) est une simulation logicielle d'une véritable machine. La principale

Compilateur Java

Sun microsystems. Il s'agit des spécifications Java Language Specification et The Java Virtual Machine Specification. En plus de son travail de compilation

Java Card

fonctionnalités du langage Java et d’appliquer un modèle réduit de la JVM (Java Virtual Machine) appelé JCVM (Java Card Virtual Machine). En plus de fournir