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.1.4

Extensions


Seit Java 1.3 ist es möglich, Erweiterungen als JAR-Dateien automatisiert in jre/lib/ext zu installieren. Diese Erweiterungen besitzen eine Versionsnummer und müssen signiert sein.

Um eine solche Extension zu erzeugen, muss die Manifest-Datei des JARs um folgende Attribute erweitert werden (hier als Beispiel die Extension javax.help):
  Extension-Name: javax.help
  Specification-Vendor: Sun Microsystems, Inc 
  Specification-Version: 1.0 
  Implementation-Vendor-Id: com.sun 
  Implementation-Vendor: Sun Microsystems, Inc 
  Implementation-Version: 1.0.3
In dem entsprechenden Applet-JAR, welches diese Extension benötigt, werden folgende Zeilen in die Manifest-Datei eingefügt (hier neben javax.help auch javax.3d):
  Extension-List: javahelp java3d 
  javahelp-Extension-Name: javax.help 
  javahelp-Specification-Version: 1.0 
  javahelp-Implementation-Version: 1.0.3 
  javahelp-Implementation-Vendor-Id: com.sun 
  javahelp-Implementation-URL: 
     http://java.sun.com/products/stdext/javahelp.jar 
  java3d-Extension-Name: javax.3d 
  java3d-Specification-Version: 1.0 
  java3d-Implementation-Version: 1.2.1 
  java3d-Implementation-Vendor-Id: com.sun 
  java3d-Implementation-URL: 
     http://java.sun.com/products/stdext/java3d.jar 
Hierbei ist zu beachten, dass alle JAR-Dateien, auch die des Applets, signiert sein müssen.

Ist die Extension noch nicht installiert oder die Versionsnummer der vorhandenen kleiner, wird die Extension von der angegebenen URL geladen. Ist in der Manifest-Datei das Attribut Main-Class gesetzt, wird der dort angegebene Installer aufgerufen (durch Aufruf der main-Methode). Fehlt das Attribut, wird das JAR einfach in jre/lib/ext/ kopiert.

Es ist zudem möglich, plattformspezifische Implementierungen zu laden. Dafür kann an beliebiger Steller in der ImplementationURL der Parameter $(os-name)$ eingefügt werden; er wird beim Laden durch den Betriebssystemnamen (die VM Property os.name) des Clients ersetzt.

Diesen Mechanismus kann man sich für die eigene Applikation zunutze machen. Hierbei wird die gesamte Applikation als Extension verpackt. Eine zweite JAR-Datei, welche lediglich eine Ableitungsklasse des Applets aus dem Haupt-JAR beinhaltet, wird in der HTML-Seite referenziert. Diese JAR-Datei muss dann nur noch um die Abhängigkeit zur Extension in der Manifest-Datei erweitert werden.

Lädt der Benutzer nun die erste JAR-Datei, wird die zweite (die Extension) automatisch permanent installiert. Nur die erste - fast leere - JAR-Datei wird bei jedem Laden des Applets neu heruntergeladen.

Ändert sich in dem Programm etwas, müssen in beiden JAR-Dateien die Versionsnummern hochgesetzt werden (die JAR-Dateien mit neuen Manifest-Dateien also neu generiert werden). Das Plug-in bemerkt nun, dass die gecachte Version der Extension veraltet ist, und lädt die neue Version herunter, wodurch diese wieder permanent installiert wird.


 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.