1
Derrière toi …
Une machine virtuelle !
Yann-Gaël Guéhéneuc
guehene@emn.fr
École des Mines
de Nantes, France Object Technology
International Inc., Canada
2/21
D’où ça vient?
nCalculatrice
Machine de Turing
1936
λ-calcul et π-calcul
1934
Machine à registres
Machine à piles
2
3/21
Comment ?
nTuring
Un ensemble fini d’états, d’instructions, et
un alphabet fini
nMachine à registre
Des registres, un chemin de donnée, un
contrôleur
nMachine à pile
Une pile, des opérations, un contrôleur (?)
4/21
Qu’est-ce que c’est ?
nUne machine virtuelle c’est :
Un programme qui s’interpose entre un
programme et un système d’exploitation
Un interpréteur qui interprète un
programme pour un système d’exploitation
Un compilateur qui compile à la volée un
programme pour un système d’exploitation
3
5/21
En bref ?
nUne machine virtuelle c’est :
nUne machine virtuelle ce n’est pas :
Inutile
Ordinateur
Système d'exploitation
Machine virtuelle
Programme
Machine
virtuelle
Ordinateur
Programme
Système
d'exploitation
6/21
Pourquoi ?
nlangages + msystèmes d’exploitation =
n* mcompilateurs
nlangages + 1machine virtuelle + m
systèmes d’exploitation =
ncompilateurs
(+ mmachines virtuelles gratuites…)
4
7/21
Et aujourd’hui ?
nLa machine virtuelle de Java :
Par méthode :
Un cadre
Par classe :
Un paquet
Par threads :
Une pile
Un registre
Pour tous les threads :
Un tas
Une zone « méthodes »
Une pile « méthodes
natives »
8/21
Et ce n’est pas tout ?
nLa machine virtuelle de Java :
Sandbox
Class Loader
Garbage collector
Security
Java Native Interface
Java Platform Debug Architecture
Java Virtual Machine Profiler Interface
5
9/21
JNI (1/3)
nJava Native Interface
Interface de la JVM vers l’extérieur en C
Interface de l’extérieur vers la JVM en C
10/21
JNI (2/3)
package emn.course.vm;
public final class GCD_C {
public native int computeGCD(int a, int b);
static {
System.loadLibrary("GCD_C_Impl");
}
public static void main(String[] args) {
GCD_C myJNICallToGCD = new GCD_C();
System.out.println(myJNICallToGCD.computeGCD(6, 18));
}
}
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !