Machine virtuelle Java

Machine virtuelle Java - Spécification Java 7.

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.

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

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 , 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

En développement

Abandonnées

Annexes

Liens internes

Liens externes

Références

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.