Wie lässt sich Java Webstart verwenden?

Webstart ist ein Hilfsprogramm, das es ermöglicht, automatisch die jeweils aktuellste Version einer Desktop-Applikation aus dem Internet zu laden und zu starten. Dies geschieht durch den Download einer kleinen *.jnlp-Datei, die ihrerseits das Webstart-Programm startet, was dann wiederum die gewünschte Applikation aus dem Netz lädt und ausführt.

Die Vorteile dieses Verfahrens bestehen u.a. darin, dass Applikationen in signierter Form und in der jeweils neuesten Version ausgeführt werden können. Zudem sind sie weitgehend versionsunabhängig, werden lokal zwischengespeichert, sodass sie nicht jedes Mal nachgeladen werden müssen und laufen in einer Umgebung ab, die den strengen Java-Sicherheitsstandards entsprechen.
Um Java-Webstart zu nutzen muss zunächst eine beliebige Java-Applikation hergestellt und als *.jar-Datei gepackt werden.

Der nächste Schritt ist das Erstellen einer *.jnlp-Datei. Das ist eine einfache XML-Datei mit der Endung *.jnlp, die dem folgenden Beispiel folgt (gezeigt ist hier diejenige des hiesigen Webstart-Angebots von Cent).

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+"
codebase="http://www.javabeginners.de/webstart/"
href="http://www.javabeginners.de/webstart/jnlp/Cent.jnlp"> 
    <information> 
        <title>Cent</title> 
        <vendor>yourwebs.de</vendor> 
        <homepage href="http://javabeginners.de/Projekte/Applications/Cent.php"/> 
        <description>
            Cent - Konvertierung von Sonderzeichen zu HTML- oder numerischen Unicode-Entities
        </description> 
        <description kind="short">
            Cent Sonderzeichenkonvertierer
        </description> 
        <offline-allowed/> 
    </information> 
    <security>
        <all-permissions/>
     </security>
    <resources> 
        <j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+"/> 
        <jar href="http://www.javabeginners.de/webstart/Cent.jar"/> 
    </resources> 
    <application-desc main-class="Cent"/> 
</jnlp>

Gehen wir die Datei der Reihe nach durch:

Weiterführende Informationen zur Syntax einer *.jnlp-Datei sind in englischer Sprache z.B. hier oder hier zu finden.

*.jar signieren

Zur Verifizierung der ausführbaren *.jar-Datei muss zunächst ein Schlüssel erstellt werden, mit dem in einem zweiten Schritt die Datei signiert wird. Hierzu werden zwei Kommandozeilen-Programme benötigt, die jedoch bereits mit dem Java-SDK mitgeliefert werden:
Keytool erstellt einmalig einen sog. Keystore im Home-Verzeichnis des Nutzers in der Datei .keystore, der den Schlüssel enthält und passwortgeschützt ist. Ist der Schlüssel abgelaufen, kann die Datei einfach gelöscht und neu angelegt werden:

# -genkey erstellt den Schlüssel
# -validity legt die Gültigkeit in Tagen fest
# -keyalg bestimmt den Verschlüsselungsalgorithmus
# -alias legt den Namen des Schlüssels fest
keytool -genkey -validity 365 -keyalg rsa -alias meinKey

Nun kann die *.jar-Datei signiert werden. Hierzu wechselt man in das Verzeichnis mit der *.jar-Datei

cd pfadZurJarDatei

und führt die Signatur mit dem jarsigner aus:

jarsigner meineDatei.jar meinKey

Die Einbindung in die Webseite erfolgt dann durch Aufruf der *.jnlp-Datei:

<a href="pfadZurJnlpDatei.jnlp">start</a>