Salut
ont dis par exemple :
JavaC : compilateur de source java.
java : interpréteur de byte code.
Quel la Différance Exactement entre un compilateur et interpréteur
Salut
ont dis par exemple :
JavaC : compilateur de source java.
java : interpréteur de byte code.
Quel la Différance Exactement entre un compilateur et interpréteur
Salut,
Un compilateur traduit un code dans un certain langage (comme le C, C++, Delphi, etc.) vers un langage plus facilement compréhensible par la machine (le programme en code natif). Le compilateur se charge également de toutes les vérifications du code (syntaxe, lexical, etc.), et une fois compilé, le programme peut être exécuté autant de fois que nécessaire. Par contreEnvoyé par amazircool
Ce code peut alors être exécuté très rapidement, mais devient presque indéchiffrable pour un humain. De plus sa portabilité est très limité car une application est destiné à fonctionner sur un certain système (Windows, Linux, MacOS, etc.) avec une certaine architecture (Intel x86, AMD64, PowerPC, etc.).
On distingue donc deux états pour l'application : le code source et l'application final destiné à être exécuté.
Un interpréteur quand à lui, effectue le même travail de vérification du code que le compilateur, mais ne génère pas le code natif dans un fichier afin de créer une application, mais interprète le code afin de l'exécuter à la volée. Ainsi on ne se retrouve plus qu'avec un seul état : le code source. C'est lorsqu'il est exécuté avec l'interpréteur que l'on obtient notre application (le code est lu à la volée et exécuté). Si cela peut apporter des performances moindres par rapport à une compilation normale (car on refait principalement les mêmes traitements que la compilation), cela permet une meilleure portabilité puisque la seule limite à l'exécution est la présence d'un interpréteur sur la machine cible. On peut prendre comme exemple le JavaScript, PHP, les shell-scripts, PERL, etc.
Java est un cas particulier, car il essaye de prendre le meilleur des deux.Envoyé par amazircool
Java est un langage compilé !
Le code source Java, lorsqu'il est compilé avec javac, donne ce qu'on appelle le bytecode (les fameux fichiers *.class). Toutefois, malgré qu'il soit proche d'un code natif, ce dernier est prévu pour fonctionner sur une machine qui n'existe pas (la machine virtuelle Java).
Java est un langage interprété (enfin presque) !
Ainsi, la machine virtuelle est un "interpréteur" de bytecode, et permet d'exécuter une application Java sur une machine. Ainsi les applications Java (tout comme les langages interprétés) peuvent être exécutées sur n'importe quel machine du moment que cette dernière possède une machine virtuelle.
Toutefois, si cela était totalement vrai dans les premières versions de Java, ce n'est plus tout à fait vrai actuellement...
En effet, depuis la version 1.2, la JVM inclut un compilateur JIT (Just In Time), qui peut compiler le code en natif à la volée, et bénéficie ainsi des meilleures optimisations possibles pour la machine hôte de l'application, ce qui permet des performances bien meilleures que les langages interprétés...
a++
Merci, réponse complet et compréhensif.
Natif vers mon cerveau![]()
Partager