Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


21.2.2

Die JNLP-Datei



Die Beschreibungsdatei für eine Anwendung ist in XML-Notation geschrieben und auf dem Webserver abgelegt, damit die entsprechende Internetseite auf diese verweise kann. Es ist darauf zu achten, dass diese Datei auf dem Webserver mit dem Mime-Type application/x-java-jnlp-file assoziiert ist. Daher haben diese XML-Dateien meist die Endung .jnlp. Beim Apache-Webserver erreicht man dies beispielsweise durch den Eintrag
  application/x-java-jnlp-file JNLP
in der Datei mime.types.

Möchte man den Inhalt dieser Datei dynamisch generieren, kann man beispielsweise eine Java Server Page dafür benutzen, solange diese den genannten Content-Type liefert.

In einer HTML-Seite könnte dann eine entsprechende Verknüpfung folgendermaßen angegeben werden:
  <a href="myappplication.jnlp">Hier starten</a>
Möchte man hingegen eine Fehlermeldung bringen, wenn Java Web Start noch nicht installiert wurde, kann man folgenden JavaScript/VBScript-Code benutzen. Dieser dient lediglich als Beispiel und ist nur im Microsoft Internet Explorer und im Netscape Navigator 4.x lauffähig:
  <script language="Javascript" type="text/javascript"> 
    var javawsInstalled = 0; 
    var isIE = "false"; 
    if (navigator.mimeTypes && navigator.mimeTypes.length) { 
      if (navigator.mimeTypes['application/x-java-jnlp-file'])
        javawsInstalled = 1; 
      } else isIE = "true";  

    function insertLink(url, name) { 
      if (javawsInstalled) { 
        document.write('<a href="'+url+'">'+ name+'</a>'); 
        } else document.write(
                  'Java Web Start required'); 
    } 
  </script> 
  <script language="VBScript" type="text/vbscript"> 
    on error resume next 
    If isIE = "true" Then 
    If Not(IsObject(CreateObject(
              "JavaWebStart.IsInstalled"))) 
       Then 
         javawsInstalled = 0 
       Else 
         javawsInstalled = 1 
       End If 
    End If 
  </script>

Wenn man nun die entsprechende Verknüpfung mithilfe des JavaScript-Aufrufes
  <script language="JavaScript" type="text/javascript">
   insertLink ('Hier starten', 'myapplication.jnlp');
  </script>

in die HTML-Seite einbaut, erscheint eine entsprechende Fehlermeldung (»Java Web Start wird benötigt«), wenn Java Web Start nicht installiert wurde. Diese Lösung funktioniert natürlich nur bei eingeschaltetem JavaScript. Ein alternativer Text sollte zwischen <noscript> und </noscript> aufgrund der Benutzerfreundlichkeit in der HTML-Datei nicht fehlen.

Abbildung 21.5: Der Aufbau der JNLP-Datei
Abbildung 21.5

Die JNLP-XML-Datei kann dabei folgendermaßen aussehen:
  <?xml version="1.0" encoding="utf-8"?> 
  <!-- JNLP File for SwingSet2 Demo Application --> 
  <jnlp 
    spec="1.0+" 
    codebase="http://javaweb.eng.com/jaws/apps" 
    href="swingset2.jnlp"> 
    <information> 
      <title>SwingSet2 Demo Application</title> 
      <vendor>Sun Microsystems, Inc.</vendor> 
      <homepage href="docs/help.html"/> 
      <description>SwingSet2 Demo</description> 
      <description kind="short">A demo of the 
        capabilities of the Swing Graphical 
        User Interface.</description> 
      <icon href="images/swingset2.jpg"/> 
      <offline-allowed/> 
    </information> 
    <security> 
      <all-permissions/> 
    </security> 
    <resources> 
      <j2se version="1.3"/> 
      <jar href="lib/SwingSet2.jar"/> 
    </resources> 
    <application-desc main-class="SwingSet2"/> 
  </jnlp> 

jnlp

