Jaka jest różnica między java
, javaw
i javaws
?
Odkryłem, że pod Windows większość Java jest uruchomiona javaw
.
java
java-web-start
javaw
użytkownik705414
źródło
źródło
java -cp ...
. Ponieważ prawie nikt tego nie chce,javaw
jest wybór, aby zniknęło to irytujące okno.Odpowiedzi:
Zobacz dokumentację dla:
java
polecenie 1 /javaw
polecenie 2javaws
Komenda The " Java Web Start polecenie"Zobacz także Informacje o wersji JDK 9 Nieaktualne interfejsy API, funkcje i opcje :
źródło
java: moduł wykonawczy aplikacji Java, który jest powiązany z konsolą do wyświetlania danych wyjściowych / błędów
javaw: Moduł wykonawczy aplikacji ( Java ) nie jest powiązany z konsolą. Zatem brak wyświetlania wyników / błędów. Może być używany do dyskretnego przesyłania wyników / błędów do plików tekstowych. Służy głównie do uruchamiania aplikacji opartych na GUI.
javaws: ( Java web start ), aby pobrać i uruchomić rozproszone aplikacje internetowe. Ponownie żadna konsola nie jest powiązana.
Wszystkie są częścią JRE i używają tej samej JVM.
źródło
javaw
powinienem być w mojej ŚCIEŻCE? (To nie jest)java.exe jest powiązany z konsolą, podczas gdy javaw.exe nie ma takiego powiązania. Tak więc po uruchomieniu java.exe automatycznie otwiera okno wiersza polecenia, w którym wyświetlane są strumienie danych wyjściowych i błędów.
źródło
From http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html :
Podejrzewam, że javaws dotyczy aplikacji Java do uruchamiania w Internecie, apletów lub czegoś podobnego.
źródło
Sprawdziłem, czy przekierowanie danych wyjściowych działa z
javaw
:Oznacza to, że jeśli aplikacja Java wydrukuje cokolwiek za pośrednictwem System.out lub System.err, zostanie zapisana w tych plikach, tak jak przy użyciu java (bez
w
). Zwłaszcza podczas uruchamianiajava
środowisko JRE może zapisywać błędy początkowe (nie znaleziono klasy) na potoku wyjściowym błędu. W związku z tym należy wiedzieć o błędach. Sugeruję użycie przekierowania konsoli w każdym przypadku, jeślijavaw
zostanie wywołane.Przeciwnie, jeśli używasz
W przypadku
start
polecenia konsoli Windows przekierowanie wyjścia konsoli nie działa zjava
ani zjavaw
.Wyjaśnienie, dlaczego tak jest: Myślę, że
javaw
otwiera wewnętrzny proces w systemie operacyjnym (odpowiedni przy użyciu klasy java.lang.Process) i przenosi znane przekierowanie wyjściowe do tego procesu. Jeśli w wierszu komend nie podano przekierowania, nic nie jest przekierowywane, a wewnętrzny uruchomiony procesjavaw
nie ma żadnych wyników konsoli. Zachowanie java.lang.Process jest podobne. Maszyna wirtualna może również korzystać z tej funkcji wewnętrznejjavaw
.Jeśli użyjesz opcji „start”, konsola Windows utworzy nowy proces dla systemu Windows w celu wykonania polecenia po uruchomieniu, ale ten mechanizm nie wykorzystuje niestety danego przekierowania dla uruchomionego podprocesu.
źródło