Überblick
In diesem kurzen Tutorial werden wir uns auf die Unterschiede zwischen JAR- und WAR-Paketierung in Java konzentrieren.
Zunächst werden wir jede Paketierungsoption separat definieren. Danach fassen wir die Unterschiede zusammen.
JAR-Paketierung
Einfach ausgedrückt, ist JAR – oder Java Archive – ein Paketdateiformat. JAR-Dateien haben die Erweiterung .jar und können Bibliotheken, Ressourcen und Metadaten-Dateien enthalten.
Im Wesentlichen handelt es sich um eine gepackte Datei, die die komprimierten Versionen von .class-Dateien und Ressourcen von kompilierten Java-Bibliotheken und -Anwendungen enthält.
Zum Beispiel ist hier eine einfache JAR-Dateistruktur:
META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class
Die META-INF/MANIFEST.MF-Datei kann zusätzliche Metadaten über die im Archiv gespeicherten Dateien enthalten.
Wir können eine JAR-Datei mit dem Befehl jar oder mit Tools wie Maven erstellen.
WAR-Paketierung
WAR steht für Web Application Archive oder Web Application Resource. Diese Archivdateien haben die .war-Erweiterung und werden verwendet, um Webanwendungen zu verpacken, die wir auf jedem Servlet/JSP-Container bereitstellen können.
Hier ist ein Beispiel-Layout einer typischen WAR-Datei-Struktur:
Innerhalb hat es ein META-INF-Verzeichnis, das nützliche Informationen in der MANIFEST.MF über das Web-Archiv enthält. Das META-INF-Verzeichnis ist privat und kann von außen nicht eingesehen werden.
Andererseits enthält es auch das öffentliche WEB-INF-Verzeichnis mit allen statischen Web-Ressourcen, einschließlich HTML-Seiten, Bildern und JS-Dateien. Außerdem enthält es die Datei web.xml, Servlet-Klassen und Bibliotheken.
Wir können die gleichen Tools und Befehle, die wir zum Erstellen eines JARs verwendet haben, auch zum Erstellen eines .war-Archivs verwenden.
Schlüsselunterschiede
Was sind also die Hauptunterschiede zwischen diesen beiden Archivtypen?
Der erste und offensichtlichste Unterschied ist die Dateierweiterung. JARs haben die Erweiterung .jar, während die WAR-Datei die Erweiterung .war hat.
Der zweite Hauptunterschied ist ihr Zweck und ihre Funktionsweise. JAR-Dateien ermöglichen es uns, mehrere Dateien zu verpacken, um sie als Bibliothek, Plugin oder jede Art von Anwendung zu verwenden. WAR-Dateien hingegen werden nur für Webanwendungen verwendet.
Die Struktur der Archive ist ebenfalls unterschiedlich. Wir können ein JAR mit beliebiger Struktur erstellen. Im Gegensatz dazu hat WAR eine vordefinierte Struktur mit WEB-INF- und META-INF-Verzeichnissen.
Schließlich können wir ein JAR von der Kommandozeile aus ausführen, wenn wir es als ausführbares JAR ohne zusätzliche Software erstellen. Oder wir können es als Bibliothek verwenden. Im Gegensatz dazu benötigen wir einen Server, um eine WAR auszuführen.
Fazit
In diesem kurzen Artikel haben wir die Java-Paketierungsarten .jar und .war verglichen. Dabei haben wir auch festgestellt, dass beide zwar das gleiche ZIP-Dateiformat verwenden, es aber einige wichtige Unterschiede gibt.
Lernen Sie Spring 5 und Spring Boot 2 mit dem Kurs „Learn Spring“ kennen:
>> CHECK OUT THE COURSE