Tabelle 21.1: Attribute des Elements jnlp
AttributPflichtBeschreibung
specneinStandardwert 1.0+ bezeichnet die aktuelle Version der Spezifikation
versionneinDie Version der Datei und die Version der Applikation
codebaseneinDie Basis-URL, ab der relative Links gesucht werden
hrefneinDie (ggf. relative) URL zu dieser Datei

Das JNLP-Wurzelelement besteht neben den Attributen aus einem oder mehreren Informationsblöcken, ggf. Sicherheitsangaben, ggf. Ressourcen und eine der vier möglichen Applikationsformen Applet, Applikation, Komponente (Teil einer anderen Applikation) oder Installer.

information

Tabelle 21.2: Attribute des Elements information
AttributPflichtBeschreibung
localeneinWenn angegeben (z.B. de_DE, s. java.util.Locale), werden die entsprechenden Unterelemente genommen, wenn der Benutzer die dementsprechende Sprache auf seinem System gewählt hat.

Normalerweise verwendet man das information-Element ohne locale. Die dortigen Beschreibungen (Titel, Hersteller, Homepage, Beschreibung, Bild, Offline-Modus) können dann durch passende Informationen einer bestimmten Sprache überschrieben werden.

title

Der Titel gibt der Applikation eine verständliche Überschrift.

vendor

Der Hersteller der Applikation.

homepage

Die Homepage des Herstellers.

description

Tabelle 21.3: Attribute des Elements description
AttributPflichtBeschreibung
kind nein Die Art der Beschreibung. Es gibt one-line (einzeilige Beschreibung), short (Kurzbeschreibung) und tooltip. Längere Beschreibungen sollten eher auf der Homepage zu finden sein.

Zeigt dem Benutzer eine Beschreibung zu der Applikation.

icon

Tabelle 21.4: Attribute des Elements icon
AttributPflichtBeschreibung
href ja Die URL zu der Grafik im GIF- oder JPEG-Format.
version nein Version der Grafik. Hat die vorher gespeicherte Version eine kleinere Nummer, wird das Bild neu geladen
width nein Die Breite (in Pixeln) der Grafik.
height nein Die Höhe der Grafik
kind nein Die Art der Grafik. Der Standardwert ist default. Die anderen möglichen Werte sind selected (die Applikation wurde vom Benutzer angeklickt), disabled (der Benutzer hat die Applikation deaktiviert) und rollover (der Benutzer ist mit dem Mauszeiger auf der Applikation).
depth nein Die Farbtiefe (8, 16, 24) in Bit.

Es wird über diese Elemente - je nach Art (kind) - eine Grafik im Java Web Start Client angezeigt.

offline-allowed

Steht dieses Element im information-Element, kann diese Applikation auch ohne offene Internetverbindung gestartet werden.

security

Wenn die Applikation signiert ist, können unter diesem Element die benötigten Sicherheitseinstellungen angefordert werden. Wenn dieses Element (und das entsprechende Unterelement) nicht angegeben ist, läuft die Applikation in der Applet-ähnlichen Sandbox, mit strengen Zugriffsrechten.

all-permissions

Wenn diese Option angegeben ist und die Applikation signiert ist, werden der Applikation alle Rechte eingeräumt.

j2ee-application-client-permissions

Mit dieser Option möchte die Applikation die Zugriffsmöglichkeiten, die es als J2EE-Client benötigt. Damit darf die Applikation beispielsweise nicht auf lokale Ressourcen zugreifen, dafür aber auf alle Hosts auf allen Ports.

resources

Tabelle 21.5: Attribute des Elements resources
AttributPflichtBeschreibung
os nein Wenn diese Ressourcen nur für ein bestimmtes Betriebssystem verwendet werden sollen, kann man dies über dieses Attribut angeben. Der Wert ist identisch mit der Angabe des JRE, wenn man System.getProperty("os.name") aufruft.
arch nein Wenn diese Ressourcen nur für eine bestimmte Rechnerarchitektur verwendet werden sollen, kann man dies über dieses Attribut angeben. Der Wert ist identisch mit der Angabe des JRE, wenn man System.getProperty("os.arch") aufruft.
locale nein Sind die Ressourcen länderspezifisch, kann man dies hier angeben (z.B. locale="DE_de").

