È il java.exe programma la VM attuale? [duplicato]
Questa domanda ha già una risposta qui:
- Totalmente confuso con java.exe 3 risposte
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?
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.
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.
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.