Jaka jest różnica między java
, javaw
i javaws
?
Odkryłem, że pod Windows większość Java jest uruchomiona javaw
.
Jaka jest różnica między java
, javaw
i javaws
?
Odkryłem, że pod Windows większość Java jest uruchomiona javaw
.
Odpowiedzi:
Zobacz dokumentację dla:
java
polecenie 1 / javaw
polecenie 2
java
Narzędzie uruchamia aplikację Java. Robi to, uruchamiając środowisko wykonawcze Java, ładując określoną klasę i wywołującmain
metodę tej klasy .javaw
Polecenie jest identycznejava
, z wyjątkiem tego zejavaw
nie ma skojarzonego oknie konsoli. Użyj,javaw
jeśli nie chcesz, aby pojawiło się okno wiersza polecenia.
javaws
Komenda The " Java Web Start polecenie"
Do
javaws
uruchamia polecenie Java Web Start, który jest wdrożenie odniesienia Java Network Launching Protocol (JNLP). Java Web Start uruchamia aplikacje / aplety Java hostowane w sieci.
Jeśli określono plik JNLP,javaws
uruchomi aplikację / aplet Java określony w pliku JNLP.
Programjavaws
uruchamiający ma zestaw opcji obsługiwanych w bieżącej wersji. Jednak opcje mogą zostać usunięte w przyszłej wersji.
Zobacz także Informacje o wersji JDK 9 Nieaktualne interfejsy API, funkcje i opcje :
Technologie wdrażania Java są przestarzałe i zostaną usunięte w przyszłej wersji
Funkcje apletów Java i WebStart, w tym interfejs API apletów, wtyczka Java, przeglądarka apletów Java, JNLP i Java Web Start, w tymjavaws
narzędzie , są przestarzałe w JDK 9 i zostaną usunięte w przyszłej wersji.
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.
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.
Polecenie javaw jest identyczne jak java, z tym że javaw nie ma powiązanego okna konsoli. Użyj javaw, jeśli nie chcesz wyświetlać okna wiersza polecenia. Program uruchamiający javaw wyświetla okno z informacją o błędzie, jeśli się nie powiedzie.
Podejrzewam, że javaws dotyczy aplikacji Java do uruchamiania w Internecie, apletów lub czegoś podobnego.
Sprawdziłem, czy przekierowanie danych wyjściowych działa z javaw
:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
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 uruchamiania java
ś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
start java .... 1>log.txt 2>err.txt
W przypadku start
polecenia konsoli Windows przekierowanie wyjścia konsoli nie działa z java
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 proces javaw
nie ma żadnych wyników konsoli. Zachowanie java.lang.Process jest podobne. Maszyna wirtualna może również korzystać z tej funkcji wewnętrznej javaw
.
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.
java -cp ...
. Ponieważ prawie nikt tego nie chce,javaw
jest wybór, aby zniknęło to irytujące okno.