Différence entre un interpréteur Java et JVM
J'ai entendu des gens dire "une JVM est nécessairement un interprète de Java, mais un interprète de Java n'est pas nécessairement une JVM". Est-ce vrai?
Je veux dire, est-il une différence entre un interprète de Java et la JVM?
source d'informationauteur Happy Mittal
Vous devez vous connecter pour publier un commentaire.
Oui, il y a une différence.
De la machine virtuelle Java:
Un logiciel de "moteur d'exécution" qui en toute sécurité et de façon compatible exécute les octets de codes dans les fichiers de classe Java sur un microprocesseur (que ce soit dans un ordinateur ou un autre appareil électronique).
Interprète de Java:
Un module alternativement décode et exécute chaque instruction dans certains corps de code. L'interprète de Java décode et exécute le bytecode pour la machine virtuelle Java.
L'interprète de Java est en fait une partie de la JVM. La machine virtuelle n'est pas seulement l'exécution du bytecode, il a beaucoup de tâches à faire. Qui à part entière de l'environnement est appelée une JVM.
Vérifier:
La Machine Virtuelle Java
Java SE HotSpot un coup d'Œil
Il suffit de mettre, une JVM interprète le bytecode et un interprète de Java interprète Java. Ils sont différents parce que le bytecode et Java sont des langues différentes.
Bytecode est un langage de bas niveau, comme le code machine. Le pseudo-code est destiné à être exécuté par un programme appelé interpréteur de bytecode, également appelé de la machine virtuelle. Le but de bytecode est facile à interpréter.
Java est un langage de niveau plus élevé, comme en C ou en Python. Ces langues peuvent être interprété de manière trop: il vous suffit d'écrire un programme qui permet d'exécuter leur code. Il n'a pas à impliquer le bytecode. C'est juste que les langages de niveau supérieur sont plus difficiles à interpréter directement.
Java est généralement "interprété" par la traduction du programme en Java en bytecode programme de première. Puis le de la Machine Virtuelle Java (JVM) exécute le bytecode.
Mais vous pourriez interpréter n'importe quelle langue cette façon. La JVM peut interpréter d'autres langues, si vous avez traduit dans le droit du bytecode.
Vous pouvez également interpréter un langage de programmation directement, sans aucun bytecode. Certains interpréteurs de BASE il suffit de regarder pour les instructions de BASE dans le code source, et de les exécuter. Elles ne font pas de faire un nouveau programme dans une langue différente de la première. Si vous avez fait la même chose pour Java, il serait un interprète de Java, mais pas une JVM.
Pour l'un, le code de (théoriquement) de n'importe quelle langue peut être compilée en bytecode JVM pour permettre l'exécution à l'intérieur de cet environnement. Un interprète de Java est seulement en mesure d'exécuter le code Java.
L'appel d'une JVM Java interprète est incorrect. La JVM est un compilateur JIT qui compile et s'exécute byte-code. D'autres langues peut être compilé en byte-code ciblées pour la JVM. Article de wikipédia en détaillant ces langues.
Comme je le comprends...
Un interprète de Java exécute les lignes de code octet comme des commandes à exécuter. Le byte-code est exécuté.
La JVM prend le byte code et génère du code machine. Le byte-code est compilé en code machine, et la machine de code est exécuté.
de la machine virtuelle java est un processeur virtuel et un interprète de java est java outil.grâce