Est java.programme exe la VM réelle? [dupliquer]


Cette question a déjà une réponse ici:

Le JDK est livré avec le java.programme exe (pour Windows). Vous pouvez l'utiliser pour démarrer des programmes à partir de la ligne de commande.

Wikipedia dit que c'est le "chargeur de classe" et "un interpréteur pour les fichiers de classe".

Est-ce la JVM à part entière? Est-il un JVM "plus petite et légère"? Est-ce autre chose?

Author: Aviv Cohn, 2014-09-26

3 answers

Une JVM effectue les deux de ces tâches, par définition et exigence.

Dans une implémentation mature, y compris HotSpot, une JVM fait beaucoup plus, y compris Compilation juste à temps (comme jugé utile)-mais elle doit toujours charger et interpréter les fichiers de classe etbytecode Java . Savoir cela devrait atténuer la confusion au sujet de l'article utilisant "interpreter"; il explique la tâche conceptuelle et devrait pas être pris pour signifier plus petit ou léger.

C'est-à-dire, java/javaw lancements la "JVM complète" dans un environnement Oracle/OpenJDK standard.

 8
Author: user2864740, 2017-05-23 11:49:36

java.exe est juste un lanceur de VM. Il crée une machine virtuelle et l'exécute. JVM situé dans la jvm.dll (ou libjvm.so sous Linux).

Je travaille avec OpenJDK (PAS dans l'équipe OpenJDK) et je peux vous dire plus de détails, si vous êtes intéressé.

 7
Author: Kastaneda, 2014-09-26 08:33:54

java.exe alimente vos fichiers de classe vers JVM afin qu'il puisse effectuer JIT et interpréter le code. java.exe en soi n'est pas une machine virtuelle, non. Il en lance un et fournit toutes les données nécessaires.

Pour compiler votre code, vous devez utiliser javac.exe.

Supposons que vous ayez Test.java code de classe, maintenant vous devez le compiler:

javac Test.java
Le compilateur

Produira le fichier compilé Test.class, qui contient le bytecode JVM.

Maintenant, pour l'exécuter sur JVM, vous exécutez

java Test

Qui trouve l'entrée pointez dans les fichiers .class disponibles et alimentez la JVM avec.

 -1
Author: GuardianX, 2014-09-26 10:02:17