Почему используются программы Java.файл bat как программа запуска?

Я обнаружил, что многие Java-программы в Windows используют .bat пакетный файл как программа запуска. Это выглядит странно по сравнению с другими программами, которые используют .исполняемый файл exe.

Почему эти программы Java не могут использовать .exe файл? Это ограничение программы Java?

спасибо.

12 ответов


довольно легко просто создать .bat файл и включить java -jar <archive-path> в нем и он у вас работает. Вы можете редактировать .bat файл легко и настроить его больше. Все, что вам нужно-это блокнот.

также это выглядит довольно похоже на файлы скриптов bash для Linux, например. Это делает .bat файл для выполнения программы .jar легко переносится с Win на Linux.

а .exe-файл не легко модифицируется(если вообще), и он производит некоторые метаданные, полученные в результате .исполняемый быть крупнее... EXE также является расширением файла Windows...

конечно, если вы хотите, чтобы упаковать все в один файл и пользователю не беспокоиться об удалении .файл jar, но все еще с битой... это другое дело.


пакетный файл часто выполняет "java-jar" и дополнительно добавляет параметры JVM - это не может быть добавлено в файл jar.

его быстрее написать файл bat, чем обернуть архив java в exe-файл - эти инструменты часто являются коммерческими или не работают хорошо ...

кроме того, существует не так много собственных исполняемых файлов windows (.exe) сделано на java (однако это все еще возможно - vuze, limewire и т. д.)


Java не компилируется в .exe. Он компилируется на виртуальную машину, JVM. Это фундаментальный аспект технологии платформы Java.

на .bat по сути является сценарием оболочки для Windows. Он выполняет .exe, например,java.exe из JRE, который затем запускает байт-код, скомпилированный Java-код.


на самом деле, довольно много Java-приложений do использовать родной пусковых вместо пакетный скрипт: затмение, NetBeans, IntelliJ IDEA, JRuby и Vuze только немногие из примеров.

основная причина, почему люди не делайте это чаще, это то, что встраивание JVM в C на самом деле несколько сложно, и если вы можете уйти от запуска его из пакетного скрипта, то почему беспокоить?


пакетный файл может загрузить JVM с необходимым classpath и т. д. и сказать ему запустить jar или class или class в jar. Это перебор и больше работы для создания исполняемого PE-образа, чтобы выпустить одну или две команды для запуска JVM и сказать ему открыть банку.


хорошо... вы должны использовать пакетный файл, если хотите выполнить .класс!-Файл -2--> например. Вы хотите использовать пакет, потому что вы должны передать URI своей программы java виртуальной машине java (также программе), чтобы она могла его выполнить.

но вы можете создать Java-программу, которая будет исполняемой, так же, как exe-файла (просто нужно дважды щелкнуть его, чтобы выполнить его). Его расширение .Джар, и иногда вам нужно связать .Джар расширение на Java Платформа Binary (или аналогичная) для достижения этого. Затем его до Windows, чтобы передать URI вашего java-приложения на виртуальную машину java, поэтому он выполняется.

чтобы сделать это в NetBeans, выполните команду Build, а в папке проекта найдите папку dist, и там вы увидите исполняемый файл java.

exe или не exe, функциональность с точки зрения пользователя, поэтому она не метр...

ПРИМЕЧАНИЕ

программы для Java платформы независимый, поэтому на разных платформах процесс исполнения может быть разным. Если Java будет только для Windows, я уверен, что SUN заставит его компилироваться в Windows EXE.


Добро пожаловать в мир сценариев оболочки DOS. Вы можете сделать исполняемый файл jar, но если у вас есть только файлы классов java, то лучшее, что вы можете сделать, это ввести небольшой скрипт для запуска вашей программы java.


Java-программы были разработаны с нуля, чтобы запускаться не ОС, а виртуальной машиной. Когда вы "запускаете программу java", вы фактически запускаете виртуальную машину и говорите ей загрузить вашу программу.

Это просто, как он был разработан. Дело не в том, что они расслаблялись в отделе качества (один ответ предложил Sun только получить продукт до 80% завершения), это было сознательное решение. И поскольку создание пакетного файла крайне тривиально, ярлык, shell script или исполняемый файл, который предоставит One-click launcher, не нужно было добавлять возможность конвертировать программу java в один клик .exe (в случае windows).


мои две причины:

  1. многие строители установщика не позволяют создавать ярлык меню программы, содержащий, например java -jar whatever.jar Если вы каким-то образом настроить установщик принять java как программа, существующая на целевой машине. Это может быть трудно или невозможно, в то время как создание ярлыка для файла BAT, включенного в дистрибутив, - это ветер.
  2. как указано другими: необходимо добавить параметры запуска JVM в зависимости от хост-машины конфигурация.

хороший вопрос. Я также задавался вопросом, почему Sun никогда не предоставлял какой-либо инструмент для генерации .исполняемый.

exe-файл гораздо более удобен для пользователя, чем bat-файл. Он имеет хороший значок etcetara.

Я как - то сам написал:http://www.bitstorm.org/jarx/


вы можете, multi platform installation authoring tool может создать один для вас. Например, InstallAnywhere создаст исполняемый файл windows для java-приложения.

Sun была компанией, которая следует правилу 80/20, они получают самые важные вещи, чтобы работать, но никогда не заставить его работать хорошо. Например, сравните Java plug-in для обнаружения браузера и установки в adobe flash. Flash был быстрым и легким много лет назад, в то время как плагин java часто перенаправляет вас на сайт sun, и все.

назад к исполняемому файлу, модель java пишет один раз, запускает много, когда Sun решит предоставить пусковую установку, они должны будут предоставить ее для всей платформы. Например, Windows JDK требуется для обеспечения пусковых установок для Windows x86, ia64, amd64, linux / unix может совместно использовать пусковую установку, так как все они используют общие сценарии оболочки. Тогда вопрос в том, показывает ли sun упаковщик для mac? Он просто не вписывается, вы должны обязательно посмотреть на такие инструменты, как installanywhere и install4j, они все включают пусковые установки java.


вы можете использовать autoit для очень быстрого создания exe с пользовательским значком, который будет выглядеть более профессионально, чем просто .Bat-файл.