Java - один из моих любимых языков программирования. Я всегда сталкиваюсь с проблемой распространения моего приложения среди конечных пользователей.
Предоставление пользователю JAR не всегда так удобно, как хотелось бы, и использование Java WebStart требует, чтобы я поддерживал веб-сервер.
Как лучше всего распространять приложение Java? Что, если приложению Java необходимо установить артефакты на компьютер пользователя? Существуют ли какие-нибудь хорошие системы установки / упаковки Java?
java
installer
jar
software-distribution
Лапли Андерсон
источник
источник
Ответы:
В зависимости от требований вашего дистрибутива существует множество решений.
Просто используйте банку. Это предполагает, что у пользователя установлена правильная версия java, в противном случае пользователь получит исключения «версия формата файла класса». Это нормально для внутреннего распространения внутри компании.
Используйте launch4j и такую программу установки, как NSIS. Это дает вам гораздо больше контроля, хотя пользователь все еще может делать глупые вещи, например, деинсталлировать среду выполнения java. Это, наверное, самый популярный подход, который я использую сейчас.
Используйте Webstart. Это также предполагает, что у пользователя установлена правильная версия java, но это намного легче начать. Мой опыт показывает, что это нормально для жестко контролируемых сред интрасети, но становится проблемой при более крупных развертываниях, поскольку в нем есть много странных сбоев. Он может стать лучше с новой технологией подключаемых модулей в Java 1.7.
Используйте компилятор с собственным кодом, например Excelsior JET, и распространяйте его как исполняемый файл или заключите его в установщик. Дорого, и это обычно связывает вас с немного более старой версией java, и есть некоторая проблема с динамической загрузкой классов, но она очень эффективна для крупномасштабного развертывания, когда вам нужно свести к минимуму проблемы с поддержкой.
источник
Расширенный установщик упрощает упаковку Java-приложений как исполняемых файлов Windows, и он довольно гибок в том, как вы можете его настроить. Я обнаружил, что для распространения Java-приложений среди клиентов Windows это самый простой способ.
источник
JSmooth - это простая программа, которая помещает вашу банку в стандартный исполняемый файл Windows. Он поставляется с простым графическим интерфейсом, который позволяет вам настроить необходимую JVM, связать ее с приложением или предоставить возможность загрузки, если она еще не установлена. Вы можете отправить exe-файл как есть или заархивировать его с возможными зависимостями (или позволить программе загружать дополнительные зависимости из сети при запуске). Это также бесплатно, как в пиве и речи, что может быть (а может и нет) хорошо.
источник
Это зависит от того, насколько искушены ваши целевые пользователи. В большинстве случаев вы хотите изолировать их от того факта, что вы используете приложение на основе Java. Предоставьте им собственный установщик, который делает правильные вещи (создает записи в меню «Пуск», средства запуска, регистрируется в программах добавления / удаления и т. Д.) И уже связывает среду выполнения Java (так что пользователю не нужно знать или заботиться о ней). Я хотел бы предложить наш инструмент для кросс-платформенной установки BitRock InstallBuilder., Хотя он не основан на Java, он обычно используется для упаковки приложений Java. Его можно легко интегрировать с Ant, и вы можете создавать установщики Windows из Unix / Linux / Mac и наоборот. Поскольку созданные установщики являются собственными, они не требуют наличия шага самоизвлечения или наличия JRE в целевой системе, что означает меньшие размеры установщиков и избавляет вас от некоторых головных болей. Также хочу отметить, что у нас есть бесплатные лицензии на проекты с открытым кодом.
источник
исполняемые файлы лучше всего, но они ограничены платформой, т.е. используйте gcj: http://gcc.gnu.org/java/ для Linux для создания исполняемых файлов и используйте launch4j: http://launch4j.sourceforge.net/ для создания исполняемых файлов Windows. Для упаковки в Linux вы можете использовать любой упаковщик rpm или deb. Для win32 попробуйте http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System
источник
Если это реальное приложение для конечного пользователя с графическим интерфейсом пользователя, вам следует игнорировать язык, на котором вы написали программу (Java), и использовать собственный установщик для каждой из выбранных вами платформ. Пользователи Mac хотят иметь .dmg, а для Windows - установщик .msi или .exe. В Windows я предпочитаю NSIS от NullSoft только потому, что это менее нежелательно, чем InstallShield или InstallAnywhere. В OSX вы можете рассчитывать на то, что JVM уже существует. В Windows вам нужно будет проверить и установить его при необходимости. Люди, работающие с Linux, не будут запускать приложения с графическим интерфейсом пользователя Java, и те немногие, которые будут, знают, что делать с исполняемым файлом .jar.
источник
Хотя я не использовал NSIS (Nullsoft Scriptable Installer System), существуют сценарии установки, которые проверяют, установлена ли необходимая JRE в целевой системе.
Многие образцы сценариев доступны на страницах Примеры кода и Реальные установщики , например:
(Обратите внимание, что я на самом деле не использовал ни один из скриптов, поэтому, пожалуйста, не воспринимайте это как одобрение.)
источник
Мне нужен был способ упаковать мой проект и его зависимости в один файл jar.
Я нашел то, что мне нужно, с помощью плагина Maven2 Assembly: Maven2 Assembly Maven2 Assembly
Похоже, что это дублирует функциональность one-jar , но не требует дополнительной настройки для его работы.
источник
Для простых приложений Java мне нравится использовать Jar's. Распространить один файл, на который пользователь может просто щелкнуть (Windows), или
ИМХО, jar - это то, что нужно, когда простота является основным требованием.
источник
Я разрабатываю приложения Eclipse RCP. Обычно для запуска приложения eclipse включается исполняемый модуль запуска. Я включаю виртуальную машину Java в папку приложения в подкаталог / jre, чтобы гарантировать, что будет использоваться правильная версия Java.
Затем мы упаковываем Inno Setup для установки на машине пользователя.
источник
По моему опыту (по оценке ряда вариантов ) install4j - хорошее решение. Он создает собственные установщики для любой платформы и специально предназначен для установки приложений Java. Подробнее см. " Возможности » на его веб-сайте.
Однако install4j - это коммерческий инструмент. Особенно, если ваши потребности относительно просты (просто распространите приложение и установите некоторые артефакты), существует множество других хороших вариантов, включая бесплатные (например, izPack или уже упомянутый Lauch4j ). Но вы спросили лучший способ, и, насколько мне известно, install4j - это тот, который особенно подходит для распространения больших или более сложных приложений Java (EE).
источник
Лучший ответ зависит от платформы. Для развертывания в Windows у меня были хорошие результаты, используя комбинацию one-jar и launch4j . Мне потребовалось некоторое время, чтобы правильно настроить среду сборки (в основном скрипты муравьев), но теперь это довольно безболезненно.
источник
Что ж, с моей точки зрения, лучший механизм распространения - это использование чего-то вроде ClickOnce или технологии WebStart . Вы просто развертываете версию на сервере, и она автоматически доставляется клиентам, когда версия выпускается. Платформа Eclipse RCP также содержит UpdateManager, который выполняет то же, что и WebStart, а также многое другое.
Поскольку я использую Maven2 для сборки, развертывание - это всего лишь кусок пирога: скопируйте созданный jar-файл в место на сервере, обновите файл jnlp, если необходимо, и все готово.
источник
installanywhere хороший, но дорогой - я не нашел (как) хорошего бесплатного
источник
Я бы заархивировал файл jar вместе с другими зависимыми файлами jar, файлами конфигурации и документацией вместе с run.bat / run.sh. Конечный пользователь должен иметь возможность распаковать его в любое место и при необходимости отредактировать run.bat (в большинстве случаев он должен запускаться без редактирования). Установщик может быть полезен, если вы хотите создавать записи в меню «Пуск», на рабочем столе, в системном трее и т. Д.
Как пользователь, я предпочитаю распаковать и запустить установку (пожалуйста, без пунктов меню «Пуск»). Однако люди, не работающие в сфере ИТ, могут иметь другие предпочтения. Так что, если приложение в основном предназначено для разработчиков, маршрут zip-run.bat и приложения для широкой публики могут быть установлены с помощью установщика.
источник