it-swarm.dev

Jaki jest najlepszy sposób dystrybucji Java aplikacje?)

Java jest jednym z moich wybranych języków programowania. Zawsze jednak mam problem z dystrybucją aplikacji wśród użytkowników końcowych.

Podanie użytkownikowi pliku JAR nie zawsze jest tak przyjazne dla użytkownika, jak bym chciał, i użycie Java WebStart wymaga utrzymywania serwera WWW.

Jaki jest najlepszy sposób dystrybucji aplikacji Java? Co się stanie, jeśli aplikacja Java wymaga instalacji artefaktów na komputerze użytkownika?) Czy jest jakaś dobra Java?

113
Laplie Anderson

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

  1. Po prostu użyj słoika. Zakłada się, że użytkownik ma poprawną wersję Java zainstalowana wersja, w przeciwnym razie użytkownik otrzyma wyjątki „wersja w formacie pliku klasowego”. Jest to dobre w przypadku wewnętrznej dystrybucji wewnątrz firmy.

  2. Użyj launch4j i instalatora takiego jak NSIS. Daje to ci o wiele większą kontrolę, chociaż użytkownik nadal może robić głupie rzeczy, takie jak odinstalowanie Java. Jest to prawdopodobnie najpopularniejsze podejście i to, czego obecnie używam.

  3. Użyj Webstart. Zakłada się również, że użytkownik ma zainstalowaną poprawną wersję Java wersja jest zainstalowana, ale o wiele łatwiej jest zacząć. Z mojego doświadczenia wynika, że ​​jest to dobre w przypadku ściśle kontrolowanych środowisk intranetowych, ale staje się trudniejsze z większym wdrożeń, ponieważ ma wiele dziwnych błędów. Może się poprawić dzięki nowej technologii wtyczek w Java 1.7.

  4. Użyj kompilatora natywnego kodu, takiego jak Excelsior JET, i dystrybuuj jako plik wykonywalny lub zawiń w instalatorze. Jest to drogie i ogólnie wiąże się z nieco starszą wersją Javy, a dynamiczne ładowanie klas powoduje pewne problemy, ale jest bardzo skuteczne w przypadku wdrażania na dużą skalę, gdzie trzeba zminimalizować problemy z obsługą.

86
Noel Grandin
9
Dmitry Leskov

zaawansowany instalator ułatwia pakowanie Java aplikacje jako pliki wykonywalne systemu Windows i jest dość elastyczny w sposobie konfigurowania. Znalazłem to dla dystrybucji = Java aplikacje dla klientów Windows, jest to najłatwiejsza droga).

5
rustyshelf

JSmooth to prosty program, który pobiera słoik i pakuje go w standardowy plik wykonywalny systemu Windows. Jest wyposażony w prosty interfejs GUI, który pozwala skonfigurować wymaganą maszynę JVM, połączyć ją z aplikacją lub udostępnić opcję pobrania, jeśli nie jest jeszcze zainstalowana. Możesz wysłać plik exe w takiej postaci, w jakiej jest, lub skompresować go z możliwymi zależnościami (lub pozwolić programowi na pobranie dodatkowych zależności z sieci podczas uruchamiania). Jest również darmowy, jak w piwie i mowie, co może (ale nie musi) być dobrą rzeczą.

4
stian

To zależy od stopnia zaawansowania docelowych użytkowników. W większości przypadków chcesz odizolować je od faktu, że korzystasz z aplikacji opartej na Javie. Daj im natywnego instalatora, który robi to dobrze (twórz wpisy menu Start, programy uruchamiające, rejestruj z dodawaniem/usuwaniem programów itp.) I już zawiera pakiet Java środowisko uruchomieniowe (aby użytkownik nie muszę o tym wiedzieć lub się tym przejmować). Chciałbym zasugerować nasze narzędzie do instalacji na wielu platformach, BitRock InstallBuilder . Chociaż nie jest oparte na Javie, zwykle jest używane do pakowania Java Aplikacje. Można go łatwo zintegrować z Antem i można budować instalatory Windows z Uniksa/Linuksa/Maca i odwrotnie. Ponieważ generowane instalatory są rodzime, nie wymagają etapu samorozpakowania ani środowiska JRE być już obecnym w systemie docelowym, co oznacza mniejszych instalatorów i pozwala zaoszczędzić trochę problemów. Chciałbym również wspomnieć, że mamy darmowe licencje na projekty open source

4
Daniel Lopez

pliki wykonywalne są najlepsze, ale mają ograniczoną platformę, tj. użyj gcj: http://gcc.gnu.org/Java/ dla systemu Linux do tworzenia plików wykonywalnych i użyj launch4j: http: // launch4j .sourceforge.net / do tworzenia plików wykonywalnych systemu Windows. Aby spakować na Linuksie, możesz użyć dowolnego rpm lub deb packagera. W przypadku win32 spróbuj http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

3
zurk

Jeśli jest to prawdziwa aplikacja użytkownika końcowego z graficznym interfejsem użytkownika, należy zignorować język, w którym napisano program (Java) i użyć rodzimego instalatora dla każdej z wybranych platform. Użytkownicy komputerów Mac chcą pliku .dmg, a w systemie Windows najlepszym rozwiązaniem jest instalator .msi lub .exe. W systemie Windows wolę NSIS od NullSoft tylko dlatego, że jest mniej kontrowersyjny niż InstallShield lub InstallAnywhere. W OSX możesz liczyć, że JVM już tam jest. W systemie Windows musisz je sprawdzić i zainstalować, jeśli to konieczne. Ludzie Linuksa nie będą uruchamiać Java, a nieliczni, którzy wiedzą, co zrobić z plikiem wykonywalnym .jar).

3
Ry4an Brase

Chociaż sam nie użyłem NSIS (system instalatora skryptów Nullsoft), istnieją skrypty instalacyjne, które sprawdzą, czy wymagana wersja JRE jest zainstalowana w systemie docelowym system.

Wiele przykładowych skryptów jest dostępnych na stronach Przykłady kod i Instalatorzy świata rzeczywistego , takich jak:

(Pamiętaj, że tak naprawdę nie użyłem żadnego ze skryptów, więc nie bierz tego za poparcie).

3
coobird

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

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

Wygląda na to, że duplikuje funkcjonalność one-jar , ale nie wymaga dodatkowej konfiguracji, aby go uruchomić.

2
David Carlson

W przypadku prostych Java aplikacji, które lubię używać w Jar). Bardzo łatwo jest rozpowszechnić jeden plik, który użytkownik może po prostu kliknąć (Windows) lub

Java -jar jarname.jar

IMHO, słoik to droga, w której prostota jest głównym wymogiem.

1
jjnguy

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

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

1
Mario Ortegón

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 instalacyjne/pakujące Java?

Z mojego doświadczenia (od ocena wielu opcji ), install4j jest dobrym rozwiązaniem. Tworzy rodzime instalatory dla dowolnej platformy i jest specjalnie przystosowany do instalowania aplikacji Java. Aby uzyskać szczegółowe informacje, patrz „ Funkcje ” na stronie internetowej.

install4j jest jednak narzędziem komercyjnym. Zwłaszcza jeśli twoje potrzeby są stosunkowo proste (po prostu rozpowszechnij aplikację i zainstaluj niektóre artefakty), istnieje wiele innych dobrych opcji, w tym darmowe (np. izPack lub już wspomniane Lauch4j ) . Ale poprosiłeś o najlepszy sposób i, zgodnie z moją obecną wiedzą, install4j jest tym, który szczególnie rozpowszechnia większe lub bardziej skomplikowane Java Aplikacje (EE).

1
Jonik

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

0
qualidafial

Z mojego punktu widzenia najlepszym mechanizmem dystrybucji jest użycie czegoś takiego jak technologia ClickOnce lub WebStart . Po prostu wdrożysz wersję na serwerze, a ona zostanie automatycznie dostarczona do klientów, gdy wersja zostanie wydana. 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 jest po prostu bułka z masłem: skopiuj wbudowany słoik do lokalizacji na serwerze, w razie potrzeby zaktualizuj plik jnlp i gotowe.

0
Petr Macek

installanywhere jest dobry, ale drogi - nie znalazłem (jak) dobrego darmowego

0
Tom