Est java.programme exe la VM réelle? [dupliquer]
Cette question a déjà une réponse ici:
- Totalement confondu avec java.exe 3 réponses
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?
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.
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é.
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.