Как лучше всего распространять приложения Java?[закрыто]

StackOverflow https://stackoverflow.com/questions/80105

Вопрос

Java — один из моих любимых языков программирования.Однако я всегда сталкиваюсь с проблемой распространения моего приложения среди конечных пользователей.

Предоставление пользователю JAR-файла не всегда так удобно, как хотелось бы, и для использования Java WebStart требуется поддержка веб-сервера.

Как лучше всего распространять Java-приложение?Что делать, если Java-приложению необходимо установить артефакты на компьютер пользователя?Существуют ли хорошие системы установки/упаковки Java?

Это было полезно?

Решение

Существует множество решений, в зависимости от ваших требований к распространению.

  1. Просто используйте банку.Предполагается, что у пользователя установлена ​​правильная версия Java, в противном случае пользователь получит исключения «версия формата файла класса».Это нормально для внутреннего распространения внутри компании.

  2. Используйте launch4j и установщик, например NSIS.Это дает вам гораздо больше контроля, хотя пользователь все равно может делать глупости, например удалять среду выполнения Java.Вероятно, это самый популярный подход, которым я сейчас пользуюсь.

  3. Используйте Вебстарт.Это также предполагает, что у пользователя установлена ​​правильная версия Java, но приступить к работе намного проще.Мой опыт показывает, что это хорошо для жестко контролируемых сред интрасети, но становится проблемой при более крупных развертываниях, поскольку возникает множество странных сбоев.Возможно, ситуация станет лучше с новой технологией подключаемых модулей в Java 1.7.

  4. Используйте компилятор собственного кода, например 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.

Хотя я не использовал НСИС (Nullsoft Scriptable Installer System), существуют сценарии установки, которые проверяют, установлена ​​ли необходимая JRE в целевой системе.

Многие примеры сценариев доступны на сайте Примеры кода и Реальные установщики страницы, такие как:

(Обратите внимание, что я на самом деле не использовал ни один из сценариев, поэтому, пожалуйста, не воспринимайте это как одобрение.)

Мне нужен был способ упаковать мой проект и его зависимости в один jar-файл.

Я нашел то, что мне нужно, с помощью плагина сборки Maven2: Плагин сборки Maven2

Похоже, это дублирует функциональность одна банка, но для его запуска не требуется никакой дополнительной настройки.

Для простых Java-приложений мне нравится использовать Jar.Очень просто распространить один файл, на который пользователь может просто щелкнуть (Windows), или

java -jar jarname.jar

ИМХО, jar - это лучший вариант, когда простота является основным требованием.

Я разрабатываю приложения Eclipse RCP.Обычно для запуска приложения eclipse включается исполняемый модуль запуска.Я включаю виртуальную машину Java в папку приложения в подкаталог /jre, чтобы гарантировать, что будет использоваться правильная версия Java.

Затем мы упаковываем Inno Setup для установки на компьютер пользователя.

Как лучше всего распространить приложение Java?Что если приложение Java должно установить артефакты на компьютер пользователя?Есть ли хорошие системы установки/упаковки Java?

По моему опыту (от оценивая несколько вариантов), установить4j это хорошее решение.Он создает собственные установщики для любой платформы и специально предназначен для установки приложений Java.Подробности см.»Функции" на своем сайте.

Однако install4j — это коммерческий инструмент.Особенно если ваши потребности относительно просты (просто распространите приложение и установите некоторые артефакты), существует множество других хороших вариантов, в том числе бесплатных (например, изПак или уже упомянутый Лаух4j).Но вы просили лучший Кстати, и, насколько мне известно, install4j — это тот вариант, особенно для распространения более крупных или сложных приложений Java (EE).

Лучший ответ зависит от платформы.При развертывании в Windows я добился хороших результатов, используя комбинацию одна банка и запуск4j.Чтобы правильно настроить среду сборки (в основном ant-скрипты), потребовалось некоторое время, но теперь это довольно безболезненно.

Ну, с моей точки зрения, лучший механизм распределения — использовать что-то вроде НажмитеOnce, или ВебСтарт технологии.Вы просто развертываете версию на сервере, и она автоматически доставляется клиентам после выпуска версии.Кроме того, платформа Eclipse RCP содержит UpdateManager, который делает то же, что и WebStart, а также многое другое.

Поскольку для сборки я использую Maven2, развертывание — это просто:скопируйте встроенный jar-файл в папку на сервере, при необходимости обновите файл jnlp, и все готово.

installanywhere хорош, но дорог - я не нашел хорошего бесплатного

Я бы заархивировал файл jar вместе с другими зависимыми файлами jar, файлами конфигурации и документацией вместе с файлом run.bat/run.sh.Конечный пользователь должен иметь возможность разархивировать его в любое место и при необходимости отредактировать файл run.bat (в большинстве случаев он должен запускаться без редактирования).Установщик может быть полезен, если вы хотите создать записи в меню «Пуск», на рабочем столе, на панели задач и т. д.

Как пользователь, я предпочитаю разархивировать и запустить установку (пожалуйста, никаких записей в меню «Пуск»).Однако люди за пределами ИТ-индустрии могут иметь разные предпочтения.Поэтому, если приложение в основном предназначено для разработчиков, маршрут zip-run.bat и приложения для широкой публики могут быть установлены с помощью установщика.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top