Jede Applikation benötigt verschiedene, ggf. plattform- und länderspezifische Ressourcen. Man kann bei den Attributen auch mehrere Werte angeben, wobei diese durch Leerzeichen getrennt sein müssen. Treten im Betriebssystemnamen bereits Leerzeichen auf (z.B. Windows 95), so muss dieses Leerzeichen mit einem Blackslash gekennzeichnet werden (also Windows\ 95).

property

Das JAR-Archiv enthält Klassen, die zur Ausführung der Applikation nötig sind.

Tabelle 21.6: Attribute des Elements property
AttributPflichtBeschreibung
name ja Der Name einer Property
value ja Der Wert der Property

Benötigt die Applikation bestimmte Umgebungsvariablen, die mittels System.getProperty(String name) abgefragt werden, können diese hier eingestellt werden.

jar

Tabelle 21.7: Attribute des Elements jar
AttributPflichtBeschreibung
href ja Die relative oder absolute URL zu der JAR-Datei
version nein Die Version des JAR. Wenn die angegebene Version aktueller ist als eine bereits geladene Version, wird die alte Version aktualisiert. Die Form ist dabei x.y.z usw.
main nein Gibt an, ob diese Ressource die Hauptklasse beinhaltet (true (Standard) oder false). Theoretisch muss nur diese JAR-Datei zum Ausführen geladen werden.
download nein Es gibt hier zwei mögliche Werte: eager (Standard) und lazy. Dies gibt an, ob die Ressource vor dem Start (eager) der Applikation geladen werden muss oder nicht (lazy). Durch das zusätzliche Attribut part können Ressourcen gruppiert werden, so dass z.B. für den part sound auch die plattformspezifischen nativelibs mitgeladen würden. Die Entscheidung, ob ein als lazy eingetragenes JAR geladen werden soll, ist Sache des Classloaders. Wird eine Klasse nicht gefunden, muss dieser die passende JAR-Datei herunterladen (s. auch package). Zusätzlich kann auch über das API der Download gestartet werden.
part nein Der willkürliche Name des Teils, zu dem dieses JAR gehört. Alle Bestandteile dieses part werden immer zusammen heruntergeladen.
size nein Die Größe der Datei. Nützlich, wenn der JNLP-Client die Größe nicht bestimmen kann (weil z.B. der Webserver diese Information nicht liefert).

package

Das package-Element gibt die Abhängigkeiten von Paketnamen zu parts an. Wird ein entsprechender Paketname gefunden, werden alle Bestandteile dieses part geladen.

Tabelle 21.8: Attribute des Elements package
AttributPflichtBeschreibung
name ja Der Paketname (z.B. de.dpunkt)
part ja Der Name des Teils, zu dem dieser Paketname gehört.
recursive nein true oder false (Standard). Gibt an, ob dieses package-Element auch für Unterpaketnamen gilt.

j2se

Tabelle 21.9: Attribute des Elements j2se
AttributPflichtBeschreibung
versionjaDie Version des JRE. Die Versionsnummer entspricht der üblichen Nummerierung von Java, wobei am Ende der Bezeichnung + oder * angehängt werden kann. Während + auch eine höhere Version einschließt, drückt * lediglich ein einfaches Wildcard aus. 1.2+ würde also auch 1.3 einschließen, während 1.2* nur Unterversionen kennzeichnet.
href nein Die URL, unter der das JRE geladen werden kann.
initial-heap-size nein Die Heap-Größe beim Start in Bytes. Man kann über den Appendix k bzw. m auch die Größe in Kilobytes bzw. Megabytes angeben.
max-heap-size nein Die maximale Heap-Größe in Bytes. Man kann über den Appendix k bzw. m auch die Größe in Kilobytes bzw. Megabytes angeben.

