Jaki jest najlepszy sposób dystrybucji aplikacji Java? [zamknięte]

zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Zaktualizuj pytanie, aby mogło być odpowiedź z faktami i cytatami przez edytując ten post .

Zamknięte 6 lat temu .

Popraw to pytanie Java jest jednym z moich ulubionych języków programowania. Zawsze jednak napotykam problem dystrybucji mojej aplikacji do użytkowników końcowych.

Dawanie użytkownikowi słoika nie zawsze jest tak przyjazny dla użytkownika, jak chciałbym i korzystanie z Java WebStart wymaga, aby utrzymać serwer WWW.

Jaki jest najlepszy sposób dystrybucji aplikacji Java? Co zrobić, jeśli aplikacja Java musi zainstalować artefakty na komputerze użytkownika? Czy są jakieś dobre systemy instalacji/pakowania Javy?

Author: Jonik, 2008-09-17

15 answers

Istnieje wiele rozwiązań, w zależności od twoich wymagań dystrybucyjnych.

  1. Użyj słoika. Zakłada to, że użytkownik ma zainstalowaną poprawną wersję Javy, w przeciwnym razie użytkownik otrzyma wyjątki "class-file format version". Jest to dobre dla wewnętrznej dystrybucji wewnątrz firmy.

  2. Użyj launch4j i instalatora takiego jak NSIS. Daje to o wiele większą kontrolę, chociaż użytkownik może nadal robić głupie rzeczy, takie jak odłączanie środowiska Java runtime. Jest to chyba najbardziej popularne podejście i to, z czego obecnie korzystam.

  3. Użyj Webstart. Zakłada to również, że użytkownik ma zainstalowaną poprawną wersję Javy, ale o wiele łatwiej jest ją uruchomić. Z mojego doświadczenia wynika, że jest to w porządku dla ściśle kontrolowanych środowisk intranetowych, ale staje się bólem przy większych wdrożeniach, ponieważ ma wiele dziwnych awarii. Może być lepiej z nową technologią wtyczek w Javie 1.7.

  4. Użyj kompilatora kodu natywnego, takiego jak Excelsior JET i dystrybuować jako plik wykonywalny, lub owinąć go w instalatorze. Drogie, i ogólnie wiąże się z nieco starszą wersją Javy, i jest trochę bólu z dynamicznym ładowaniem klas, ale jest bardzo skuteczny w przypadku wdrażania na dużą skalę, gdzie trzeba zminimalizować problemy z obsługą.

 89
Author: Noel Grandin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 22:12:06

Zaawansowany instalator ułatwia pakowanie aplikacji java jako plików wykonywalnych systemu windows i jest dość elastyczny w sposobie konfiguracji. Odkryłem, że do dystrybucji aplikacji java dla klientów windows jest to najprostszy sposób.

 6
Author: rustyshelf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 06:45:44

JSmooth to prosty program, który pobiera jar i zawija go do standardowego pliku wykonywalnego windows. Jest wyposażony w prosty GUI, który pozwala skonfigurować wymagany JVM, połączyć go z aplikacją lub zapewnić opcję pobrania go, jeśli nie jest jeszcze zainstalowany. Możesz wysłać plik exe tak jak jest lub spakować go z ewentualnymi zależnościami (lub pozwolić programowi pobrać dodatkowe zależności z sieci podczas uruchamiania). Jest też za darmo, jak w piwie i mowie, co może (lub może nie) być dobrą rzeczą.

 5
Author: stian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-21 20:10:32

To zależy od tego, jak wyrafinowani są Twoi docelowi użytkownicy. W większości przypadków chcesz odizolować je od faktu, że używasz aplikacji opartej na Javie. Daj im natywny instalator, który robi właściwe rzeczy (Tworzenie wpisów menu start, wyrzutnie, rejestracja z Dodaj / usuń programy, itp.) i już wiąże środowisko Java runtime (więc użytkownik nie musi o nim wiedzieć ani się o niego troszczyć). Chciałbym zaproponować nasze wieloplatformowe narzędzie instalacyjne, BitRock InstallBuilder . Chociaż nie jest Oparty na Javie, jest powszechnie używany do pakowania aplikacji Java. Można go łatwo zintegrować z Ant i można budować instalatory Windows z Unix / Linux / Mac i odwrotnie. Ponieważ wygenerowane instalatory są natywne, nie wymagają samodzielnego ekstrakcji ani JRE, aby były już obecne w docelowym systemie, co oznacza mniejsze instalatory i oszczędza ból głowy. Chciałbym również wspomnieć, że mamy wolne licencje dla projektów open source

 4
Author: Daniel Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-18 12:07:53

Jeśli jest to prawdziwa aplikacja użytkownika końcowego z GUI, należy zignorować lanaguage, w którym napisałeś program (Java) i użyć natywnego instalatora dla każdej z wybranych platform. Mac ludzie chcą .dmg i na windows a .msi LUB A.exe installer jest sposób, aby przejść. Na Windows wolę NSIS od NullSoft tylko dlatego, że jest mniej obraźliwy niż InstallShield czy InstallAnywhere. Na OSX możesz liczyć na to, że JVM już tam jest. W systemie Windows musisz sprawdzić i zainstalować GO dla nich, jeśli konieczne. Ludzie z Linuksem nie będą uruchamiać aplikacji Java GUI, a nieliczni, którzy będą, wiedzą, co zrobić z wykonywalnym .słoik.

 3
