У чому різниця між java
, javaw
і javaws
?
Я знайшов під Windows більшість Java починає використовувати javaw
.
У чому різниця між java
, javaw
і javaws
?
Я знайшов під Windows більшість Java починає використовувати javaw
.
Відповіді:
Дивіться документацію для:
java
команда 1 / javaw
команда 2
java
Інструмент запускає додаток Java. Це робиться, запускаючи середовище виконання Java, завантажуючи вказаний клас та використовуючиmain
метод цього класу .javaw
Команда ідентичнаjava
, за винятком того, що зjavaw
там немає пов'язаного вікна консолі. Використовуйте,javaw
коли ви не хочете, щоб з'явилося вікно командного рядка.
javaws
команда , то " Java Web Start команду"
У
javaws
команді запускає Java Web Start, який є еталонною реалізацією Java мережі Запуску протоколу (JNLP). Java Web Start запускає програми Java / аплети, розміщені в мережі.
Якщо вказаний файл JNLP,javaws
запускається програма Java / аплет, зазначена у файлі JNLP.
Уjavaws
запуску є набір опцій, які підтримуються в поточному випуску. Однак параметри можуть бути видалені в майбутньому випуску.
Див. Також Примітки до випуску JDK 9 Застарілі API, функції та параметри :
Технології розгортання Java застаріли і будуть видалені в майбутньому випуску
функцій Java Applet і WebStart, включаючи API Applet, плагін Java, Переглядач аплет Java, JNLP та Java Web Start, включаючиjavaws
інструмент , усі застаріли в JDK 9 та буде видалено у майбутньому випуску.
java: виконавець програми Java, який пов'язаний з консоллю для відображення виводу / помилок
javaw: Виконавець програми (у вікні Java ) не пов'язаний з консоллю. Так що не відображається вихід / помилки. З його допомогою можна безшумно натиснути на вихідні / помилки текстові файли. В основному використовується для запуску програм на основі GUI.
javaws: ( веб-запуск Java ) для завантаження та запуску розповсюджених веб-додатків. Знову ж таки, жодна консоль не пов’язана.
Усі є частиною JRE і використовують один і той же JVM.
javaw
повинен бути в моєму PATH? (Це не так)
java.exe асоціюється з консоллю, тоді як javaw.exe не має такої асоціації. Отже, коли запускається java.exe , він автоматично відкриває вікно командного рядка, де відображаються потоки виводу та помилок.
Команда javaw ідентична java, за винятком того, що javaw не має пов'язаного вікна консолі. Використовуйте javaw, коли ви не хочете, щоб відображалося вікно командного рядка. Запуск програми javaw відображає вікно з інформацією про помилку, якщо воно не працює.
Я б підозрював, що Java - це програми для веб-запуску Java, аплети чи щось подібне.
Я перевірив, що перенаправлення виводу працює з javaw
:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
Це означає, що якщо програма Java виводить що-небудь через System.out або System.err, вона записується до цих файлів, як і при використанні Java (без w
). Особливо під час запуску java
JRE може записувати помилки запуску (клас не знайдено) на вихідній трубі помилки. У цьому відношенні важливо знати про помилки. Я пропоную використовувати переадресацію консолі у будь-якому випадку, якщо javaw
вона викликається.
Навпаки, якщо ви використовуєте
start java .... 1>log.txt 2>err.txt
За допомогою start
команди консолі Windows перенаправлення виводу консолі не працює java
ні з, ні з javaw
.
Пояснення, чому це так: Я думаю, що це javaw
відкриває внутрішній процес в ОС (адекватно за допомогою класу java.lang.Process) і передає відоме перенаправлення виводу в цей процес. Якщо в командному рядку не вказано перенаправлення, нічого не перенаправляється, і внутрішній запущений процес для javaw
не має жодних консольних виходів. Поведінка для java.lang.Process схожа. Віртуальна машина також може використовувати цю внутрішню функцію javaw
.
Якщо ви використовуєте "пуск", консоль Windows створює новий процес для виконання Windows командою після запуску, але цей механізм, на жаль, не використовує заданого перенаправлення для запущеного підпроцесу.
java -cp ...
. Оскільки цього майже ніхто не хоче,javaw
- вибір зробити це дратівливе вікно зникнути.