Разница между java / javaw/javaws


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

5 153

5 ответов:

ознакомиться с документами:

  • java команда1/javaw команда2
    1. The java инструмент запускает приложение Java. Это делается путем запуска среды выполнения Java, загрузки указанного класса и вызова этого класса main метод.
    2. The javaw команда идентична java, за исключением того, что с javaw нет связанное окно консоли. Используйте javaw когда вы не хотите, чтобы появилось окно командной строки.
  • javaws команда на " Java Web Start команда"

    The javaws команда запускает Java Web Start, который является эталонной реализацией протокола запуска сети Java (JNLP). Java Web Start запускает Java приложения/апплеты, размещенные в сети.

    Если указан файл JNLP, javaws запустит Java-приложение / апплет, указанный в файле JNLP.

    Элемент javaws launcher имеет набор опций, которые поддерживаются в текущем выпуске. Однако эти параметры могут быть удалены в будущем выпуске.

    см. также JDK 9 примечания к выпуску Устаревшие API, функции и параметры:

    Java Технологии развертывания устарели и будут удалены в будущем выпуске
    Java-апплет и webstart функциональность, включая API для апплетов, подключаемый модуль Java, программа просмотра Java-приложения, jnlp и Java веб-запуск, в том числе все устарел в JDK 9 и будет удален в будущем выпуске.

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

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

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

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

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

от 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 web start приложений, апплеты или что-то в этом роде я бы заподозрил

Я проверил, что перенаправление вывода работает с javaw, который:

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

это означает, что если приложение java печатает что-либо через систему.или система.err, это написано в этих файлах, как и с использованием java (без w). Особенно при запуске java JRE может записывать начальные ошибки (класс не найден) в выходной канал ошибок. В этом отношении важно знать об ошибках. Я предлагаю использовать перенаправление консоли в любом случае, если javaw вызванный.

напротив, если вы используете

start java .... 1>log.txt 2>err.txt

С помощью команды запуска консоли windows перенаправление вывода консоли не работает с java и javaw тоже.

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

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