Это 2009, а не 1996 год. Ни один пользователь (даже разработчик!) Не должен редактировать командные файлы, чтобы программа запускалась в первый раз.

ние IDE - один из лучших примеров огромного настольного приложения, написанного на Java.

Большинство приложений Java, которые я видел, обычно используют пакетный или командный скрипт для создания строки с путем к классу приложения и запуска JVM с путем к классу в качестве переменной env.

Затмение, с другой стороны, опирается на родной лаунчер. Почему это ? Что этот лаунчер делает, а скрипты - нет?

Я помню, как читал около полутора лет назад статью, в которой объяснялось, что «нам лучше использовать встроенную программу запуска», но id не объяснял внутреннюю работу программы запуска.

Ответы на вопрос(3)

Ваша интеграция с оболочкой значительно улучшена по сравнению с пакетным скриптом на родном языке сценариев вашей целевой платформы.

Нет необходимости запускать дополнительный процесс для выполнения сценария (это может иметь большое значение, если вы сами создаете сценарий IDE в рамках цикла сборки / тестирования / развертывания.

Исполняемые заголовки обычно определяют «битность» вашей программы. Таким образом, исполняемый файл может явно указывать, что он разрешает / запрещает 32- или 64-битное выполнение.

Исполняемые файлы на окнах могут быть криптографически подписаны.

Многие программы защиты от вредоносных программ / брандмауэров поддерживают один исполняемый белый список. Таким образом, гораздо приятнее, когда запускается eclipse (и он проверяет себя на наличие обновлений в Интернете), когда впервые появляется всплывающее окно «Eclipse пытается получить доступ к Интернету», а не общий файл javaw.exe. пытаясь получить доступ в интернет ". Это также позволяет пользователю более детально контролировать это поведение.

Процесс будет отображаться в ps / task manager как «you_app_name», а не java -jar «ваш файл jar». Это облегчает отслеживание / управление ошибочными процессами. Что-то не редкость в условиях разработки.

но, на мой взгляд, я думаю, что по гораздо более простым причинам: пользовательский опыт.

Конечному пользователю не нужно возиться с чем-либо, чтобы заставить его работать. (Да, вы МОЖЕТЕ возиться с этим, если вы хотите использовать другую виртуальную машину или передать аргументы в виртуальную машину и т. Д., Но вы этого НЕ ДОЛЖНЫ).

Нет ничего более раздражающего для пользователя, чем установить программу, затем попытаться запустить ее, только чтобы получить окно с надписью «введите путь к вашей Java-VM», или, что еще хуже, вы дважды щелкните по нему, и ничего не происходит, потому что у вас есть чтобы отредактировать командный файл, чтобы он работал.

Это 2009, а не 1996 год. Ни один пользователь (даже разработчик!) Не должен редактировать командные файлы, чтобы программа запускалась в первый раз.

Решение Вопроса

Равноденствие пусковая использует JNI для запуска Java VM в том же процессе, что и модуль запуска. Использование JNI также позволяет нам использовать виджеты SWT на заставке.

На самом деле, у вас все еще может быть сценарий, так как исполняемый модуль запуска eclipse.exe был разбит на 2 части начиная с 3.3M5:

исполняемый файл иобщая библиотека (например, eclipse_1006.dll).

Исполняемый файл находится в корне установки eclipse.
Общая библиотека находится во фрагменте, специфичном для платформы,org.eclise.equinox.launcher.[config], в каталоге плагинов.

Перемещение большей части кода запуска в разделяемую библиотеку, которая находится во фрагменте, означает, что эта часть кода запуска теперь может быть обновлена ​​с сайта обновления. Кроме того, при запуске из Java общая библиотека может быть загружена через JNI для отображения заставки.

Как объяснено здесь, вы можетезапустить Eclipse 3.3 без родного лаунчера,

java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070319.jar

Обратите внимание, что имя jar-файла теперь зависит от версии, вызывая наивные сценарии, которые вызывают jar-файл с использованием точного имени файла, чтобы прерваться после обновления jar-файла.

Вместо этого вы можете искать соответствующий файлorg.eclipse.equinox_*.jar, К счастью, Eclipse-Wiki содержитсоответствующие шаблоны сценариев которые полезны в этом случае.
Если вы хотите избежать изменения существующих сценариев, вы также можете выполнить поиск подключаемого модуля Equinox Launcher, скопировать его в главный каталог Eclipse и переименовать копию в startup.jar.

Ваш ответ на вопрос