« Programmation Java/Machine virtuelle » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎Gestionnaire de mémoire : mise en forme, francisation
m →‎Environnement d'exécution : francisation, mise en forme
Ligne 16 :
=== Environnement d'exécution ===
 
Le langage javaJava est un langage orienté objet qui doit être compilé. MaisCependant, le compilateur javaJava ne produit pas directement un fichier exécutable, mais du '''code intermédiaire''' sous la forme d'un on plusieurs fichiers dont l'extension est <code>.class</code> et; ce code intermédiaire est appelé '''''bytecode'''''. Pour exécuter le programme, il faut utiliser la machine virtuelle Java qui va '''interpréter''' le bytecodecode intermédiaire en vue de l'exécution de programme. Il ne s'agit pas d'une compilation ''normale'' car le compilateur ne produit pas du code compréhensible directement par le microprocesseur, ni d'un langage ''interprété'' car il y a tout de même la notion de compilation mais une situation intermédiaire entre un langage interprété et un langage complètement compilé.
 
Il ne s'agit pas d'une compilation normale car le compilateur ne produit pas du code compréhensible directement par le microprocesseur, ni d'un langage interprété car il y a tout de même la notion de compilation mais une situation intermédiaire entre un langage interprété et un langage complètement compilé.
En d'autres termes, un programme java, une fois compilé en bytecode, n'est compréhensible que par la machine virtuelle, qui va traduire à la volée (interprétation) les instructions exécutées en code compréhensible par la machine physique.
 
En d'autres termes, un programme javaJava, une fois compilé en bytecodecode intermédiaire, n'est compréhensible que par la machine virtuelle, qui va traduire à la volée (interprétation) les instructions exécutées en code compréhensible par la machine physique.
 
Les machines virtuelles de Sun ultérieures à 1.2 contiennent un interpréteur capable d'optimiser le code appellé HotSpot.
Ligne 24 ⟶ 26 :
L'interpréteur effectue plusieurs tâches :
 
* vérification du code intermédiaire ;
*Vérification du bytecode
* traduction en code natif (spécifique à la plateforme, au système d'exploitation) ;
*Traduction en code natif
* optimisation.
*Optimisation
 
Outre un interpréteur, l'environnement d'exécution fournit également :
 
* un noyau multitâche pour les machines virtuelles fonctionnant sur des systèmes monotâches (''(green virtual machines)'') ;
* un "« bac à sable" (» ''(sandbox)'') pour l'exécution de processus distants.
 
== Avantage de l'utilisation de la machine virtuelle ==