2009-06-02 5 views
2

Wie kann ich eine abgespeckte JVM bündeln, um nur meine Anwendung auszuführen?bundling jvm mit der Anwendung

ich möchte die JVM entfernen, damit ich sie in meine Anwendung aufnehmen kann. Ich weiß, dass EXE-Wrapper das können, aber was ich gerne wissen möchte, ist wie? so dass ich es skripten und Bundles für mehrere Betriebssysteme erstellen kann, nicht nur für Windows.

Antwort

2

Obwohl es möglich ist, die JRE-Distribution aus technischer Sicht zu entfernen, sehen Sie sich bitte die Lizenzvereinbarung genau an. Für Java 6 heißt es:

[...] Sun Sie gewährt einen nicht ausschließliche, nicht übertragbare, beschränkte Lizenz ohne Gebühren, die Software zu vervielfältigen und zu verbreiten, sofern , dass (i) Sie verteilen die Software vollständig und unmodifizierten und nur im Rahmen gebündelt und für den alleinigen Zweck des Laufens, den sie das Programm [...] {Supplemental-Lizenzbedingungen (B)}

ich es so gelesen habe: Sie dürfen nur komplette (Sun) JRE 6 (oder JDK 6) verteilen.

+2

Dies ist nicht 100% genau. Erstens erlaubt die Lizenz das Weglassen einiger Dateien, wenn sie in der JRE neu verteilt werden, jedoch nicht die größten. Zweitens gibt es Open-Source-Implementierungen: OpenJDK, Apache Harmony, GCJ. Schließlich gibt es eine kommerzielle Java-Implementierung, die es Ihnen ermöglicht, Teile der Java-Bibliothek zu überspringen, wenn Sie Ihre App lizenzkonform packen (siehe meine Antwort unten). –

-1

Für die überwiegende Mehrheit der Benutzer (also diejenigen, die eine Java-Runtime installiert haben) sollten Sie nicht Ihre eigene benutzerdefinierte Ausführungsumgebung verteilen müssen, und tatsächlich geht dies gegen die "spirit" von Java.

Java-Code ist so konzipiert, dass er in jeder Umgebung ausgeführt werden kann, und Sie können das Doppelklick-und-Ausführen-Verhalten eines .exe mit einem Java-Programm einfach replizieren, indem Sie executable .jar erstellen.

Dies ist vielleicht nicht ganz die Antwort, die Sie suchen, und wenn dies der Fall ist, sind die Antworten zu lizenzierten JVMs, die Sie benötigen, zu diskutieren. Aber die meisten Java-Entwickler sollten keine Notwendigkeit haben, durch solche Reifen zu springen. Verteilen Sie einfach Ihre Jars und lassen Sie die Benutzer selbst eine Java-Laufzeit installieren.

+0

Wie in diesem Artikel erwähnt: http://blog.vinceliu.com/2008/01/bundling-minimal-bare-bones-jvm-with.html "Einer der Grips, warum Menschen Java als Desktop-Anwendung nicht mögen wahrscheinlich aufgrund der zusätzlichen Voraussetzung, dass die JVM vorhanden ist, die im Allgemeinen entweder nicht mit einem der Hauptbetriebssysteme auf dem heutigen Markt gebündelt ist, oder dass es die falsche Version der JVM ist, die benötigt wird wirklich ärgerlich für Endbenutzer, wenn sie nur etwas wollten, das "out of the box" funktioniert. " –

+1

"Einfach funktioniert out of the box" ist die eigentliche Idee von Java. Code ohne Laufzeitanforderungen muss für jede einzelne Plattform kompiliert werden, die der Entwickler unterstützen möchte, und Endbenutzer müssen wissen, welche Version sie benötigen. Die Last liegt jetzt auch beim Endbenutzer, um sicherzustellen, dass diese Programme im Falle von Fehlern und Sicherheitsproblemen auf dem neuesten Stand sind. Mit Java erhalten Entwickler einen einfacheren Entwicklungsprozess und Benutzer erhalten eine einfachere, sicherere Anwendung. Ich schätze die Attraktivität einer einzelnen .exe, aber es ist offensichtlich, dass Einfachheit eine falsche Bezeichnung ist. – dimo414