Frage

Java ist eine meiner Programmiersprachen der Wahl. Ich habe immer in das Problem laufe obwohl meine Anwendung Verteilung an den Endverbraucher.

Geben eines Benutzers ein JAR nicht immer so benutzerfreundlich wie ich möchte und mit Hilfe von Java WebStart erfordert, dass ich einen Web-Server erhalten.

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

War es hilfreich?

Lösung

Es gibt eine Vielzahl von Lösungen, je nach Distribution Anforderungen.

  1. Sie einfach ein Glas verwenden. Dies setzt voraus, dass der Benutzer das die richtigen Java-Version installiert ist, ansonsten wird der Benutzer erhalten „Klasse-Dateiformatversion“ Ausnahmen. Das ist in Ordnung für den internen Gebrauch innerhalb eines Unternehmens.

  2. Verwenden launch4j und ein Installationsprogramm wie NSIS. Dies gibt Ihnen viel mehr Kontrolle, obwohl der Benutzer immer noch dumme Sachen wie den Java-Runtime tun kann, un-Installation. Dies ist wahrscheinlich der beliebteste Ansatz, und was ich zur Zeit verwenden.

  3. Mit Webstart. Dies setzt auch voraus, dass der Benutzer die richtige Java-Version installiert ist, aber es ist viel einfacher, in Gang zu bringen. Meine Erfahrung ist, dass dies für streng kontrollierte Intranet-Umgebungen einwandfrei ist, wird aber ein Schmerz bei größeren Installationen, weil es einige viele seltsamen Ausfälle hat. Es kann besser mit der neuen Plug-in-Technologie in Java 1.7.

  4. Verwenden Sie einen Native-Code-Compiler wie Excelsior JET und verteilen als ausführbare Datei, oder wickeln Sie es in einem Installer auf. Teuer, und es bindet Sie in der Regel auf eine etwas ältere Version von Java, und es gibt einige Schmerzen mit dynamischen Class-Loading, aber es ist sehr effektiv für großtechnischen Einsatz, wo Sie brauchen Ihre Unterstützung Probleme zu minimieren.

Andere Tipps

Advanced Installer macht es einfach, Java-Anwendungen als ausführbare Windows-Dateien zu verpacken, und es ist sehr flexibel in der Art und Weise Sie kann es einrichten. Ich habe festgestellt, dass Java-Anwendungen auf Windows-Clients zu verteilen, ist dies der einfachste Weg zu gehen.

JSmooth ist ein einfaches Programm, das Ihr Glas nimmt und es wickelt in einer Standard-Windows ausführbare Datei auf. Es kommt mit einem einfachen GUI, dass Sie die erforderlichen JVM konfigurieren kann, bündeln sie mit der Anwendung oder eine Option zur Verfügung stellen, um es herunterzuladen, wenn es nicht bereits installiert ist. Sie können die EXE-Datei senden, wie ist oder es zip mit möglichen Abhängigkeiten (oder das Programm lassen die zusätzliche Abhängigkeiten vom Netz beim Start herunterladen). Es ist auch frei, wie in Bier und Sprache, was eine gute Sache kann (oder auch nicht).

Es hängt davon ab, wie anspruchsvoll Ihre Zielgruppe ist. In den meisten Fällen wollen Sie sie aus der Tatsache zu isolieren, dass Sie eine Java-basierte Anwendung ausgeführt werden. Geben Sie ihnen mit einem nativen Installationsprogramm, das das Richtige tut (Startmenü-Einträge, Trägerraketen, die Registrierung mit Programme hinzufügen / entfernen, etc.) und bereits bündelt eine Java-Runtime (so dass der Benutzer muss nicht wissen, oder kümmern uns um es). Ich möchte unsere Cross-Plattform-Installationswerkzeug vorzuschlagen, BitRock Install . Obwohl es nicht Java-basiert, ist es häufig Anwendungen zu verpacken Java verwendet. Es kann leicht mit Ant integriert werden und können Sie auf Windows Installer von Unix / Linux / Mac und umgekehrt bauen. Da die erzeugten Installateure heimisch sind, sie benötigen keine Selbstextraktionsschritt oder eine JRE bereits im Zielsystem vorhanden sein, die kleinere Installateure bedeutet und sparen Sie einige Kopfschmerzen. Ich möchte auch erwähnen wir kostenlose Lizenzen für Open-Source-Projekte

haben

ausführbare Dateien sind am besten, aber sie sind Plattform begrenzt dh Verwendung gcj: http://gcc.gnu.org / java / für linux-Executables zu produzieren und verwenden launch4j: http://launch4j.sourceforge.net/ ausführbare Windows-Dateien zu erzeugen. Zum Paket auf Linux können Sie eine beliebige rpm oder deb Packager verwenden. Für win32 versuchen http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