Über das j2se-Element kann man die unterstützten JREs angeben, wobei die bevorzugte Plattform als erstes angegeben sein sollte. Zu jedem j2se-Element kann man das Unterelement resources (s.o.) angeben. Damit kann man in Abhängigkeit von der Java-Version bestimmte Properties setzen oder zusätzliche Klassen einbinden.

extension

Tabelle 21.10: Attribute des Elements extension
AttributPflichtBeschreibung
href ja Die URL, unter der diese Erweiterung heruntergeladen werden kann
version nein Die Versionsnummer der Erweiterung
name nein Der Name der Erweiterung

Extensions sind Erweiterungen, die meist wiederum in einer JNLP-Datei beschrieben werden. Das ist typischerweise eine Component (s. component-desc) oder ein Installer (s. installer-desc).

Optional kann mithilfe des Unterelementes ext-download die Politik des Herunterladens von parts gesteuert werden.

ext-download

Referenziert einen part aus der Extension-JNLP-Datei. Hierbei kann die Download-Politik überschrieben werden.

Tabelle 21.11: Attribute des Elements ext-download
AttributPflichtBeschreibung
ext-part ja Der Name des Parts in der referenzierten JNLP-Datei
download nein eager (Standard) oder lazy. Überschreibt die Politik des part aus der referenzierten JNLP-Datei.
part nein Der Name des part, der zu diesem Extension-Teil gehört. Wird also dieser part benötigt, wird dieser Teil der Extension mitgeladen.

nativelib

Eine native Ressource. Die Verwendung dieses Elements macht nur Sinn, wenn das Vaterelement resources nur für eine bestimmte Plattform gilt.

Tabelle 21.12: Attribute des Elements nativelib
AttributPflichtBeschreibung
href ja Die URL zu der JAR-Datei mit der nativen Bibliothek.
version nein Die Version der Library.
download nein eager (Standard) oder lazy. Wenn lazy angegeben wurde, muss durch die Angabe vom Attribut part sichergestellt werden, dass die Library mitgeladen wird.
size nein Die Größe der Datei.
part nein Der Name des part, von dem die Library einen Teil darstellt.

application-desc

Gibt die Form der Anwendung (Applikation) an. Zusätzlich können über das Kindelement Argumente angegeben werden.

Tabelle 21.13: Attribute des Elements application-desc
AttributPflichtBeschreibung
main-class nein Die Klasse, bei der die main-Methode aufgerufen wird. Wenn das Attribut nicht angegeben wurde, muss in der Manifest-Datei eines JAR diese Start-Klasse angegeben sein.

argument

Möchte man der Applikation Parameter übergeben, kann man dies zwischen <argument> und </argument> angeben.

applet-desc

Gibt die Form der Anwendung (Applet) an. Über das Kindelement parameter können dem Applet noch Parameter übergeben werden.

Tabelle 21.14: Attribute des Elements applet-desc
AttributPflichtBeschreibung
main-class ja Die Klasse, die das Applet darstellt.
name ja Der Name des Applet.
width ja Die Breite des Applet in Pixeln.
height ja Die Höhe des Applet in Pixeln.
documentbase nein Die URL, die das Applet über getDocumentBase() liefert.

param

Dieses Element gibt die Parameter an, die das Applet über getParameter(String name) abfragen kann.

Tabelle 21.15: Attribute des Elements param
AttributPflichtBeschreibung
name ja Der Name des Parameters.
value ja Der Wert des Parameters.

component-desc

Dieses gibt lediglich an, dass es sich hier um eine Komponente handelt, die über das extension-Element integriert werden kann.

installer-desc

Gibt an, dass die Applikation ein Installer ist, der aufgerufen (in der main.class public static void main(String[] argv) werden muss.

Tabelle 21.16: Attribute des Elements installer-desc
AttributPflichtBeschreibung
main-class nein Die Hauptklasse, die für die Installation aufgerufen wird. Wenn dieses Attribut nicht angegeben wurde, muss in der Manifest-Datei eines JAR die main-Class angegeben sein.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.