Qual è la differenza tra java
, javaw
e javaws
?
Ho scoperto che sotto Windows viene iniziata la maggior parte di Java javaw
.
Qual è la differenza tra java
, javaw
e javaws
?
Ho scoperto che sotto Windows viene iniziata la maggior parte di Java javaw
.
Risposte:
Vedi documentazione per:
java
comando 1 / javaw
comando 2
- Lo
java
strumento avvia un'applicazione Java. Lo fa avviando un ambiente runtime Java, caricando una classe specificata e invocando ilmain
metodo di quella classe .- Il
javaw
comando è identico ajava
, tranne per il fatto chejavaw
non esiste una finestra della console associata. Utilizzarejavaw
quando non si desidera che venga visualizzata una finestra del prompt dei comandi.
javaws
comando , il " comando Java Web Start "
Il
javaws
comando avvia Java Web Start, che è l'implementazione di riferimento di Java Network Launching Protocol (JNLP). Java Web Start avvia le applicazioni / applet Java ospitate su una rete.
Se viene specificato un file JNLP,javaws
verrà avviata l'applicazione / applet Java specificata nel file JNLP.
Il programma dijavaws
avvio ha una serie di opzioni supportate nella versione corrente. Tuttavia, le opzioni potrebbero essere rimosse in una versione futura.
Vedi anche Note sulla versione di JDK 9 API, funzionalità e opzioni obsolete :
Le tecnologie di distribuzione Java sono obsolete e verranno rimosse in una versione futura
Applet Java e funzionalità WebStart, tra cui l'API applet, il plug-in Java, Java Applet Viewer, JNLP e Java Web Start, incluso lojavaws
strumento , sono tutti deprecati in JDK 9 e verranno rimossi in una versione futura.
Giava: esecutore dell'applicazione Java associato a una console per visualizzare output / errori
javaw: ( Java windowed ) esecutore dell'applicazione non associato alla console. Quindi nessuna visualizzazione di output / errori. Può essere utilizzato per inviare silenziosamente l'output / errori ai file di testo. Viene utilizzato principalmente per avviare applicazioni basate sulla GUI.
javaws: ( Java web start ) per scaricare ed eseguire le applicazioni web distribuite. Ancora una volta, nessuna console è associata.
Tutti fanno parte di JRE e utilizzano la stessa JVM.
javaw
dovrebbe essere nel mio PERCORSO? (Non lo è)
java.exe è associato alla console, mentre javaw.exe non ha alcuna associazione del genere. Pertanto, quando viene eseguito java.exe , si apre automaticamente una finestra del prompt dei comandi in cui vengono visualizzati i flussi di output e di errore.
Il comando javaw è identico a java, tranne per il fatto che javaw non ha una finestra della console associata. Utilizzare javaw quando non si desidera visualizzare una finestra del prompt dei comandi. Il programma di avvio javaw visualizza una finestra con informazioni di errore in caso di errore.
E javaws è per applicazioni Java Web Start, applet o qualcosa del genere, sospetto.
Ho verificato che il reindirizzamento dell'output funzioni con javaw
:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
Significa che se l'applicazione Java stampa qualcosa tramite System.out o System.err, viene scritta in quei file, come anche con l'uso di Java (senza w
). Soprattutto all'avvio java
, JRE potrebbe scrivere errori di avvio (classe non trovata) sulla pipe di output dell'errore. A questo proposito, è essenziale conoscere gli errori. Suggerisco di utilizzare il reindirizzamento della console in ogni caso se javaw
viene richiamato.
Al contrario se usi
start java .... 1>log.txt 2>err.txt
Con il start
comando console di Windows , il reindirizzamento dell'output della console non funziona java
né conjavaw
.
Spiegazione del perché: penso che questo javaw
apra un processo interno nel sistema operativo (utilizzando adeguatamente la classe java.lang.Process) e trasferisca un reindirizzamento dell'output noto a questo processo. Se non viene fornito alcun reindirizzamento sulla riga di comando, non viene reindirizzato nulla e il processo avviato interno per javaw
non ha output di console. Il comportamento per java.lang.Process è simile. Anche la macchina virtuale può utilizzare questa funzione interna javaw
.
Se si utilizza "start", la console di Windows crea un nuovo processo per Windows per eseguire il comando dopo l'avvio, ma questo meccanismo non utilizza purtroppo un determinato reindirizzamento per il processo secondario avviato.
java -cp ...
. Come quasi nessuno lo vuole,javaw
è la scelta di far scomparire quella fastidiosa finestra.