Wenn es eine echte GUI-mit Endbenutzeranwendung ist sollten Sie die lanaguage ignorieren, in dem Sie das Programm geschrieben (Java) und verwenden ein nativen Installationsprogramm für jede Ihrer ausgewählten Plattformen. Mac Leute wollen eine .dmg und an den Fenstern eine .msi oder ein Exe-Installer ist der Weg zu gehen. Unter Windows ziehe ich NSIS von Nullsoft nur, weil es weniger zu beanstanden als Installshield oder InstallAnywhere ist. Auf OSX können Sie auf der JVM zählen bereits dort zu sein. Unter Windows werden Sie müssen es für sie überprüfen und ggf. einsetzen. Linux Leute nicht Java-GUI-Anwendungen laufen, und die wenigen, die wird, wissen, was mit einem ausführbaren .jar zu tun.

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

Viele Beispielskripte sind von den Codebeispiele und < a href = "http://nsis.sourceforge.net/Category:Real_World_Installers" rel = "nofollow noreferrer" title = "Real World Installers"> Real World Installateure Seiten, wie zum Beispiel:

(Bitte beachten Sie, dass ich nicht wirklich eine der Skripte verwendet, so nehmen Sie bitte nicht es als eine Bestätigung.)

brauchte ich einen Weg, um mein Projekt zu verpacken und ihre Abhängigkeiten in eine einzige JAR-Datei.

fand ich, was ich brauchte das Maven2 Assembly Plugin: Maven2 Assembly Plugin

Dies scheint die Funktionalität von ein Glas zu duplizieren, sondern erfordert keine zusätzliche Konfiguration zu erhalten es geht.

Für eine einfache Java-Anwendungen Ich mag Jar verwenden. Es ist sehr einfach eine Datei zu verteilen, die ein Benutzer klicken Sie einfach auf (Windows) oder

java -jar jarname.jar

IMHO, Glas ist der Weg zu gehen, wenn Einfachheit eine Hauptanforderung ist.

Ich entwickle RCP-Anwendungen Eclipse. Normalerweise eine Sonnenfinsternis Anwendung eine ausführbare Launcher zu starten ist im Preis enthalten. Ich schließe die Java Virtual Machine in den Anwendungsordner in einem / jre Unterverzeichnis, um sicherzustellen, dass die richtige Java-Version verwendet wird.

Wir haben dann mit Inno Setup-Paket für die Installation auf dem Computer des Benutzers.

  

Was ist der beste Weg, eine verteilen   Java-Anwendung? Was passiert, wenn die Java   Anwendung benötigt Artefakte installieren   auf den Computer des Benutzers? Sind da irgendwelche   gute Java-Installation / Verpackung   da draußen Systeme?

Nach meiner Erfahrung (von install4j ist eine gute Lösung. Es schafft einheimischen Installateure für jede Plattform, und ist speziell darauf ausgerichtet, Java-Anwendungen installieren. Weitere Einzelheiten finden Sie unter " Eigenschaften " auf ihrer Website.

install4j ist ein kommerzielles Werkzeug, though. Vor allem, wenn Ihre Bedürfnisse sind relativ einfach (nur eine Anwendung verteilen und einige Artefakte installieren), viele andere gute Möglichkeiten gibt es, darunter kostenlose Varianten (wie IzPack oder die bereits erwähnte Lauch4j ). Aber Sie bat um die am besten Art und Weise und zu meinem derzeitigen Kenntnisstand install4j ist derjenige, vor allem für die Verteilung größere oder kompliziertere Java (EE) Anwendungen.

Die beste Antwort hängt von der Plattform. Für den Einsatz unter Windows, ich habe gute Ergebnisse hatte eine Kombination aus einem Glas und launch4j . Es dauerte eine Weile dauern richtig meine Build-Umgebung einzurichten (ant-Skripte, meistens), aber jetzt ist es ziemlich schmerzlos.

Nun aus meiner Sicht die bessere Verteilungsmechanismus ist etwas zu verwenden, wie Clickonce , oder WebStart Technologie. Sie stellen nur die Version auf dem Server und es wird automatisch an die Clients, wenn die Version freigegeben wird. Auch die Eclipse RCP-Plattform enthält Updatemanager das tut, was WebStart tun, sondern auch vieles mehr.

Da ich Maven2 für Gebäude verwenden, der Einsatz ist nur ein Stück Kuchen. Das eingebaute Glas auf den Speicherort auf dem Server kopieren, aktualisieren Sie die JNLP-Datei, wenn nötig und Sie sind fertig

InstallAnywhere ist gut, aber teuer ein - ich habe nicht gefunden (as) gute kostenlose ein

würde ich die JAR-Datei zip zusammen mit anderen abhängigen Gläsern, Konfigurationsdateien und Dokumentation zusammen mit einem run.bat / run.sh. Endabnehmer an jeden beliebigen Ort entpacken es in der Lage sein und die run.bat bearbeiten, wenn erforderlich (Es sollte in den meisten Fällen ohne Bearbeitung ausgeführt werden). Ein Installationsprogramm kann nützlich sein, wenn Sie Einträge im Startmenü erstellen möchten, Desktop, Taskleiste etc.

Als Benutzer ziehe ich unzip und laufen Art der Installation (keine Startmenüeinträge bitte). Doch außerhalb der IT-Industrie Menschen können unterschiedliche Präferenzen haben. Also, wenn die Anwendung weitgehend für Entwickler gedacht ist zip-run.bat Route und Anwendungen für die allgemeine Öffentlichkeit installiert werden können ein Installationsprogramm.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top