vignette|Machine virtuelle Java - Spécification Java 7
La machine virtuelle Java (en anglais Java virtual machine, abr. JVM) est un appareil informatique fictif 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.
Une machine virtuelle Java permet d'exécuter d'autres langages que le langage Java, 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 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, 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
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, 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.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
This course provides an introduction to Distributed Ledger Technology (DLT), blockchains and cryptocurrencies, and their applications in finance and banking and draws the analogies between Traditional
Les étudiants perfectionnent leurs connaissances en Java et les mettent en pratique en réalisant un projet de taille conséquente. Ils apprennent à utiliser et à mettre en œuvre les principaux types de
Ce cours aborde les concepts fondamentaux de la programmation et de la programmation orientée objet (langage JAVA). Il permet également de se familisarier avec un environnement de développement inform
Python (prononcé ) est un langage de programmation interprété, multiparadigme et multiplateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
Ruby est un langage de programmation libre. Il est interprété, orienté objet et multi-paradigme. Le langage a été standardisé au Japon en 2011 (JIS X 3017:2011), et en 2012 par l'Organisation internationale de normalisation (ISO 30170:2012). Yukihiro « Matz » Matsumoto est le créateur de Ruby. Frustré par son expérience en développement Smalltalk et Lisp, il commence la conception d'un nouveau langage en 1993 sous Emacs, puis publie une première version en 1995 sous licence libre. Il enchaîne depuis les nouvelles versions.
Perl est un langage de programmation créé par Larry Wall en 1987 pour traiter facilement de l'information de type textuel. Ce langage, interprété, s'inspire des structures de contrôle et d'impression du langage C, mais aussi de langages de scripts sed, awk et shell (sh). Il prend en charge les expressions régulières dans sa syntaxe même, permettant ainsi directement des actions sur l'aspect général de séquences de texte. Une association, The Perl Foundation, s'occupe de son devenir, et entre autres de son éventuel passage de la version 5.
Explore les applications financières des blockchains, y compris DeFi, les protocoles de prêt, les DAO, les prêts flash et les solutions d'assurance basées sur des jetons.
Explore les applications financières des blockchains, couvrant la définition, l'histoire, Ethereum, la finance décentralisée, les contrats intelligents, les jetons, les méthodes d'évaluation, les défis de la double dépense, les signatures numériques, et les fonctions de hachage cryptographique.
We present syntax rewriting rules that translate Scala 2 code into Scala 3. Two major syntactic changes are introduced: new control structure syntax and significant indentation. We describe the design and the implementation of these rules and evaluate thei ...
2024
, , , ,
Computing servers have played a key role in developing and processing emerging compute-intensive applications in recent years. Consolidating multiple virtual machines (VMs) inside one server to run various applications introduces severe competence for limi ...
2024
This semester project report describes a prototype tracing tool that records the behavior of a Java program during its execution. It explains the two methods that were attempted to implement the tool, one using the Java debug interface, which gave poor res ...