Что лучший способ состоит в том, чтобы распределить JAVA-приложения? [закрытый]

Я знаю, что этот вопрос касается bash, но - только для записи - ksh93 умнее и реализует его, как ожидалось:

$ ksh -c 'i=5; for x in {1..$i}; do echo "$x"; done'
1
2
3
4
5
$ ksh -c 'echo $KSH_VERSION'
Version JM 93u+ 2012-02-29

$ bash -c 'i=5; for x in {1..$i}; do echo "$x"; done'
{1..5}
113
задан Jonik 10 May 2009 в 09:32
поделиться

15 ответов

Существует множество решений, в зависимости от Ваших требований распределения.

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

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

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

  4. Использование компилятор собственного кода как СТРУЯ Excelsior и распределяет как исполняемый файл или оборачивает его в установщике. Дорогой, и это обычно связывает Вас с немного более старой версией Java, и существует некоторая боль с динамической загрузкой класса, но ее очень эффективное для крупномасштабного внедрения, где необходимо минимизировать стычки поддержки.

86
ответ дан Joachim Sauer 24 November 2019 в 02:44
поделиться

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

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

-2
ответ дан Rejeev Divakaran 24 November 2019 в 02:44
поделиться

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

0
ответ дан Tom 24 November 2019 в 02:44
поделиться

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

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

0
ответ дан Petr Macek 24 November 2019 в 02:44
поделиться

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

0
ответ дан qualidafial 24 November 2019 в 02:44
поделиться

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

java -jar jarname.jar

IMHO, банка является способом пойти, когда простота является основным требованием.

1
ответ дан jjnguy 24 November 2019 в 02:44
поделиться

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

Тогда мы упаковываем с Установкой Inno для установки на машине пользователя.

1
ответ дан Mario Ortegón 24 November 2019 в 02:44
поделиться

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

Много демонстрационных сценариев доступны от эти Примеры кода и страницы Real World Installers , таковы как:

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

3
ответ дан coobird 24 November 2019 в 02:44
поделиться

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

3
ответ дан Ry4an Brase 24 November 2019 в 02:44
поделиться

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

3
ответ дан zurk 24 November 2019 в 02:44
поделиться

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

4
ответ дан Daniel Lopez 24 November 2019 в 02:44
поделиться

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

4
ответ дан stian 24 November 2019 в 02:44
поделиться

усовершенствованный установщик облегчает упаковывать приложения Java как исполняемые файлы окон, и это довольно гибко в способе, которым можно настроить его. Я нашел, что для распределительных JAVA-приложений клиентам окон, это - самый легкий способ пойти.

5
ответ дан rustyshelf 24 November 2019 в 02:44
поделиться

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

я нашел то, что мне было нужно использование плагина блока Maven2: плагин блока Maven2

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

2
ответ дан David Carlson 24 November 2019 в 02:44
поделиться

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

In my experience (from evaluating a number of options), install4j is a good solution. It creates native installers for any platform, and is specifically geared towards installing Java apps. For details, see "Features" on its website.

install4j is a commercial tool, though. Especially if your needs are relatively simple (just distribute an application and install some artifacts), many other good options exist, including free ones (like izPack or the already mentioned Lauch4j). But you asked for the best way, and to my current knowledge install4j is the one, especially for distributing larger or more complicated Java (EE) apps.

1
ответ дан 24 November 2019 в 02:44
поделиться