Java - Способы распространения программ Java В разных ОС? [dубликат]

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

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

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

109
задан 10 May 2009 в 14:32

15 ответов

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

Доступны многие примеры скриптов из страниц NSIS и Real World Installers, таких как:

Java Launcher с автоматической установкой JRE Простой скрипт загрузки Java Runtime

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

3
ответ дан 15 August 2018 в 16:43

Это зависит от того, насколько утончены ваши целевые пользователи. В большинстве случаев вы хотите изолировать их от того, что вы используете Java-приложение. Дайте им встроенный установщик, который сделает все правильно (создайте записи в меню запуска, пусковые установки, зарегистрируйтесь с помощью программ для добавления / удаления и т. Д.) И уже связывает время выполнения Java (поэтому пользователю не нужно знать или заботиться об этом). Я хотел бы предложить наш инструмент для установки кросс-платформы BitRock InstallBuilder. Хотя он не основан на Java, он обычно используется для упаковки приложений Java. Его можно легко интегрировать с Ant, и вы можете создавать установщики Windows из Unix / Linux / Mac и наоборот. Поскольку созданные инсталляторы являются родными, им не требуется этап самоизвлечения или JRE, который уже присутствует в целевой системе, что означает меньшие установщики и сэкономит вам некоторые головные боли. Я также хотел бы упомянуть, что у нас есть бесплатные лицензии на проекты с открытым исходным кодом

4
ответ дан 15 August 2018 в 16:43

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

Я нашел то, что мне нужно, используя плагин сборки Maven2: Maven2 Assembly plugin

Это появляется чтобы дублировать функциональные возможности Maven2 Assembly plugin , но для его создания не требуется никакой дополнительной настройки.

2
ответ дан 15 August 2018 в 16:43

Преобразование Java в EXE - почему, когда, когда нет и как

9
ответ дан 15 August 2018 в 16:43

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

java -jar jarname.jar

IMHO, jar - это путь, когда простота является основным требованием.

1
ответ дан 15 August 2018 в 16:43
  • 1
    Попробуйте это на новичках, и вы обнаружите, что это не сработает. – rhody 27 April 2018 в 22:47

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

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

1
ответ дан 15 August 2018 в 16:43

Advanced Installer позволяет легко упаковывать java-приложения в качестве исполняемых файлов Windows, и это довольно гибко в том, как вы можете его настроить. Я обнаружил, что для распространения приложений Java для клиентов Windows это самый простой способ.

5
ответ дан 15 August 2018 в 16:43

Если это реальное приложение для конечного пользователя с графическим интерфейсом, вы должны игнорировать lanaguage, в котором вы написали программу (Java), и использовать собственный установщик для каждой из выбранных вами платформ. Пользователи Mac хотят, чтобы .dmg и на windows был установлен MSI или установщик .exe. В Windows я предпочитаю NSIS из NullSoft только потому, что это менее нежелательно, чем InstallShield или InstallAnywhere. В OSX вы можете рассчитывать на то, что JVM уже существует. В Windows вам нужно будет проверить и установить их для них, если это необходимо. Пользователи Linux не будут запускать приложения Java GUI, а некоторые из них будут знать, что делать с исполняемым .jar.

3
ответ дан 15 August 2018 в 16:43
  • 1
    действительно? Линукс не будет запускать GUI-приложения? то я предполагаю, что его программа бесполезна для них, чтобы все обсуждение было спорным. – Matt 31 August 2012 в 17:38
  • 2
    @Matt Почему вы предполагаете, что исходное приложение было графическим приложением? Я установил много java-приложений командной строки в Linux, и те, которые приходят вниз как .deb или .rpms, особенно ценятся. – Ry4an Brase 1 September 2012 в 00:15
  • 3
    Оригинальный заголовок GUI. Кроме того, если webstart был взят, это хорошая ставка, это приложение gui. Наконец, сказать, что пользователи Linux не используют графические приложения, совершенно неверны. – Matt 1 September 2012 в 09:10
  • 4
    Я не сказал, что пользователи Linux не запускают графические приложения. Я сказал, что они не будут запускаться «Java GUI». приложений и за пределами NetBeans и Eclipse (которые я описал под «немногими, кто будет знать, что делать с исполняемым банком»). Я не могу придумать ни одно широко используемое приложение Java для Linux (Open Office и т. д.). являются C ++ и используют Java только для плагинов). – Ry4an Brase 2 September 2012 в 20:30
  • 5
    когда-либо слышал о SQLDeveloper? Или любой инструмент управления оракулом? Все закодированы в java (хотя sqldeveloper заканчивается в комплекте как .exe, но это java) – Matt 3 September 2012 в 01:09

