У чому різниця між 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). Особливо під час запуску javaJRE може записувати помилки запуску (клас не знайдено) на вихідній трубі помилки. У цьому відношенні важливо знати про помилки. Я пропоную використовувати переадресацію консолі у будь-якому випадку, якщо 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- вибір зробити це дратівливе вікно зникнути.