Почему в Eclipse используется встроенная программа запуска?

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

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

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

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

3 ответа

Решение

Средство запуска Equinox использует 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.

Некоторые из них являются окнами, некоторые являются общими.

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам