Was ist der Unterschied zwischen java
, javaw
und javaws
?
Ich fand unter Windows, dass der größte Teil von Java verwendet wird javaw
.
Was ist der Unterschied zwischen java
, javaw
und javaws
?
Ich fand unter Windows, dass der größte Teil von Java verwendet wird javaw
.
Antworten:
Siehe Dokumentation für:
java
Befehl 1 / javaw
Befehl 2
- Das
java
Tool startet eine Java-Anwendung. Dazu wird eine Java-Laufzeitumgebung gestartet, eine angegebene Klasse geladen und diemain
Methode dieser Klasse aufgerufen.- Der
javaw
Befehl ist identisch mitjava
, außer dassjavaw
kein Konsolenfenster zugeordnet ist. Verwendenjavaw
Sie diese Option, wenn kein Eingabeaufforderungsfenster angezeigt werden soll.
javaws
Befehl , der " Java Web Start Befehl"
Der
javaws
Befehl startet Java Web Start, die Referenzimplementierung des Java Network Launching Protocol (JNLP). Java Web Start startet Java-Anwendungen / Applets, die in einem Netzwerk gehostet werden.
Wenn eine JNLP-Datei angegeben ist,javaws
wird die in der JNLP-Datei angegebene Java-Anwendung / das angegebene Applet gestartet.
Derjavaws
Launcher verfügt über eine Reihe von Optionen, die in der aktuellen Version unterstützt werden. Die Optionen werden jedoch möglicherweise in einer zukünftigen Version entfernt.
Siehe auch JDK 9-Versionshinweise Veraltete APIs, Funktionen und Optionen :
Java-Bereitstellungstechnologien sind veraltet und werden in einer zukünftigen Version entfernt.
Java Applet- und WebStart-Funktionen, einschließlich der Applet-API, des Java-Plug-Ins, des Java Applet Viewer, von JNLP und Java Web Start, einschließlich desjavaws
Tools , sind in JDK veraltet 9 und wird in einer zukünftigen Version entfernt.
Java: Java Application Executor, der einer Konsole zugeordnet ist, um Ausgaben / Fehler anzuzeigen
javaw: ( Java-Fenster ) Anwendungs-Executor, der nicht mit der Konsole verknüpft ist. Also keine Anzeige von Ausgabe / Fehlern. Es kann verwendet werden, um die Ausgabe / Fehler stillschweigend in Textdateien zu übertragen. Es wird hauptsächlich zum Starten von GUI-basierten Anwendungen verwendet.
javaws: ( Java- Webstart ) zum Herunterladen und Ausführen der verteilten Webanwendungen. Auch hier ist keine Konsole zugeordnet.
Alle sind Teil von JRE und verwenden dieselbe JVM.
javaw
sollte in meinem Pfad sein? (Ist es nicht)
java.exe ist der Konsole zugeordnet, während javaw.exe keine solche Zuordnung hat. Wenn java.exe ausgeführt wird, wird automatisch ein Eingabeaufforderungsfenster geöffnet, in dem Ausgabe- und Fehlerströme angezeigt werden.
Der Befehl javaw ist identisch mit Java, außer dass javaw kein Konsolenfenster zugeordnet ist. Verwenden Sie javaw, wenn kein Eingabeaufforderungsfenster angezeigt werden soll. Der Javaw Launcher zeigt ein Fenster mit Fehlerinformationen an, wenn dies fehlschlägt.
Und javaws ist für Java-Webstartanwendungen, Applets oder ähnliches, würde ich vermuten.
Ich habe überprüft, ob die Ausgabeumleitung funktioniert mit javaw
:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
Wenn die Java-Anwendung etwas über System.out oder System.err druckt, wird dies in diese Dateien geschrieben, ebenso wie bei Verwendung von Java (ohne w
). Insbesondere beim Starten java
kann die JRE Startfehler (Klasse nicht gefunden) in die Fehlerausgabepipe schreiben. In diesem Zusammenhang ist es wichtig, über Fehler Bescheid zu wissen. Ich empfehle auf jeden Fall die Konsolenumleitung, wenn sie javaw
aufgerufen wird.
Im Gegenteil, wenn Sie verwenden
start java .... 1>log.txt 2>err.txt
Mit dem Windows-Konsolenbefehl start
funktioniert die Konsolenausgabeumleitung weder mit java
noch mit javaw
.
Erklärung, warum es so ist: Ich denke, das javaw
öffnet einen internen Prozess im Betriebssystem (angemessen unter Verwendung der Klasse java.lang.Process) und überträgt eine bekannte Ausgabeverleitung an diesen Prozess. Wenn in der Befehlszeile keine Umleitung angegeben wird, wird nichts umgeleitet, und der intern gestartete Prozess für javaw
hat keine Konsolenausgaben. Das Verhalten für java.lang.Process ist ähnlich. Die virtuelle Maschine kann diese interne Funktion auch für verwenden javaw
.
Wenn Sie 'start' verwenden, erstellt die Windows-Konsole einen neuen Prozess für Windows, um den Befehl nach dem Start auszuführen. Dieser Mechanismus verwendet jedoch leider keine bestimmte Umleitung für den gestarteten Unterprozess.
java -cp ...
. Da fast niemand das will,javaw
ist die Wahl, dieses nervige Fenster verschwinden zu lassen.