2016-06-24 19 views
5

Ich habe eine OS X objective-c-Anwendung, die programmatisch den Java-Befehl aufruft, um ein Java-Programm auszuführen.Fügen Sie eine Kopie von JVM in das App-Bundle ein

Wenn ich richtig liege, ist Java nicht mehr standardmäßig auf OS X installiert. Ich möchte meine App versenden und nicht zwingen, Java herunterzuladen, bevor sie die App verwenden können.

Wie kann ich eine Kopie der ausführbaren Java-Datei zusammen mit der Laufzeit() versenden. Natürlich kann ich im App-Paket natürlich kopieren, aber was ist mit der Java-Binärdatei? Kann ich das auch einfach kopieren?

Antwort

0

Sie können eine JRE mit Ihrer App versenden (siehe licensing). Um dem Benutzer eine Kopie von JRE zu geben, geben Sie eine ein und lassen Sie sie selbst installieren oder make a application bundle.

+0

Danke für die Antwort. Beachten Sie, dass es sich bei der Haupt-App um eine Objective-c-Anwendung handelt, die nur einen Java-Befehl ausführt. Anwendungspakete sind reine Java-Apps, daher kann ich dies nicht verwenden. Kopieren Sie also wahrscheinlich 'rt.jar' und die Java-Binärdatei (z. B./usr/bin/java). Kann ich nur die Binärdatei kopieren und funktioniert es auf allen OSX-Versionen? – edwardmp

1

Ich denke in Ihrem Fall wäre die beste Option, den Java Installer Kernel (kleine Installation, die die neueste Version von Java herunterlädt und installiert, wenn nötig) hinzuzufügen.

Das Hauptproblem bei der Bündelung der Binärdateien per se in Ihrer App ist im Grunde, Sicherheit. Schwachstellen werden routinemäßig in der JRE entdeckt und gepatcht. Wenn Sie eine bestimmte Version bündeln und nach der Veröffentlichung eine Sicherheitslücke entdeckt wird, schwächen Sie grundsätzlich die Sicherheit der Maschinen, auf denen Ihre Anwendung installiert ist. Da Sie das natürlich nicht tun möchten, sollten Sie versuchen, Logik einzubinden, um festzustellen, ob eine kompatible Version vorhanden ist, oder die richtige Version anderweitig korrekt zu installieren. Viele Installer-Pakete enthalten Optionen wie diese: Zum Beispiel sind OpenOffice/LibreOffice native Apps, aber sie benötigen Java, und sie verwenden eine ähnliche Installationsmethode wie die oben beschriebene.

+0

Übrigens, Sie könnten eine einfache Logik hinzufügen, um die neueste Versionsnummer für Java zu erhalten (http://java.com/en/download/installed8.jsp), und dann diese Version herunterladen/installieren. –

+1

Wenn Geld kein Objekt ist, können Sie Ihre Java-App auch in eine ausführbare JRE-Datei verwandeln: https://www.excelsiorjet.com. –

1

Jede eigenständige Anwendung Paket beinhaltet die folgenden Elemente:

Code Anwendung, in eine Reihe von JAR-Dateien verpackt, sowie alle anderen Anwendungsressourcen (Datendateien, native Bibliotheken)

Kopie des JRE , nur

Mutter Launcher für die Anwendung, mehrere Raketenwerfer für ein einzelnes Paket unterstützt

Metadaten, wie Symbole

von dieser Anwendung verwendet werden,

Mehrere Paketformate sind möglich. Eingebaute Unterstützung wird für verschiedene Arten von Paketen bereitgestellt. Sie können auch eigene Pakete zusammenstellen, indem Sie eine in sich abgeschlossene Anwendung, die als Ordner verpackt ist, nachbearbeiten, z. B. wenn Sie Ihre Anwendung als ZIP-Datei verteilen möchten.

-

Autarke Anwendungspakete haben die folgenden Nachteile:

"Download and run" User Experience

Im Gegensatz zu Web-Deployment ist die Benutzererfahrung nicht über „starten Sie die Anwendung von das Netz." Es handelt sich vielmehr um einen Prozess des Herunterladens, Installierens und Ausführens, bei dem der Benutzer möglicherweise zusätzliche Schritte ausführen muss, um die Anwendung zu starten. Beispielsweise muss der Benutzer möglicherweise einen Browser- oder Betriebssystemsicherheitsdialog akzeptieren oder das Installationsprogramm der Anwendung im Downloadordner suchen und starten.

Größere Download-Größe

Im Allgemeinen ist die Größe von in sich geschlossenen Anwendungspakete größer ist als die Größe einer Standalone-Anwendung, weil eine private Kopie der JRE enthalten ist.

Paket pro Zielplattform

Autarke Anwendungspakete sind plattformspezifisch und können nur für das gleiche System hergestellt werden, auf dem Sie bauen. Um eigenständige Anwendungspakete unter Windows, Linux und OS X bereitzustellen, müssen Sie Ihr Projekt auf allen drei Plattformen erstellen.

Anwendungs-Updates ist in der Verantwortung der Entwickler

Web-Einsatz von Java-Anwendungen automatisch, sobald Anwendungs-Updates aus dem Internet herunterladen, sobald sie verfügbar sind. Der Java Autoupdate-Mechanismus sorgt dafür, dass die JRE mehrmals jährlich auf die neueste sichere Version aktualisiert wird. In sich geschlossene Anwendungen haben keine integrierte Unterstützung für automatische Updates.