Разница между java / javaw / javaws - PullRequest
167 голосов
/ 19 ноября 2011

Мне интересно, в чем разница между java / javaw / javaws?Я нашел под окнами, большая часть Java запускается с использованием javaw.

Ответы [ 5 ]

190 голосов
/ 19 ноября 2011

См. Документы для:

  • java команда 1 / javaw команда 2
    1. Инструмент java запускает приложение Java. Это делается путем запуска среды выполнения Java, загрузки указанного класса и вызова метода main этого класса.
    2. Команда 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-апплета и WebStart, включая API-интерфейс апплета, плагин Java, средство просмотра апплетов Java, JNLP и Java Web Start, включая инструмент javaws , все устарели в JDK 9 и будет удален в следующем выпуске.

61 голосов
/ 04 февраля 2014

java: исполнитель Java-приложения, связанный с консолью для отображения вывода / ошибок

javaw: (оконный Java) исполнитель приложения, не связанный с консолью.Так что нет отображения вывода / ошибок.Может использоваться, чтобы молча выдвинуть вывод / ошибки в текстовые файлы.В основном используется для запуска приложения на основе графического интерфейса

javaws: (запуск java web) для загрузки и запуска распределенных веб-приложений.снова консоль не связана.

Все они являются частью JRE и используют одну и ту же JVM

9 голосов
/ 19 ноября 2011

java.exe связан с консолью, тогда как javaw.exe не имеет такой ассоциации. Таким образом, при запуске java.exe автоматически открывается окно командной строки, в котором отображаются потоки вывода и ошибок.

6 голосов
/ 19 ноября 2011

из http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html:

Команда javaw идентична java, за исключением того, что у javaw нет ассоциированного окна консоли.Используйте javaw, если вы не хотите, чтобы отображалось окно командной строки.Javaw Launcher отображает окно с информацией об ошибке в случае сбоя.

И javaws для java веб-приложений запуска, апплетов или чего-то в этом роде я подозреваю

0 голосов
/ 05 октября 2018

Я проверил, что перенаправление вывода работает с 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

С командой запуска консоли windows перенаправление вывода консоли НЕ работает сЯва и с Джава тоже.

Объяснение, почему это так: я думаю, что javaw открывает внутренний процесс в ОС (адекватно с использованием класса java.lang.Process) и передает известное перенаправление вывода этому процессу.Если в командной строке перенаправление не задано, ничего не перенаправляется, и внутренний запущенный процесс для javaw не имеет консольных выходов.Поведение для java.lang.Process аналогично.Виртуальная машина может использовать это внутреннее поле и для javaw.

Если вы используете 'start', консоль windows создает новый процесс для окон для выполнения команды после запуска, но этот механизм не использует данное перенаправлениедля запущенного подпроцесса, к сожалению.

...