Каков наилучший способ распространения приложений Java?
Java - один из моих языков программирования. Я всегда сталкиваюсь с проблемой, хотя распространяю свое приложение на конечных пользователей.
Предоставление пользователю JAR не всегда удобно, как хотелось бы, и использование Java WebStart требует, чтобы я поддерживал веб-сервер.
Каков наилучший способ распространения приложения Java? Что делать, если Java-приложение необходимо установить артефакты на компьютер пользователя? Есть ли хорошие системы установки/упаковки Java там?
Ответы
Ответ 1
В зависимости от ваших требований к дистрибуции существует множество решений.
-
Просто используйте банку. Это предполагает, что у пользователя установлена правильная версия java, иначе пользователь получит исключения "версия в формате класса". Это нормально для внутреннего распространения внутри компании.
-
Используйте launch4j и установщик, такой как NSIS. Это дает вам гораздо больше контроля, хотя пользователь все равно может делать глупые вещи, такие как un-installation java runtime. Это, вероятно, самый популярный подход и то, что я сейчас использую.
-
Использовать Webstart. Это также предполагает, что у пользователя установлена правильная версия java, но ее намного легче добиться. Мой опыт в том, что это нормально для жестко контролируемых сред интрасети, но становится болью с большими развертываниями, потому что у него есть много странных сбоев. Это может стать лучше с новой подключаемой технологией в Java 1.7.
-
Используйте компилятор с собственным кодом, например, Excelsior JET и распространяйте его как исполняемый файл или завершите его в установщике. Дорого, и это, как правило, связывает вас со слегка устаревшей версией java, и есть некоторая боль при динамической загрузке классов, но она очень эффективна для крупномасштабного развертывания, где вам нужно минимизировать ваши проблемы поддержки.
Ответ 2
Конвертировать Java в EXE - почему, когда, когда нет и как
Ответ 3
расширенный установщик позволяет легко упаковывать java-приложения в качестве исполняемых файлов Windows, и это довольно гибко в том, как вы можете его настроить. Я нашел, что для распространения java-приложений для клиентов Windows это самый простой способ.
Ответ 4
JSmooth - это простая программа, которая берет вашу банку и обертывает ее в стандартный исполняемый файл Windows. Он поставляется с простым графическим интерфейсом, который позволяет вам настраивать требуемую JVM, связывать ее с приложением или предоставлять возможность ее загрузки, если она еще не установлена. Вы можете отправить exe файл как есть или закрепить его с помощью возможных зависимостей (или позволить программе загружать дополнительные зависимости из сети при запуске). Он также свободен, как в пиве и речи, что может (или не может) быть хорошим.
Ответ 5
Это зависит от того, насколько утончены ваши целевые пользователи. В большинстве случаев вы хотите изолировать их от того, что вы используете Java-приложение. Дайте им встроенный установщик, который сделает все правильно (создайте записи в меню запуска, пусковые установки, зарегистрируйтесь с помощью программ для добавления/удаления и т.д.) И уже связывает время выполнения Java (поэтому пользователю не нужно знать или заботиться об этом). Я хотел бы предложить наш инструмент для установки кросс-платформы, BitRock InstallBuilder. Хотя он не основан на Java, он обычно используется для упаковки приложений Java. Его можно легко интегрировать с помощью Ant, и вы можете создавать установщики Windows из Unix/Linux/Mac и наоборот. Поскольку созданные инсталляторы являются родными, им не требуется этап самоизвлечения или JRE, который уже присутствует в целевой системе, что означает меньшие установщики и сэкономит вам некоторые головные боли. Я также хотел бы упомянуть, что у нас есть бесплатные лицензии для проектов с открытым исходным кодом.
Ответ 6
исполняемые файлы лучше всего, но они ограничены платформой, то есть используйте gcj: http://gcc.gnu.org/java/ для linux для создания исполняемых файлов и использования launch4j: http://launch4j.sourceforge.net/ для создания исполняемых файлов Windows.
Чтобы пакет на linux вы можете использовать любой rpm или deb packager. Для win32 попробуйте http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System
Ответ 7
Если это реальное приложение для конечного пользователя GUI, вы должны игнорировать lanaguage, в котором вы написали программу (Java), и использовать собственный установщик для каждой из выбранных вами платформ. Пользователи Mac хотят, чтобы .dmg и на windows был установлен MSI или установщик .exe. В Windows я предпочитаю NSIS от NullSoft только потому, что он менее опасен, чем InstallShield или InstallAnywhere. В OSX вы можете рассчитывать на то, что JVM уже существует. В Windows вам нужно будет проверить и установить их для них, если это необходимо. Пользователи Linux не будут запускать приложения Java GUI, а некоторые из них будут знать, что делать с исполняемым .jar.
Ответ 8
Хотя я не использовал NSIS (Nullsoft Scriptable Installer System) самостоятельно, есть установка скрипты, которые будут проверять, установлена ли требуемая JRE в целевой системе.
Многие примеры скриптов доступны из Примеры кода и Страницы установщика реального мира, например:
(Обратите внимание, что я фактически не использовал ни один из скриптов, поэтому, пожалуйста, не принимайте это как подтверждение.)
Ответ 9
Мне нужен способ упаковать мой проект и его зависимости в один файл jar.
Я нашел то, что мне нужно, используя плагин сборки Maven2: Плагин сборки Maven2
Кажется, дублирует функциональность one-jar, но не требует никакой дополнительной настройки, чтобы это произошло.
Ответ 10
Для простых приложений Java мне нравится использовать Jar's. Очень просто распространять один файл, который пользователь может просто щелкнуть (Windows), или
java -jar jarname.jar
IMHO, jar - это путь, когда простота является основным требованием.
Ответ 11
Я разрабатываю приложения RCP для eclipse. Обычно для запуска приложения eclipse включена исполняющая программа запуска. Я включаю виртуальную машину Java в папку приложения в подкаталоге /jre, чтобы убедиться, что будет использоваться правая версия java.
Затем мы устанавливаем пакет с установкой Inno для установки на машине пользователя.
Ответ 12
Какой лучший способ распространить Java-приложение? Что делать, если Java приложение должно устанавливать артефакты на компьютер пользователя? Есть ли какие-либо хорошая установка/упаковка Java системы там?
В моем опыте (от оценки нескольких параметров) install4j является хорошим решением. Он создает собственные инсталляторы для любой платформы и специально предназначен для установки приложений Java. Подробнее см. "Features "на своем веб-сайте.
install4j - это коммерческий инструмент. Особенно, если ваши потребности относительно просты (просто распространяйте приложение и устанавливайте некоторые артефакты), существует много других хороших вариантов, включая бесплатные (например, izPack или уже упомянутый Lauch4j). Но вы просили наилучшего способа, и моим текущим знаниям является install4j, особенно для распространения более крупных или более сложных приложений Java (EE).
Ответ 13
Лучший ответ зависит от платформы. Для развертывания в Windows у меня были хорошие результаты, используя комбинацию one-jar и launch4j. Потребовалось немного времени, чтобы правильно настроить среду сборки (ant скрипты, в основном), но теперь это довольно безболезненно.
Ответ 14
Ну, с моей точки зрения, главный механизм распределения должен использовать что-то вроде ClickOnce или WebStart. Вы просто развертываете версию на сервере и автоматически получаете ее клиентам при выпуске версии.
Кроме того, платформа RCP Eclipse содержит UpdateManager, который делает то, что делает WebStart, но и многое другое.
Поскольку я использую Maven2 для построения, развертывание - это всего лишь кусок торта: скопируйте встроенную банку в местоположение на сервере, обновите файл jnlp, если это необходимо, и вы закончите.
Ответ 15
installanywhere хорошо, но дорого - я не нашел (как) хороший бесплатный
Ответ 16
Я бы закрепил файл jar вместе с другими зависимыми баночками, файлами конфигурации и документацией вместе с run.bat/run.sh. Конечный пользователь должен иметь возможность разархивировать его в любое место и, если необходимо, отредактировать run.bat(он должен работать без редактирования в большинстве случаев).
Установщик может быть полезен, если вы хотите создавать записи в стартовом меню, на рабочем столе, в системном трее и т.д.
Как пользователь, я предпочитаю разархивировать и запускать вид установки (без записей в меню меню). Однако люди вне ИТ-индустрии могут иметь разные предпочтения. Поэтому, если приложение в значительной степени предназначено для разработчиков, маршрут zip-run.bat и приложения для широкой публики могут быть установлены с помощью установщика.