Was ist der Unterschied zwischen java, javawund javaws?
Ich fand unter Windows, dass der größte Teil von Java verwendet wird javaw.
Was ist der Unterschied zwischen java, javawund javaws?
Ich fand unter Windows, dass der größte Teil von Java verwendet wird javaw.
Antworten:
Siehe Dokumentation für:
javaBefehl 1 / javawBefehl 2
- Das
javaTool startet eine Java-Anwendung. Dazu wird eine Java-Laufzeitumgebung gestartet, eine angegebene Klasse geladen und diemainMethode dieser Klasse aufgerufen.- Der
javawBefehl ist identisch mitjava, außer dassjavawkein Konsolenfenster zugeordnet ist. VerwendenjavawSie diese Option, wenn kein Eingabeaufforderungsfenster angezeigt werden soll.
javawsBefehl , der " Java Web Start Befehl"
Der
javawsBefehl 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,javawswird die in der JNLP-Datei angegebene Java-Anwendung / das angegebene Applet gestartet.
DerjavawsLauncher 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 desjavawsTools , 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.
javawsollte 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 javakann 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 javawaufgerufen wird.
Im Gegenteil, wenn Sie verwenden
start java .... 1>log.txt 2>err.txt
Mit dem Windows-Konsolenbefehl startfunktioniert die Konsolenausgabeumleitung weder mit javanoch 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 javawhat 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,javawist die Wahl, dieses nervige Fenster verschwinden zu lassen.