È il java.exe programma la VM attuale? [duplicato]


Questa domanda ha già una risposta qui:

Il JDK viene fornito con java.exe (per Windows) programma. Puoi usarlo per avviare programmi dalla riga di comando.

Wikipedia dice che è il 'class loader' e 'un interprete per i file di classe'.

È questa la JVM in piena regola? È un JVM "più piccola e leggera"? E ' qualcos'altro?

Author: Aviv Cohn, 2014-09-26

3 answers

Una JVM esegue sia di tali attività, per definizione e requisito.

In un'implementazione matura, incluso HotSpot, una JVM fa molto di più includendo Compilazione just-In-Time (come ritenuto utile) - ma deve ancoracaricare e interpretare i file di classe e Java bytecode. Sapere questo dovrebbe alleviare la confusione sull'articolo usando "interprete"; spiega il compito concettuale e dovrebbe non essere inteso come più piccolo o leggero.

Cioè, java/javaw lancia la "JVM completa" in un ambiente Oracle/OpenJDK standard.

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

java.exe è solo un launcher VM. Crea una VM e la esegue. JVM situato nella jvm.dll (o libjvm.so su Linux).

Lavoro con OpenJDK (NON nel team OpenJDK) e posso dirti maggiori dettagli, se sei interessato.

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

java.exe alimenta i file di classe a JVM in modo che possa eseguire JIT e interpretare il codice. java.exe di per sé non è una VM, no. Ne lancia uno e fornisce tutti i dati necessari per questo.

Per compilare il codice, dovresti usare javac.exe.

Supponiamo di avere codice di classe Test.java, ora è necessario compilarlo:

javac Test.java
Il compilatore

Produrrà il file compilato Test.class, che contiene il bytecode JVM.

Ora, per eseguirlo su JVM, si esegue

java Test

Che trova la voce indicare i file .class disponibili e alimenta JVM con esso.

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