Rheinwerk Computing < openbook >

Inhaltsverzeichnis
Materialien zum Buch
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichen und Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Schnittstellen, Aufzählungen, versiegelte Klassen, Records
9 Ausnahmen müssen sein
10 Geschachtelte Typen
11 Besondere Typen der Java SE
12 Generics<T>
13 Lambda-Ausdrücke und funktionale Programmierung
14 Architektur, Design und angewandte Objektorientierung
15 Java Platform Module System
16 Die Klassenbibliothek
17 Einführung in die nebenläufige Programmierung
18 Einführung in Datenstrukturen und Algorithmen
19 Einführung in grafische Oberflächen
20 Einführung in Dateien und Datenströme
21 Einführung ins Datenbankmanagement mit JDBC
22 Bits und Bytes, Mathematisches und Geld
23 Testen mit JUnit
24 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 24 Die Werkzeuge des JDK
Pfeil 24.1 Übersicht
Pfeil 24.1.1 Aufbau und gemeinsame Schalter
Pfeil 24.2 Java-Quellen übersetzen
Pfeil 24.2.1 Der Java-Compiler des JDK
Pfeil 24.2.2 Alternative Compiler
Pfeil 24.2.3 Native Compiler
Pfeil 24.3 Die Java-Laufzeitumgebung
Pfeil 24.3.1 Schalter der JVM
Pfeil 24.3.2 Der Unterschied zwischen java.exe und javaw.exe
Pfeil 24.4 Dokumentationskommentare mit Javadoc
Pfeil 24.4.1 Einen Dokumentationskommentar setzen
Pfeil 24.4.2 Mit dem Werkzeug javadoc eine Dokumentation erstellen
Pfeil 24.4.3 HTML-Tags in Dokumentationskommentaren *
Pfeil 24.4.4 Generierte Dateien
Pfeil 24.4.5 Dokumentationskommentare im Überblick *
Pfeil 24.4.6 Javadoc und Doclets *
Pfeil 24.4.7 Veraltete (deprecated) Typen und Eigenschaften
Pfeil 24.4.8 Javadoc-Überprüfung mit DocLint
Pfeil 24.5 Das Archivformat JAR
Pfeil 24.5.1 Das Dienstprogramm jar benutzen
Pfeil 24.5.2 Das Manifest
Pfeil 24.5.3 Applikationen in JAR-Archiven starten
Pfeil 24.6 jlink: der Java Linker
Pfeil 24.7 Zum Weiterlesen
 

Zum Seitenanfang

24.5    Das Archivformat JAR Zur vorigen ÜberschriftZur nächsten Überschrift

Die JAR-Dateien (von Java-Archiv) bilden ein Archivformat, das ZIP ähnelt. Wie für ein Archivformat üblich, packt auch JAR mehrere Dateien zusammen. »Gepackt« heißt aber nicht zwingend, dass die Dateien komprimiert sein müssen, sie können einfach nur in einem JAR gebündelt sein. Ein Auspackprogramm wie 7-Zip kann JAR-Dateien entpacken. Hier bleibt zu überlegen, ob ein Programm wie 7-Zip mit der Dateiendung .jar verbunden werden soll oder ob das Standardverhalten bei installiertem JRE beibehalten wird: Unter Windows ist mit der Dateiendung .jar das JRE verbunden, das die Hauptklasse des Archivs startet.

Signieren und Versionskennungen

Microsoft vertraut bei seinen ActiveX-Controls vollständig auf Zertifikate und glaubt an eine Zurückverfolgung der Übeltäter in dem Fall, dass das Control Unsinn anstellt. Leider ist in dieser Gedankenkette ein Fehler enthalten, weil sich jeder Zertifikate ausstellen lassen kann, auch unter dem Namen Mickey Mouse.[ 288 ](Obwohl dieser schon vergeben ist; doch vielleicht ist »Darkwing Duck« ja noch frei. )

Überlegt angewendet, ist das Konzept jedoch gut zu verwenden, und JAR-Archive nutzen das gleiche Konzept. Sie lassen sich durch eine Signatur schützen, und die Laufzeitumgebung räumt Java-Programmen Extrarechte ein, die ein normales Programm sonst nicht hätte. Dies ist bei Programmen aus dem Intranet interessant.

Des Weiteren können Hersteller Informationen über Version und Kennung hinzufügen wie auch eine Versionskontrolle, damit nur solche Klassen eines Archivs verwendet werden, die den Verbleib in der gleichen Version gewährleisten. Außerdem kam ein Archivformat hinzu, das Pakete zur Core-Plattform-API hinzunehmen kann. Beispiele sind die 3D- und Java-Mail-API. Eigene Pakete sehen also so aus, als gehörten sie zum Standard.

 

Zum Seitenanfang

24.5.1    Das Dienstprogramm jar benutzen Zur vorigen ÜberschriftZur nächsten Überschrift