Author: Ry4an Brase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 05:00:54

Chociaż sam nie używałem NSIS (Nullsoft Scriptable Installer System), istnieją skrypty instalacyjne, które sprawdzają, czy wymagany JRE jest zainstalowany w docelowym systemie.

Wiele przykładowych skryptów jest dostępnych na stronach Code Examples i Real World Installers , takich jak:

(uwaga że nie użyłem żadnego ze skryptów, więc proszę nie traktować tego jako poparcia.)

 3
Author: coobird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 12:57:49

Pliki wykonywalne są najlepsze, ale są ograniczone do platformy tzn. użyj gcj: http://gcc.gnu.org/java/ dla Linuksa do tworzenia plików wykonywalnych i używania launch4j : http://launch4j.sourceforge.net / do tworzenia plików wykonywalnych windows. Do spakowania na Linuksa możesz użyć dowolnego packagera rpm lub deb. Dla win32 try http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

 2
Author: zurk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 04:55:34

Potrzebowałem sposobu na spakowanie mojego projektu i jego zależności do jednego pliku jar.

Znalazłem to, czego potrzebowałem używając wtyczki montażowej Maven2: Maven2 Assembly plugin

To wydaje się powielać funkcjonalność one-jar , ale nie wymaga dodatkowej konfiguracji, aby go uruchomić.

 2
Author: David Carlson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 21:37:14

Do prostych aplikacji Java lubię używać Jar ' s. bardzo proste jest rozprowadzanie jednego pliku, który użytkownik może po prostu kliknąć (Windows), lub

java -jar jarname.jar
[1]}IMHO, jar jest drogą, gdy prostota jest głównym wymogiem.
 1
Author: jjnguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 04:55:29

Tworzę aplikacje eclipse RCP. Zwykle do uruchomienia aplikacji eclipse dołączony jest program uruchamiający. Dołączam wirtualną maszynę Javy do folderu aplikacji w podkatalogu / jre, aby upewnić się, że zostanie użyta odpowiednia wersja Javy.

Następnie pakujemy Inno Setup do instalacji na maszynie użytkownika.

 1
Author: Mario Ortegón,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 07:48:16

Jaki jest najlepszy sposób dystrybucji Aplikacja Java? Co jeśli Java aplikacja musi zainstalować artefakty do komputera użytkownika? Czy są jakieś dobra instalacja/pakowanie Javy systemy tam są?

Z mojego doświadczenia (z oceniam kilka opcji), install4j jest dobrym rozwiązaniem. Tworzy natywne instalatory dla każdej platformy i jest specjalnie nastawiony na instalowanie aplikacji Java. Szczegółowe informacje można znaleźć w "Features " na jego strona internetowa.

Install4j jest jednak komercyjnym narzędziem. Zwłaszcza jeśli twoje potrzeby są stosunkowo proste (wystarczy rozprowadzić aplikację i zainstalować kilka artefaktów), istnieje wiele innych dobrych opcji, w tym darmowych(jak izPack lub wspomniany już Lauch4j ). Ale prosiłeś o najlepszy sposób i według mojej obecnej wiedzy install4j jest tym, szczególnie do dystrybucji większych lub bardziej skomplikowanych aplikacji Java (EE).

 1
Author: Jonik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:35

Najlepsza odpowiedź zależy od platformy. W przypadku wdrożenia w systemie Windows, miałem dobre wyniki przy użyciu kombinacji one-jar i launch4j. Zajęło trochę czasu, aby skonfigurować moje środowisko kompilacji poprawnie (Skrypty ant, głównie), ale teraz jest to dość bezbolesne.

 0
Author: qualidafial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 04:58:58

Cóż z mojego punktu widzenia nadrzędnym mechanizmem dystrybucji jest użycie czegoś w rodzaju ClickOnce, lub WebStart technologii. Wystarczy wdrożyć wersję na serwerze i dostaje się automatycznie do klientów po wydaniu wersji. Również platforma Eclipse RCP zawiera UpdateManager, który robi to, co robi WebStart, ale także wiele więcej.

Ponieważ używam Maven2 do budowania, wdrożenie to tylko bułka z masłem: skopiuj zbudowany słoik do lokalizacji na serwer, zaktualizuj plik jnlp w razie potrzeby i gotowe.

 0
Author: Petr Macek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 06:24:55

Installanywhere jest dobry, ale drogi-nie znalazłem (jako) dobrego DARMOWEGO

 0
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-24 12:53:42

Spakowałbym plik jar wraz z innymi zależnymi jarami, plikami konfiguracyjnymi i dokumentacją wraz z run.bat/run.sh. Użytkownik końcowy powinien być w stanie rozpakować go w dowolnym miejscu i edytować bieg.bat w razie potrzeby (powinien działać bez edycji w większości przypadków). Instalator może być przydatny, jeśli chcesz utworzyć wpisy w menu start, pulpicie, zasobniku systemowym itp.

Jako użytkownik preferuję rozpakowywanie i uruchamianie instalacji (brak wpisów w menu start). Jednak ludzie spoza branży IT może mieć różne preferencje. Więc jeśli aplikacja jest w dużej mierze skierowana dla programistów zip-Uruchom.trasa bat i aplikacje dla ogółu społeczeństwa mogą być instalowane za pomocą Instalatora.

 -2
Author: Rejeev Divakaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 08:08:53