Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 50 - Hilfsprogramme des JDK

## 50.6 jar - Das Archivierungswerkzeug

- 50.6 jar - Das Archivierungswerkzeug
  - 50.6.1 Aufruf
  - 50.6.2 Beschreibung
  - 50.6.3 Kommandos
  - 50.6.4 Verwendung von jar-Dateien in Applets

### 50.6.1 Aufruf

    jar [ commands ] archive { input-file }

### 50.6.2 Beschreibung

`jar` ist ein Archivierungsprogramm, das Dateien und komplette Unterverzeichnisse komprimieren und in eine gemeinsame Archivdatei packen kann. Es verwendet ein Kompressionsformat, das den diversen `zip`-/`unzip`-Programmen ähnelt, und wird analog dem UNIX-Tool `tar` bedient. Ein Vorteil von `jar` ist seine Portabilität, die sowohl für das erzeugte Dateiformat als auch für das (in Java geschriebene) Programm selbst gilt.

Wichtigster Einsatzzweck von `jar` ist es, alle zu einem Java-Programm gehörenden Dateien (.class-, Image-, Sound-Dateien usw.) in einer einzigen Datei zusammenzufassen. Neben den organisatorischen Vorteilen, die diese Möglichkeit zweifellos bietet, wurden jar-Dateien vor allem eingeführt, um das Laden von Applets aus dem Internet zu beschleunigen. Dadurch müssen Web-Browser nämlich nicht mehr für jede einzelne Datei, die in einem Applet benötigt wird, eine eigene GET-Transaktion absetzen, sondern können alle erforderlichen Files in einem Schritt laden. Die Ladezeit von Applets wird dadurch drastisch verringert, insbesondere, wenn viele kleine Dateien benötigt werden.

### 50.6.3 Kommandos

Im Gegensatz zu den übrigen Programmen, die in diesem Kapitel vorgestellt wurden, kennt `jar` keine Optionsparameter, sondern erwartet Kommandos an ihrer Stelle. Ein Kommando besteht aus einem Buchstaben, der ohne den Präfix `-` angegeben wird. Sollen mehrere Kommandos kombiniert werden, so werden die zugehörigen Buchstaben ohne Lücken direkt hintereinander geschrieben. Diese abweichende Syntax stammt von dem Kommando `tar`, das auf UNIX-Rechnern zur Archivierung von Dateien eingesetzt wird. Tabelle 50.7 gibt eine Übersicht der verfügbaren Kommandos.

Kommando | Bedeutung
`c` | Erzeugt eine neue Archivdatei (create). Kann nicht zusammen mit t oder x verwendet werden.
`t` | Gibt das Inhaltsverzeichnis der Archivdatei aus (table of contents). Kann nicht zusammen mit c oder x verwendet werden.
`x file` | Extrahiert eine oder mehrere Dateien aus dem Archiv (extract). Kann nicht zusammen mit c oder t verwendet werden.
`u` | Fügt die angegebenen Dateien in die bestehende Archivdatei ein.
`f` | Gibt an, daß der nächste Parameter der Name der Archivdatei ist. Wird das Kommando f nicht angegeben, verwendet jar statt dessen die Standardein- und -ausgabe.
`v` | Gibt zusätzliche Informationen aus (verbose). Kann zusätzlich zu einem der anderen Kommandos verwendet werden.
`0` | Die Dateien werden ohne Kompression gespeichert.

Tabelle 50.7: Kommandos von jar

Sollen beispielsweise alle .java-Dateien des aktuellen Verzeichnisses in ein Archiv mit der Bezeichnung xyz.jar gepackt werden, so kann dazu folgendes Kommando verwendet werden:

    jar cf xyz.jar *.java

Das Inhaltsverzeichnis des Archivs kann folgendermaßen abgerufen werden:

    jar tf xyz.jar

Etwas ausführlicher geht es mit:

    jar tvf xyz.jar

Um die Datei Test.java aus dem Archiv zu extrahieren, kann das folgende Kommando verwendet werden (das natürlich auch ohne den Zusatz `v` funktioniert):

    jar xvf xyz.jar Test.java

### 50.6.4 Verwendung von jar-Dateien in Applets

Die Verwendung von jar-Dateien in Applets erfolgt mit Hilfe des `ARCHIVE`-Parameters des APPLET-Tags (siehe Kapitel 39). Soll beispielsweise das »Hello, World«-Programm HWApplet.java aus Listing 39.7 aus einem jar-Archiv hello.jar ausgeführt werden, so ist in den folgenden Schritten vorzugehen.

Zunächst werden die Dateien HWApplet.class, hello.au und world.au in ein jar-Archiv gepackt:

    jar cvf hello.jar HWApplet.class hello.au world.au

Anschließend wird die HTML-Datei HWApplet.html zum Aufruf des Applets erstellt:

    001 <html>
    002 <head>
    003 <title>HWApplet</title>
    004 </head>
    005 <body>
    006 <h1>HWApplet</h1>
    007 <applet
    008    code=HWApplet.class
    009    archive=hello.jar
    010    width=300
    011    height=200>
    012 Hier steht das Applet HWApplet.class
    013 </applet>
    014 </body>
    015 </html>
| HWApplet.html

Listing 50.1: HTML mit ARCHIVE-Tag

Nun kann das Applet wie bisher gestartet werden, benötigt aber zum Laden aller Dateien nur noch eine einzige HTTP-Transaktion.

|  | Leider unterstützen noch nicht alle Browser das `jar`-Format, so daß seine Verwendung zum heutigen Zeitpunkt überlegt sein will. Für die nahe Zukunft ist es aber ein wichtiger Schritt zur Verbesserung der Ladezeiten von Applets. |  |
Hinweis

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de