home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Java Webstart

Mit Java Webstart ist es möglich, eine Java Anwendung über das Internet zu starten. Dazu wird eine entsprechende URL aufgerufen und die Anwendung auf das Lokale System übertragen. Das Programm läuft lokal. Das Endergebnis kann bereits hier begutachtet werden: http://spielplatz.johner-institut.de:8080/webstart/index.jnlp.

Eine Anwendung Webstart fähig machen

Um eine Anwendung mit Webstart zu realisieren, muss ein JNLP (Java Network Launching Protocol) File erstellt werden. In dieser Datei wird festgelegt, wo die Daten der Anwendung liegen, welche Rechte die Anwendung benötigt, wer sie herausgegeben hat, etc...

1. Eine gewöhnliche Java Anwendung erstellen.

In unserem Beispiel verwenden wir folgende "Hallo Welt" Anwendung:

 

import javax.swing.JOptionPane;
public class HelloWorld{
  public static void main(String[] args) {
  String name = JOptionPane.showInputDialog("Bitte Name eingeben: ");
  JOptionPane.showMessageDialog(null, "Hallo " + name, "Hallo Welt!",  
JOptionPane.INFORMATION_MESSAGE);
  }
}

 

2. Nachdem die Anwendung kompiliert wurde, wird diese als Jar-Archiv verpackt: Dies geschieht mit dem Befehl jar cfe HelloWorld.jar HelloWorld HelloWorld.class

3. Nun muss das JNLP File erzeugt werden. Ein Grundgerüst für eine solche minimale Anwendung sieht wie folgt aus: Wichtig ist der Speicherort des JNLP Files auf dem Server, im "Codebase" am Anfang des Dokumentes, sowie der Pfad zur Anwendung unter , sowie die Einstiegsklasse der Anwendung unter "appication-desc main-class".

 

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://spielplatz.johner-institut.de:8080/webstart1" href="index.jnlp">
  <information>
    <title>Hello World Webstart App</title>
    <vendor>Johner-Institut</vendor>
    <homepage href="http://www.johner-institut.de"/>
    <description>Hello World Example</description>
    <description kind="short">Hello World</description>
  </information>
  <resources>
    <j2se version="1.6"/>
    <jar href="HelloWorld.jar"/>
  </resources>
  <application-desc main-class="HelloWorld"/>
</jnlp>

 

Diese Datei speichern wir unter index.jnlp ab. Nun beide Dateien auf den Webserver übertragen. Die Anwendung kann nun durch Aufrufen der index.jnlp Datei gestartet werden.

Weiterführende Hinweise

Anwendung signieren, um schreibend/lesend auf Festplattenverzeichnisse zuzugreifen

Diese Anwendung läuft standardmäßig mit aktivieren Sicherheitseinstellungen (Ähnlich denen eines Applets) um einer Anwendung Zugriff auf das System gestatten, muss die in der JNLP Datei eingestellt werden. Dies geschieht durch einfügen der folgenden Tags:

 

<security>
  <all-permissions/>
</security>

 

Zusätzlich muss die Anwendung signiert werden. Um dies zu bewerkstelligen, muss zuerst ein Key erzeugt werden. Dies geschieht mit dem Java SDK Tool keytool. Es wird wie folgt gestartet:

 

keytool -genkey -keystore schluesselSpeicher -alias Zertifikat 

 

Ist dies geschehen, gibt es in dem Verzeichnis die Datei "schluesselSpeicher", welche das Zertifikat enthält. Um die Anwendung zu signieren wird das Kommando:

 

jarsigner -keystore schluesselSpeicher HelloWorld.jar Zertifikat 

 

Die Anwendung ist nun signiert.

Betriebssystemunterscheidungen

Es ist möglich, abhängig vom verwendeten Gast-Betriebssystem unterschiedliche Bibliotheken nachzuladen. Beispielsweise nutzt die Grafikbibliothek SWT (welche z.B. Eclipse verwendet) direkt auf graphische Elemente des Betriebssystems zurück, muss also je nach verwendetem System anderst implementiert werden. Für eine solche unterscheidung kann im JNLP File folgendes Konstrukt eingefügt werden:

 

<resources os="Windows">
<jar href="swt-win32.jar"/>
</resources>
<resources os="Linux">
<jar href="swt-linux.jar"/>
</resources>

 

Startmenueinträge hinzufügen

Soll die Anwendung eine Verknüpfung im Startmenu erzeugen, so kann dies ebensfalls im JNLP File eingestellt werden. Dazu den folgenden Abschnitt unter "information" einfügen:

 

<icon href="http://www.meine-domain.de/icon.png"/>
<offline-allowed/>
<shortcut online="true">
  <desktop/>
  <menu submenu="Mein Programm"/>
</shortcut>

Danke an Christian Schmid