Eclipse-basierte Anwendung mit Java-Webstart implementieren

Anwendungen, die auf Eclipse aufbauen, können mithilfe der Technologie "Java-Webstart" implementiert werden.

Java-Webstart "ist eine Anwendungsimplementierungstechnologie, die Ihnen Möglichkeit bietet, mit vielen Funktionen ausgestattete Anwendungen mit einem einzigen Klick von Ihrem Web-Browser aus zu starten".

Die Voraussetzungen für einen Start von Eclipse von Java-Webstart aus sind:

Die folgenden Schritte beschreiben die Einrichtung einer Site für Java-Webstart, die eine featurebasierte RCP-Anwendung startet.

Schritt 1: Wrapper-Feature erstellen

Schritt 2: Wrapper-Feature und Datei "startup.jar" exportieren

Hinweis: Bevor Sie mit diesem Schritt fortfahren, stellen Sie sicher, dass ein Schlüsselspeicher zur Verfügung steht. Eclipse bietet keine Funktion zur Erstellung von Schlüsselspeichern. Sie können zu diesem Zweck die Anwendung keytool verwenden, die mit dem JDK bereitgestellt wird. Stellen Sie darüber hinaus sicher, dass die von Ihnen entwickelte Eclipse-Anwendung auf einem Java-SDK und nicht einem JRE läuft. Wird diese Vorgabe nicht erfüllt, schlägt die JAR-Signierung fehl.

Schritt 3: JNLP-Hauptdatei erstellen

Eine Java-Webstart-Anwendung wird durch JNLP-Dateien beschrieben. Diese ersetzen die Dateien eclipse.exe und config.ini durch einen funktional entsprechenden Mechanismus. JNLP verfügt beispielsweise über seinen eigenen Mechanismus zur Steuerung von Eingangsanzeigen, Arten der Übergabe von Parametern und Definition dessen, woraus sich die Anwendung zusammensetzt.

Bei dem Exportiervorgang wurde bereits alle einfachen JNLP-Dateien erstellt, so dass Sie lediglich noch die Hauptdatei zur Steuerung der Anwendung schreiben müssen. Da der Großteil der Hauptdatei für alle Anwendungen gleich ist, wird empfohlen, dass Sie mit der nachfolgenden selbst-dokumentierten Vorlage beginnen.

Auf der Site, die Ihre Anwendung startet, muss sich die Datei im gleichen Ordner befinden, wie die Datei "startup.jar". Nachdem Sie die Bearbeitung dieser Datei abgeschlossen haben, ist Ihre Anwendung einsatzbereit.

<?xml version="1.0" encoding="UTF-8"?>
<jnlp 
    spec="1.0+" 
    codebase="http://myCompany.org/jnlpServer" 
    href="mail.jnlp"> <!-- URL der Site mit der JNLP-Anwendung. Sollte mit dem für den Export verwendeten Wert übereinstimmen. Href, der Name dieser Datei -->
  <information>
    <!-- Vom Benutzer lesbarer Name der Anwendung -->
    <title> Mailanwendung</title>  
    <!-- Anbietername -->
    <vendor>Mein Unternehmen</vendor>
    <!-- Anbieter-Homepage --> 
    <homepage href="Meine Unternehmenswebsite" /> 
    <!-- Produktbeschreibung-->
    <description>Dies ist ein Mail-Client</description> 
    <icon kind="splash" href="splash.gif"/>
  </information>
 
  <!--Alle Genehmigungen von der Anwendung anfordert. Bleibt unverändert-->
  <security>
    <all-permissions/>
  </security>
 
  <!-- Name der auszuführenden Hauptklasse. Bleibt unverändert-->
  <application-desc main-class="org.eclipse.core.launcher.WebStartMain">
    <argument>-nosplash</argument>
  </application-desc>
 
  <resources>
    <!-- Verweis auf startup.jar. Bleibt unverändert -->
    <jar href="startup.jar"/>
 
    <!-- Verweis auf alle Plug-ins und Features, aus denen sich die Anwendung zusammensetzt -->
    <!-- Hier wird auf das Wrapper-Feature verwiesen, da es transitiv auf alle anderen notwendigen Plug-ins verweist-->
    <extension 
        name="Wrapper feature"
        href="features/Wrappering_1.0.0.jnlp"/>
 
    <!-- Normalerweise in config.ini angegebene Informationen -->
    	<property 
        name="osgi.instance.area" 
        value="@user.home/Application Data/mail"/>
    	<property 
        name="osgi.configuration.area" 
        value="@user.home/Application Data/mail"/>
        
    <!-- Die ID des auszuführenden Produkts, wie auf der Übersichtsseite des Produkteditors dargestellt -->
    	<property 
        name="eclipse.product" 
        value="mail.product"/>
  </resources>

  <!-- Angabe auf Plattformbasis, welche JRE verwendet werden soll --> 
  <resources os="Mac">
    <j2se version="1.5+" java-vm-args="-XstartOnFirstThread"/>
  </resources>
  <resources os="Windows">
    <j2se version="1.4+"/>
  </resources>
  <resources os="Linux">
    <j2se version="1.4+"/>
  </resources>
</jnlp>

Tipp: Nachdem Sie diese Datei erstellt haben, können Sie sie im Wrapper-Feature im gleichen Ordner speichern, in dem sich auch die Datei "startup.jar" befindet. So erhalten Sie bei jedem Exportvorgang die vollständige Struktur.

Plug-in-basierte Anwendung

Obwohl Ihre RCP-Anwendung keine Features verwendet, ist ein Start mit Java-Webstart dennoch möglich.

Hierfür wird empfohlen, ein Wrapper-Feature zu erstellen, um die Erstellung der Haupt-JNLP-Datei sowie die Implementierung zu erleichtern. Dieses Wrapper-Feature listet alle Plug-ins Ihrer Anwendung auf. Sobald das Feature aktualisiert wurde, kopieren Sie die generierte JNLP-Datei und ändern Sie sie so ab, dass sie zu Ihrer Haupt-JNLP-Datei wird.

Sonstiges

Java-Webstart unter Linux

Wenn unter Linux eine Eclipse-Anwendung mit Webstart gestartet wird, wird standardmäßig die Fenstertechnik "motif" verwendet. Falls Sie GTK ausführen wollen, müssen Sie die Eigenschaft "osgi.ws" in der JNLP-Hauptdatei auf "gtk" setzen. Sie können beispielsweise Folgendes hinzufügen:

  <resources os="Linux"/>
        <property name="osgi.ws" value="gtk"/>
  </resources>

Bekannte Einschränkungen