JSmooth - это простая программа, которая берет вашу банку и обертывает ее в стандартный исполняемый файл Windows. Он поставляется с простым графическим интерфейсом, который позволяет вам настроить требуемую JVM, связать ее с приложением или предоставить возможность загрузить ее, если она еще не установлена. Вы можете отправить exe-файл как есть или закрепить его с помощью возможных зависимостей (или позволить программе загружать дополнительные зависимости из сети при запуске). Это также бесплатно, как в пиве и речи, что может (или не может) быть хорошим.

4
ответ дан 15 August 2018 в 16:43

исполняемые файлы лучше всего, но они ограничены платформой, то есть используйте gcj: http://gcc.gnu.org/java/ для linux для создания исполняемых файлов и используйте start4j: http://launch4j.sourceforge.net/ для создания окон исполняемые файлы. Чтобы пакет на linux вы можете использовать любой rpm или deb packager. Для win32 попробуйте http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

3
ответ дан 15 August 2018 в 16:43
Каков наилучший способ распространения приложения Java? Что делать, если Java-приложение необходимо установить артефакты на компьютер пользователя? Есть ли хорошие системы установки / упаковки Java там?

По моему опыту (от оценки ряда опций), install4j является хорошим решением. Он создает собственные инсталляторы для любой платформы и специально предназначен для установки приложений Java. Подробнее см. «Возможности» на своем веб-сайте.

install4j - это коммерческий инструмент. Особенно, если ваши потребности относительно просты (просто распространяйте приложение и устанавливайте некоторые артефакты), существует много других хороших вариантов, включая бесплатные (например, , оценивающие ряд опций или уже упомянутый Lauch4j). Но вы просили наилучшего способа, и моим текущим знаниям является install4j, особенно для распространения более крупных или более сложных приложений Java (EE).

1
ответ дан 15 August 2018 в 16:43
  • 1
    Вы знаете, как заставить его запускать JVM 5.0 на Mac OS? С окнами вы просто связываете JRE, но на Mac возможно, что у них есть другая конфигурация JVM по умолчанию. Поэтому я не уверен, как явно заставить его использовать конкретную версию JVM, которую вы хотите ... – Stephane Grenier 6 July 2009 в 06:51
  • 2
    @Stephane, я на самом деле не создавал установщики OS X с помощью install4j, но я думаю, что это не должно быть проблемой, учитывая гибкие возможности JRE для комплектации / обнаружения. Для получения дополнительной информации о них проверьте ссылки в этом ответе: stackoverflow.com/questions/995881/… – Jonik 6 July 2009 в 14:13
  • 3
    Поскольку Mac поддерживает создание пакетов Java-приложений, вы можете просто указать JRE в info.plist, например, так ... & lt; key & gt; JVMVersion & lt; / key & gt; & Lt; & строка GT; 1,5 + & л; / строка & GT; Вы можете удалить плюс, чтобы потребовать определенную версию. Вот как я это делаю, но я не использую install4j. Есть несколько страниц, объясняющих создание Mac App budles в Интернете. Я также рекомендую просто посмотреть, как это делают limewire или vuze (java apps). Вы также можете посмотреть скрипты сборки, которые они используют для сборки пакетов приложений и файлов dmg, так как они с открытым исходным кодом! – Cal 1 November 2009 в 09:28

Ну, с моей точки зрения, превосходный механизм распределения - это использовать что-то вроде технологии ClickOnce или WebStart. Вы просто развертываете версию на сервере и автоматически получаете ее клиентам при выпуске версии. Также платформа Eclipse RCP содержит UpdateManager, который делает то, что делает WebStart, но также и многое другое.

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

0
ответ дан 15 August 2018 в 16:43

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

0
ответ дан 15 August 2018 в 16:43

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

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

-2
ответ дан 15 August 2018 в 16:43
  • 1
    Это никогда не будет работать для новичков. – rhody 27 April 2018 в 22:47

installanywhere хорошо, но дорогой - я не нашел (как) хороший бесплатный

0
ответ дан 15 August 2018 в 16:43

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

Похожие вопросы: