Java ist eine meiner bevorzugten Programmiersprachen. Ich habe immer das Problem, meine Anwendung an Endbenutzer zu verteilen.
Es ist nicht immer so benutzerfreundlich, einem Benutzer eine JAR zu geben, wie ich es gerne hätte. Für die Verwendung von Java WebStart muss ein Webserver gewartet werden.
Was ist der beste Weg, um eine Java-Anwendung zu verteilen? Was ist, wenn die Java-Anwendung Artefakte auf dem Computer des Benutzers installieren muss? Gibt es gute Java-Installations- / Verpackungssysteme?
java
installer
jar
software-distribution
Laplie Anderson
quelle
quelle
Antworten:
Abhängig von Ihren Vertriebsanforderungen gibt es eine Vielzahl von Lösungen.
Verwenden Sie einfach ein Glas. Dies setzt voraus, dass der Benutzer die richtige Java-Version installiert hat, andernfalls erhält der Benutzer Ausnahmen vom "Klassendateiformat". Dies ist in Ordnung für den internen Vertrieb innerhalb eines Unternehmens.
Verwenden Sie launch4j und ein Installationsprogramm wie NSIS. Dies gibt Ihnen viel mehr Kontrolle, obwohl der Benutzer immer noch dumme Dinge tun kann, wie die Java-Laufzeit zu deinstallieren. Dies ist wahrscheinlich der beliebteste Ansatz und das, was ich derzeit verwende.
Verwenden Sie Webstart. Dies setzt auch voraus, dass der Benutzer die richtige Java-Version installiert hat, aber es ist viel einfacher, loszulegen. Ich habe die Erfahrung gemacht, dass dies für streng kontrollierte Intranetumgebungen in Ordnung ist, bei größeren Bereitstellungen jedoch zu einem Problem wird, da es einige seltsame Fehler gibt. Mit der neuen Plug-In-Technologie in Java 1.7 wird es möglicherweise besser.
Verwenden Sie einen nativen Code-Compiler wie Excelsior JET und verteilen Sie ihn als ausführbare Datei oder packen Sie ihn in ein Installationsprogramm. Teuer, und es bindet Sie im Allgemeinen an eine etwas ältere Version von Java, und es gibt einige Probleme beim dynamischen Laden von Klassen, aber es ist sehr effektiv für die Bereitstellung in großem Maßstab, bei der Sie Ihre Support-Probleme minimieren müssen.
quelle
Das erweiterte Installationsprogramm erleichtert das Packen von Java-Apps als ausführbare Windows-Dateien und ist sehr flexibel in der Art und Weise, wie Sie es einrichten können. Ich habe festgestellt, dass dies für die Verteilung von Java-Anwendungen an Windows-Clients der einfachste Weg ist.
quelle
JSmooth ist ein einfaches Programm, das Ihre JAR-Datei in eine ausführbare Windows-Standarddatei packt . Es wird mit einer einfachen Benutzeroberfläche geliefert, mit der Sie die erforderliche JVM konfigurieren, mit der Anwendung bündeln oder eine Option zum Herunterladen bereitstellen können, falls diese noch nicht installiert ist. Sie können die exe-Datei unverändert senden oder mit möglichen Abhängigkeiten komprimieren (oder das Programm die zusätzlichen Abhängigkeiten beim Start aus dem Netz herunterladen lassen). Es ist auch kostenlos, wie in Bier und Sprache, was eine gute Sache sein kann (oder auch nicht).
quelle
Dies hängt davon ab, wie anspruchsvoll Ihre Zielbenutzer sind. In den meisten Fällen möchten Sie sie von der Tatsache isolieren, dass Sie eine Java-basierte App ausführen. Geben Sie ihnen ein natives Installationsprogramm, das das Richtige tut (Startmenüeinträge erstellen, starten, sich bei Programmen zum Hinzufügen / Entfernen registrieren usw.) und bereits eine Java-Laufzeit bündelt (sodass der Benutzer dies nicht wissen oder sich nicht darum kümmern muss). Ich möchte unser plattformübergreifendes Installationstool vorschlagen. BitRock InstallBuilder vorschlagen. Obwohl es nicht Java-basiert ist, wird es häufig zum Packen von Java-Anwendungen verwendet. Es kann einfach in Ant integriert werden und Sie können Windows-Installationsprogramme unter Unix / Linux / Mac und umgekehrt erstellen. Da die generierten Installationsprogramme nativ sind, muss kein Selbstextraktionsschritt oder eine JRE bereits im Zielsystem vorhanden sein. Dies bedeutet kleinere Installationsprogramme und erspart Ihnen einige Kopfschmerzen. Ich möchte auch erwähnen, dass wir kostenlose Lizenzen für Open Source-Projekte haben
quelle
Ausführbare Dateien sind am besten, aber sie sind plattformbeschränkt, dh verwenden Sie gcj: http://gcc.gnu.org/java/ für Linux, um ausführbare Dateien zu erstellen, und verwenden Sie launch4j: http://launch4j.sourceforge.net/ , um ausführbare Windows-Dateien zu erstellen. Zum Packen unter Linux können Sie einen beliebigen RPM- oder Deb-Packager verwenden. Für win32 versuchen Sie http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System
quelle
Wenn es sich um eine echte GUI-Endbenutzeranwendung handelt, sollten Sie die Sprache, in der Sie das Programm geschrieben haben (Java), ignorieren und für jede der von Ihnen ausgewählten Plattformen ein natives Installationsprogramm verwenden. Mac-Leute wollen ein .dmg und unter Windows ist ein .msi oder ein .exe-Installationsprogramm der richtige Weg. Unter Windows bevorzuge ich NSIS von NullSoft nur, weil es weniger zu beanstanden ist als InstallShield oder InstallAnywhere. Unter OSX können Sie sich darauf verlassen, dass die JVM bereits vorhanden ist. Unter Windows müssen Sie es überprüfen und gegebenenfalls installieren. Linux-Benutzer werden keine Java-GUI-Anwendungen ausführen, und die wenigen, die dies tun, wissen, was mit einer ausführbaren JAR-Datei zu tun ist.
quelle
Obwohl ich NSIS nicht benutzt habe (Nullsoft Scriptable Installer System) verwendet habe, gibt es Installationsskripte, die prüfen, ob die erforderliche JRE auf dem Zielsystem installiert ist oder nicht.
Viele Beispielskripte sind von den Codebeispielen und Real World Installateure Seiten, wie zB:
(Bitte beachten Sie, dass ich keines der Skripte tatsächlich verwendet habe. Nehmen Sie es daher bitte nicht als Bestätigung.)
quelle
Ich brauchte eine Möglichkeit, mein Projekt und seine Abhängigkeiten in eine einzige JAR-Datei zu packen.
Mit dem Maven2 Assembly Plugin habe ich gefunden, was ich brauchte: Maven2 Assembly Plugin
Dies scheint die Funktionalität von one-jar zu duplizieren , erfordert jedoch keine zusätzliche Konfiguration, um es zum Laufen zu bringen.
quelle
Für einfache Java-Apps verwende ich gerne Jar's. Es ist sehr einfach, eine Datei zu verteilen, auf die ein Benutzer einfach klicken kann (Windows) oder
IMHO, Glas ist der richtige Weg, wenn Einfachheit eine Hauptanforderung ist.
quelle
Ich entwickle Eclipse RCP-Anwendungen. Normalerweise ist zum Starten einer Eclipse-Anwendung ein ausführbarer Launcher enthalten. Ich füge die Java Virtual Machine in den Anwendungsordner in einem / jre-Unterverzeichnis ein, um sicherzustellen, dass die richtige Java-Version verwendet wird.
Anschließend verpacken wir mit Inno Setup die Installation auf dem Computer des Benutzers.
quelle
Nach meiner Erfahrung (aus der Bewertung einer Reihe von Optionen ) ist install4j eine gute Lösung. Es erstellt native Installationsprogramme für jede Plattform und ist speziell auf die Installation von Java-Apps ausgerichtet. Weitere Informationen finden Sie unter " Funktionen " auf der Website.
install4j ist jedoch ein kommerzielles Tool. Insbesondere wenn Ihre Anforderungen relativ einfach sind (verteilen Sie einfach eine Anwendung und installieren Sie einige Artefakte), gibt es viele andere gute Optionen, einschließlich kostenloser (wie izPack oder das bereits erwähnte Lauch4j ). Aber Sie haben nach dem besten Weg gefragt , und meines Wissens ist install4j derjenige, insbesondere für die Verteilung größerer oder komplizierterer Java (EE) -Apps.
quelle
Die beste Antwort hängt von der Plattform ab. Für die Bereitstellung unter Windows habe ich mit einer Kombination aus One-Jar und launch4j gute Ergebnisse erzielt . Es hat eine Weile gedauert, bis meine Build-Umgebung richtig eingerichtet war (meistens Ant-Skripte), aber jetzt ist es ziemlich schmerzlos.
quelle
Aus meiner Sicht besteht der überlegene Verteilungsmechanismus darin, etwas wie ClickOnce oder WebStart- Technologie zu verwenden. Sie stellen die Version einfach auf dem Server bereit und sie wird automatisch an die Clients gesendet, wenn die Version veröffentlicht wird. Die Eclipse RCP-Plattform enthält auch UpdateManager, der genau das tut, was WebStart tut, aber noch viel mehr.
Da ich Maven2 zum Erstellen verwende, ist die Bereitstellung nur ein Kinderspiel: Kopieren Sie das erstellte JAR an den Speicherort auf dem Server, aktualisieren Sie die JNLP-Datei bei Bedarf, und Sie sind fertig.
quelle
installanywhere ist gut, aber teuer - ich habe keine (als) gute kostenlose gefunden
quelle
Ich würde die JAR-Datei zusammen mit anderen abhängigen JARs, Konfigurationsdateien und Dokumentationen zusammen mit einer run.bat / run.sh komprimieren. Der Endbenutzer sollte in der Lage sein, es an einen beliebigen Ort zu entpacken und die run.bat bei Bedarf zu bearbeiten (sie sollte in den meisten Fällen ohne Bearbeitung ausgeführt werden). Ein Installationsprogramm kann hilfreich sein, wenn Sie Einträge im Startmenü, auf dem Desktop, in der Taskleiste usw. erstellen möchten.
Als Benutzer bevorzuge ich das Entpacken und Ausführen einer Installation (bitte keine Startmenüeinträge). Personen außerhalb der IT-Branche haben jedoch möglicherweise andere Vorlieben. Wenn die Anwendung hauptsächlich für Entwickler bestimmt ist, können zip-run.bat route und Anwendungen für die breite Öffentlichkeit mithilfe eines Installationsprogramms installiert werden.
quelle