PDF 352K

Werbung
Komponentenbasierte Softwareentwicklung
Java Webstart
Ausarbeitung zum Vortrag Java Web Start
von Adrian Fülöp
Fach: Komponentenbasierte Softwareentwicklung
WS 06/07 Fachhochschule Osnabrück
Adrian Fülöp (297545)
-1-
Komponentenbasierte Softwareentwicklung
Java Webstart
Inhaltsverzeichnis:
1.
2.
3.
4.
5.
6.
7.
8.
Einführung
Was ist Java Web Start
Aktualisierungsmechanismus
Mögliche Einsatzziele
Sicherheit für den Anwender
Das JNLP
Beispielprogramm „Picupper“
Quellen, Links
Adrian Fülöp (297545)
-2-
Komponentenbasierte Softwareentwicklung
Java Webstart
1. Einführung
In dieser Ausarbeitung wird beschrieben wie Java Web Start arbeitet und welche Vorteile es
bei der Entwicklung von Software bieten kann. Auch sollen die Grenzen der Technologie
dargestellt werden. Im Rahmen der Präsentation wurde eine Beispielapplikation entwickelt,
die sich dieser Lösung bedient, um das Problem der Softwareverteilung zu lösen.
2. Was ist Java Web Start?
Java Web Start ist eine Technologie, die die Verteilung von Software vereinfachen soll. Der
Anwender soll dabei lediglich das Programm starten, wie er es von lokal installierten
Anwendungen gewohnt ist. Dies erfolgt per Link auf dem Desktop, über das Startmenü oder
über einen Link auf einer Website. Je nach dem wie der Programmierer der Software es
wünscht. Im Unterschied zu Applets können hier vollwertige Java Anwendungen mit allen
Rechten auf dem Lokalen Computer ausgeführt werden. Eine Einschränkung ist allerdings
auch möglich. Der Übergang zwischen der Website und der Lokal ausgeführten Anwendung
ist dabei fließend. Es wird seit der Version 1.2 mit der virtuellen Maschine mitgeliefert und ist
somit auf jedem aktuellen Java fähigen Rechner bereits installiert.
Besonders sinnvoll ist der Einsatz bei Anwendungen die ohnehin im Netzwerk arbeiten. So
lässt sich sicherstellen, dass alle Anwender immer die neueste Version verwenden.
Adrian Fülöp (297545)
-3-
Komponentenbasierte Softwareentwicklung
Java Webstart
3. Der Aktualisierungsmechanismus
Wird ein Programm das erste mal aufgerufen, werden zuerst alle benötigten JAR-Dateien von
dem entsprechenden Server geladen und anschließend nur noch bei bedarf aktualisiert. Über
ein Anzeigeprogramm kann man sehen, welche Anwendungen alles im Cache liegen und von
wann sie sind (abb. Seite 3). Es ist auch möglich, bestimmte Programme zu löschen, wenn Sie
nicht mehr gebraucht werden. Sollten sie dennoch erneut aufgerufen werden, lädt die virtuelle
Maschine die entsprechenden Pakeges wieder vom Server herunter und speichert sie ab. Die
Granularität mit der Java WS hier arbeitet, sind immer ganze Pakeges. Das Datum dieser
Pakeges wird bei jedem Start der Anwendung überprüft um Veränderungen festzustellen. Von
welchen Quellen es bezogen werden kann, wird in der JNLP-Datei festgelegt. Darin können
auch mehrere Quellen angegeben werden, um eine Redundanz für höhere Ausfallsicherheit zu
erzeugen.
Der Vorteil hierbei, gegenüber proparitären Updatelösungen, die der Programmierer direkt in
seine Applikation integriert, ist dass auch ohne eine alte Version zu besitzen der Anwender
mit lediglich einem Link die Applikation installieren kann. Des weiteren ist das Verfahren
bereits ausgereift und sehr schnell implementiert.
Bei Java wird zum Bytecode des Programms immer eine Virtuelle Maschine benötigt die
diesen Code ausführt. Dabei tritt in vielen Anwendungen das Problem auf, das die VM selbst
sehr oft geändert wird. Dies kann dazu führen, dass eine Anwendung die Beispielsweise unter
der Version JRE 1.4 getestet wurde unter der Folgeversion JRE 1.5 nicht mehr einwandfrei
funktioniert. Auch für diese Problematik bietet Java WS Abhilfe indem es die gewünschte
VM ebenfalls runterlädt. Das funktioniert in beide Richtungen. Zum einen kann eine neue
Version geladen werden, sofern sie benötigt wird, als auch eine ältere Version. Die neu
bezogene VM wird parallel zur vorhandenen installiert und beeinträchtigt somit keine anderen
Programme.
4. Mögliche Einsatzziele
Java WS Programme besitzen alle Vorteile die Java ohnehin hat. Dazu zählt große
Plattformunabhängigkeit, wodurch die Programme für einen großen Benutzerkreis der auf
verschiedenen Systemen arbeitet interessant sind. Bei sich häufig ändernder Software wird
hier der komplette Patch- und Updateprozess automatisiert.
5. Sicherheit für den Anwender
Ohne weiteres werden die Applikationen nur in einer sicheren Sandbox ausgeführt, die dem
Benutzer garantiert, dass die Anwendung keinen Schaden auf seinem System anrichten kann.
Für die Anwendung bedeutet dies, dass nur eine Begrenzte Funktionalität zur Verfügung
steht. Z.B. ist ein Zugriff auf lokale Dateien nur über ein vordefiniertes User-Interface
möglich.
Um eine in Java WS ausgeführte Applikation zu einer Vollwertigen Anwendung zu machen
ist es nötig den Programmcode zu signieren. Diese Signatur wird beim Start von der VM
überprüft. Ein nachträgliches ändern des Codes ist danach nicht mehr möglich. Würde ein
Adrian Fülöp (297545)
-4-
Komponentenbasierte Softwareentwicklung
Java Webstart
Angreifer versuchen einen manipuliert Code einem Anwender unterzuschieben, würde die
Signaturprüfung fehlschlagen und das Programm nicht ausgeführt werden.
Bei der ersten Ausführung wird dem Anwender angezeigt, dass es sich um ein gültiges
Zertifikat handelt. Eine Manipulation durch Dritte ist somit ausgeschlossen. Jedoch muss er
dem Hersteller der Software nach wie vor vertrauen.
Wer überhaupt ein Zertifikat ausstellen darf um damit in einem späteren Schritt
Anwendungen zu Signieren ist auf den Systemen bereits voreingestellt. Darunter fallen
namhafte Unternehmen wie VeriSign oder Thawte, die allerdings Lizenzgebüren für ein
Zertifikat verlangen. Für Kommerziell vertriebene Software sind diese Gebühren jedoch
vertretbar.
Zum erstellen von Testanwendungen besteht die Möglichkeit sich selbst ein Zertifikat zur
Signierung von Anwendungen zu erstellen. Dazu stehen folgende Tools zur Verfügung.
Zuerst benötigt man einen Keystore in dem das Zertifikat abgelegt wird.
keytool -genkey -keystore <keystorebez.> -alias <name>
Unter der in <keystorebez.> angegebenen Bezeichnung wird eine Datei angelegt, in der unter
dem in alias angegebenen Namen eine art Zertifikat-Container eingerichtet wird. In diesem
Schritt werden alle Information abgefragt, die den Hersteller betreffen und später vom
Anwender eingesehen werden können.
keytool -selfcert -keystore <keystorebez.> -alias <name>
Mit der Option “selfcert” legt das Keytool ein neues Zertifikat an.
jarsigner -keystore <keystorebez.> <…>.jar <name>
Nun kann jedes JAR-Paket mit diesem Zertifikat signiert werden. Wie bereits erwähnt ist dies
eine einfache Methode um Testanwendungen zu Signieren. Folglich wird beim Ausführen
eine Warnmeldung ausgegeben, da das Zertifikat von einer nicht bekannten Einrichtung
stammt.
6. Das JNLP
JNLP steht für „Java Network Launching Protocol“. Es ist ein offener Standard der beschreibt
wie der Programmcode übertragen wird und wie die Parameter für die Sandbox bzw. VM
festgelegt werden. Im Mittelpunkt steht dabei die JNLP-Datei. Dazu wird XML verwendet.
Die folgende JNLP-Datei ist von dem Beispielprogramm aus der Präsentation.
Adrian Fülöp (297545)
-5-
Komponentenbasierte Softwareentwicklung
Java Webstart
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for picupper Application -->
<jnlp spec="1.5+" codebase=“http://picupper.nathon.de/“ href="apps/picupper.jnlp">
<information>
<title>Picupper beta</title>
<vendor>Partypics, Inc.</vendor>
<homepage href="go2page.html"/>
<description>Picupper beta</description>
<description kind="short">no description so far</description>
<icon href="apps/logo_pp.jpg"/>
<icon kind="splash" href="apps/logo_pp.jpg"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.4.2+" java-vm-args="-esa -Xnoclassgc"/>
<jar href="apps/picupper.jar"/>
</resources>
<application-desc main-class="user_interface.MainGUI" />
</jnlp>
Wichtige Tags sind:
• <jnlp codebase>
•
•
•
•
•
Adresse des Server. Alle weitern Angaben sind relativ zu diesem
punkt
<hompage href> HTML Seite zu der weitergeleitet werden soll
<offline-allowed> Anwendung darf auch ohneNetzverbindung gestartet werden.
<security>
Mit <all-permissions> wird die Application nicht in einer Sandbox
ausgeführt.
<resources>
Hier wird angegeben welche VM und welche eigenen Pakeges für
das Programm benötigt werden.
<application-desc> Startklasse des Programms
Adrian Fülöp (297545)
-6-
Komponentenbasierte Softwareentwicklung
Java Webstart
7. Beispielprogramm „Picupper“
Das Programm dient dazu auf einfache Weise .jpg Dateien auf einen FTP-Server zu laden.
Nach dem Start können über einen JFileChoser oder per Drag and Drop Bilddateien
hinzugefügt werden. Dieser Vorgang ist nur möglich, da das Programm als vollwertige
Applikation ausgeführt wird. Im nächsten Schritt werden diese Dateien auf einen im
Programm vorgegebenen FTP-Server geladen.
Derzeit wird es testweise für eine online Bildergallerie eingesetzt. Besonderer Vorteil bei der
Verwendung von Java WS ist, dass jeder Besucher der Website durch einfaches klicken eines
Link seine eigenen Inhalte veröffentlichen kann.
Unter folgender Adresse kann das Programm aufgerufen werden:
http://picupper.nathon.de/apps/picupper.jnlp
Adrian Fülöp (297545)
-7-
Komponentenbasierte Softwareentwicklung
Java Webstart
8. Links
• www.sun.com
o JWS_White_Paper.pdf
• http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/overview.html#jws
• http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/development.html
Developer Guide
http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/overview.html#jws
Jnlp demo
http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/development.html
Adrian Fülöp (297545)
-8-
Herunterladen