jar ist ein Kommandozeilenprogramm und verfügt über verschiedene Optionen, um Archive zu erzeugen, sie auszupacken und anzusehen. Die wichtigsten Formen für das Kommandozeilenprogramm sind:

  • Anlegen: jar c[Optionen] JAR-Datei Eingabedateien

  • Aktualisieren: jar u[Optionen] JAR-Datei Eingabedateien

  • Auspacken: jar x[Optionen] JAR-Datei

  • Inhalt anzeigen: jar t[Optionen] JAR-Datei

  • Indexdatei INDEX.LIST erzeugen: jar i JAR-Datei

Je nach Aktion sind weitere Optionen möglich.

Daneben gibt es eine API im Paket java.util.jar, mit der alles programmiert werden kann, was auch das Dienstprogramm leistet.

[+]  Tipp

Selten wird ein Jar-Werkzeug auf der Kommandozeile oder in einem Shell-Skript eingesetzt. In der Regel bauen Build-Werkzeuge wie Maven oder Gradle am Ende der Compilation ein Java-Archiv. In einem Maven-Projekt wird so eine Java-Datei erzeugt:

mvn package
 

Zum Seitenanfang

24.5.2    Das Manifest Zur vorigen ÜberschriftZur nächsten Überschrift

Ohne dass die Ausgabe es zeigt, fügt jar beim Erzeugen eines Archivs automatisch eine Manifest-Datei namens META-INF/MANIFEST.MF ein. Ein Manifest enthält wichtige Zusatzinformationen für ein Archiv, wie die Signatur, die für jede Datei aufgeführt ist.

[zB]  Beispiel

Ausschnitt aus der Manifest-Datei des H2 Datenbankmanagementsystems:[ 289 ](https://repo1.maven.org/maven2/com/h2database/h2/1.4.200/h2-1.4.200.jar)

Manifest-Version: 1.0

Implementation-Title: H2 Database Engine

Implementation-URL: https://h2database.com

Implementation-Version: 1.4.200

Build-Jdk: 1.7

Created-By: 1.7.0_80-b15 (Oracle Corporation)

Main-Class: org.h2.tools.Console

Automatic-Module-Name: com.h2database

Bundle-Activator: org.h2.util.DbDriverActivator

Bundle-ManifestVersion: 2

Bundle-Name: H2 Database Engine

Bundle-SymbolicName: com.h2database

Bundle-Vendor: H2 Group

Bundle-Version: 1.4.200

...

Die Einträge im Manifest erinnern an eine Property-Datei, denn auch hier gibt es immer Schlüssel und Werte, die durch einen Doppelpunkt voneinander getrennt sind.

 

Zum Seitenanfang

24.5.3    Applikationen in JAR-Archiven starten Zur vorigen ÜberschriftZur nächsten Überschrift

Dass die Dateien zusammen in einem Archiv gebündelt sind, hat den Vorteil, dass Entwickler ihren Kunden nicht mehr ein ganzes Bündel von Klassen- und Ressourcendateien liefern müssen, sondern nur eine einzige Datei. Ein anderer Vorteil ist, dass ein Betriebssystem wie Windows oder macOS standardmäßig mit der Endung .jar das JRE (Java Runtime Environment) verbindet, sodass ein Doppelklick auf eine JAR-Datei das Programm gleich startet.

Main-Class im Manifest

Damit die Laufzeitumgebung weiß, welches main(String[]) welcher Klasse sie aufrufen soll, ist eine kleine Notiz mit dem Schlüssel Main-Class in der Manifest-Datei nötig:

Main-Class: voll.qualifizierter.Klassenname.der.Klasse.mit.main

Dies ist sehr angenehm für den Benutzer eines Archivs, denn nun ist der Hersteller für den Eintrag des Einstiegspunktes im Manifest verantwortlich.

Von der Kommandozeile oder mit Doppelklick starten

Starten wir den Interpreter java von der Kommandozeile, gibt die Option -jar das Archiv an. Der Interpreter sucht nach dem Startprogramm, das durch die Manifest-Datei gegeben ist.

$ java -jar JarDatei.jar

Ausführbare Java-Archive starten wir unter Windows mit einem Doppelklick, da die Dateiendung .jar dazu führt, dass javaw -jar mit dem Dateinamen ausgeführt wird. Auch Solaris ab 2.6 erkennt JAR-Dateien in der Konsole oder auf dem Desktop als ausführbare Programme und startet sie selbstständig mit java -jar.

[»]  Hinweis

java (oder javaw) ignoriert die Angaben über -cp bzw. Einträge in der Umgebungsvariablen CLASSPATH, wenn ein Java-Programm mit -jar gestartet wird.

inline image  Statt viele kleine Java-Archive zu referenzieren, ist eine weitere Möglichkeit, erst einmal alle Jar-Dateien auszupacken und sie dann wieder zu einem neuen großen JAR zusammenzupacken, das java -jar starten kann. Mit Maven lässt sich das über das Apache Maven Shade Plugin realisieren.[ 290 ](https://maven.apache.org/plugins/maven-shade-plugin/index.html) Das Ergebnis nennt sich auch Fat-JAR.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo




Copyright © Rheinwerk Verlag GmbH 2024

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern