it-swarm-eu.dev

Was ist der beste Weg, um Java Anwendungen zu verteilen?

Java ist eine meiner Programmiersprachen. Ich habe jedoch immer das Problem, meine Anwendung an Endbenutzer zu verteilen.

Einem Benutzer eine JAR zu geben, ist nicht immer so benutzerfreundlich, wie ich es gerne hätte, und für die Verwendung von Java WebStart muss ein Webserver eingerichtet sein.

Was ist der beste Weg, um eine Java) -Anwendung zu verteilen? Was, wenn die Java=) -Anwendung Artefakte auf dem Computer des Benutzers installieren muss? Gibt es gute Java Installations-/Verpackungssysteme da draußen?

113
Laplie Anderson

Abhängig von Ihren Vertriebsanforderungen gibt es eine Vielzahl von Lösungen.

  1. Verwenden Sie einfach ein Glas. Dies setzt voraus, dass der Benutzer die richtige Java) -Version installiert hat, andernfalls erhält der Benutzer Ausnahmen vom Typ "Class-File-Format-Version". Dies ist für die interne Verteilung innerhalb eines Unternehmens in Ordnung.

  2. 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.

  3. 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, aber mit größeren Schwierigkeiten verbunden ist Bereitstellungen, weil es einige seltsame Fehler gibt. Mit der neuen Plug-in-Technologie in Java 1.7.

  4. Verwenden Sie einen Native-Code-Compiler wie Excelsior JET, und verteilen Sie ihn als ausführbare Datei, oder schließen Sie ihn in einem Installationsprogramm ab. Teuer und im Allgemeinen mit einer etwas älteren Java-Version verbunden. Das dynamische Laden von Klassen bereitet einige Probleme, ist jedoch sehr effektiv für die Bereitstellung in großem Maßstab, bei der Sie den Support-Aufwand minimieren müssen.

86
Noel Grandin
9
Dmitry Leskov

erweitertes Installationsprogramm macht es einfach, Java Programme als ausführbare Windows-Programme zu packen, und es ist ziemlich flexibel in der Art, wie Sie es einrichten können Java Anwendungen für Windows-Clients, dies ist der einfachste Weg.

5
rustyshelf

JSmooth ist ein einfaches Programm, das Ihr Glas nimmt und es 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, wenn sie noch nicht installiert ist. Sie können die exe-Datei so wie sie ist senden oder sie mit möglichen Abhängigkeiten komprimieren (oder das Programm die zusätzlichen Abhängigkeiten beim Start aus dem Internet herunterladen lassen). Es ist auch kostenlos, wie bei Bier und Reden, was eine gute Sache sein kann (oder auch nicht).

4
stian

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, Startprogramme starten, sich bei Programmen hinzufügen/entfernen usw.) und bereits eine Java -Runtime bündeln (damit der Benutzer es nicht wissen muss) oder kümmere dich darum). Ich möchte unser plattformübergreifendes Installationstool vorschlagen, BitRock InstallBuilder . 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 systemeigen sind, ist weder ein Selbstentpackungsschritt noch eine JRE erforderlich, die bereits im Zielsystem vorhanden ist. Dies bedeutet, dass kleinere Installationsprogramme vorhanden sind und Sie einige Kopfschmerzen ersparen. Ich möchte auch erwähnen, dass wir kostenlose Lizenzen für Open Source-Projekte haben

4
Daniel Lopez

ausführbare Dateien sind am besten geeignet, sie sind jedoch plattformbeschränkt. Verwenden Sie also gcj: http://gcc.gnu.org/Java/ für Linux, um ausführbare Dateien zu erstellen und 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

3
zurk

Wenn es sich um eine echte GUI-Endbenutzeranwendung handelt, sollten Sie die Sprache, in der Sie das Programm geschrieben haben (Java), ignorieren und ein natives Installationsprogramm für jede der von Ihnen ausgewählten Plattformen verwenden. Mac-Benutzer möchten eine .dmg-Datei und unter Windows ein .msi- oder .exe-Installationsprogramm. 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 dies überprüfen und gegebenenfalls installieren. Linux-Benutzer werden keine Java GUI-Anwendungen ausführen, und die wenigen, die das tun werden, wissen, was mit einer ausführbaren .jar-Datei zu tun ist.

3
Ry4an Brase

Obwohl ich NSIS (Nullsoft Scriptable Installer System) nicht selbst verwendet habe, gibt es Installationsskripte, die prüfen, ob die erforderliche JRE auf dem Ziel installiert ist oder nicht System.

Viele Beispielskripte sind auf den Seiten Codebeispiele und Real World Installer verfügbar, z. B .:

(Bitte beachten Sie, dass ich keines der Skripte verwendet habe, nehmen Sie es also nicht als Empfehlung.)

3
coobird

Ich brauchte eine Möglichkeit, mein Projekt und seine Abhängigkeiten in eine einzige JAR-Datei zu packen.

Ich habe mit dem Maven2 Assembly Plugin 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 in Gang zu bringen.

2
David Carlson

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

Java -jar jarname.jar

Glas ist der richtige Weg, wenn Einfachheit eine Hauptanforderung ist.

1
jjnguy

Ich entwickle Eclipse RCP-Anwendungen. Normalerweise wird zum Starten einer Eclipse-Anwendung ein ausführbarer Launcher mitgeliefert. Ich füge die Java virtuelle Maschine im Anwendungsordner in ein/jre-Unterverzeichnis ein, um sicherzustellen, dass die richtige Java Version verwendet wird.

Dann packen wir mit Inno Setup für die Installation auf dem Computer des Benutzers.

1
Mario Ortegón

Wie verteile ich eine Java -Anwendung am besten? Was ist, wenn die Anwendung Java Artefakte auf dem Computer des Benutzers installieren muss? Gibt es gute Java Installations-/Verpackungssysteme?

Nach meiner Erfahrung (von 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. Einzelheiten finden Sie unter " Features " auf der Website.

install4j ist jedoch ein kommerzielles Tool. Besonders 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 Optionen (wie izPack oder die bereits erwähnten Lauch4j ). . Aber Sie haben nach dem besten Weg gefragt, und meines Wissens ist install4j derjenige, insbesondere für das Verteilen größerer oder komplizierterer Java (EE) Apps.

1
Jonik

Die beste Antwort hängt von der Plattform ab. Für die Bereitstellung unter Windows habe ich gute Ergebnisse mit einer Kombination aus one-jar und launch4j erzielt. Es hat eine Weile gedauert, meine Build-Umgebung richtig einzurichten (meistens Ant-Skripte), aber jetzt ist es ziemlich schmerzlos.

0
qualidafial

Meiner Meinung nach ist es der überlegene Verteilungsmechanismus, etwas wie ClickOnce oder WebStart zu verwenden. Sie stellen die Version einfach auf dem Server bereit und sie wird automatisch an die Clients gesendet, wenn die Version freigegeben wird. Die Eclipse RCP-Plattform enthält auch UpdateManager, der die Funktionen von WebStart ausführt, aber auch viel mehr.

Da ich Maven2 zum Erstellen verwende, ist die Bereitstellung nur ein Kinderspiel: Kopieren Sie die erstellte JAR-Datei an den Speicherort auf dem Server, aktualisieren Sie die JNLP-Datei, falls erforderlich, und fertig.

0
Petr Macek

installanywhere ist gut, aber teuer - ich habe (als) gute freie nicht gefunden

0
Tom