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 auf Basis des java network launching protocol (JNLP) durch den Download einer kleinen XML-basierten *.jnlp-Datei, die ihrerseits das Webstart-Programm startet. Dies lädt dann wiederum die gewünschte Applikation aus dem Netz und führt diese aus.

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.

Ab der Version 11 wurde der Webstart-Standard von Oracle aufgegeben und ist nicht mehr in dessen Java-Distributionen enthalten. Um WebStart nach wie vor nutzen zu können, muss deshalb vorher dessen OpenSource-Implementierung von https://openwebstart.com/ heruntergeladen und installiert werden.

Um Java-Webstart zu nutzen, muss zunächst die auszuführende Java-Applikation 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="https://javabeginners.de/webstart/"
href="https://javabeginners.de/webstart/jnlp/Cent.jnlp"> 
    <information> 
        <title>Cent</title> 
        <vendor>javabeginners.de</vendor> 
        <homepage href="https://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="https://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

Um ein Programm per Webstart auszuführen, muss die *.jar-Datei signiert sein. Hierzu muss zunächst ein Schlüssel erstellt werden, mit dem die Datei dann in einem zweiten Schritt signiert wird. Dies geschieht durch zwei Kommandozeilen-Programme, 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

Ausführung eines Webstarts

Durch Einbindung der *.jnlp_Datei in eine Webseite kann ein Webstart angeboten werden:

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

Seine Ausführung kann dann durch Aufrufen des Links oder alternativ durch Download und Ausführen der *.jnlp-Datei angestoßen werden.
In jedem Falle kann es in der Folge zu einer Warnung vor dem Ausführen einer selbst-signierten oder sogar gar nicht signierten Datei kommen.

#

Entsprechendes Vertrauen vorausgesetzt1, kann dies umgangen werden, indem im Java Control Panel unter dem Registerreiter 'Sicherheit' unten im Feld unter 'Ausnahmeliste' eine entsprechende Ausnahme für den jeweiligen Anbieter, hier https://javabeginners.de, gesetzt wird.

#

1) Das Ausführen einer von einer nicht als vertrauenwürdig eingestuften Zertifizierungsstelle zertifizierten Anwendung wird von Java aus guten Gründen prinzipiell nicht empfohlen. Nähere Informationen hierzu unter https://java.com/de/download/help/appsecuritydialogs.xml

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.