Почему Eclipse использует собственный модуль запуска?

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

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

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

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


person Leonel    schedule 26.01.2009    source источник


Ответы (3)


Средство запуска Equinox использует JNI для запуска виртуальной машины Java в том же процессе, что и средство запуска. Использование 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.

person VonC    schedule 26.01.2009

Некоторые из них относятся к конкретным окнам, некоторые - к общему.

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

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

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

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

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

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

person ShuggyCoUk    schedule 26.01.2009

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

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

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

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

person John Gardner    schedule 26.01.2009