Unterschiede zwischen JAR- und WAR-Verpackung

1. Übersicht

In diesem kurzen Tutorial konzentrieren wir uns auf die Unterschiede zwischen JAR- und WAR-Paketen in Java.

Zunächst definieren wir jede Verpackungsoption separat. Anschließend werden wir ihre Unterschiede zusammenfassen.

2. JAR-Verpackung

Einfach ausgedrückt ist JAR - oder Java Archive - ein Paketdateiformat. JAR-Dateien haben die Erweiterung .jar und können Bibliotheken, Ressourcen und Metadatendateien enthalten.

Im Wesentlichen handelt es sich um eine komprimierte Datei, die die komprimierten Versionen von .class- Dateien und Ressourcen kompilierter Java-Bibliotheken und -Anwendungen enthält.

Hier ist zum Beispiel eine einfache JAR-Dateistruktur:

META-INF/ MANIFEST.MF com/ baeldung/ MyApplication.class 

Die Datei META-INF / MANIFEST.MF kann zusätzliche Metadaten zu den im Archiv gespeicherten Dateien enthalten.

Wir können eine JAR-Datei mit dem Befehl jar oder mit Tools wie Maven erstellen .

3. WAR-Verpackung

WAR steht für Web Application Archive oder Web Application Resource. Diese Archivdateien haben die Erweiterung .war und werden zum Packen von Webanwendungen verwendet , die wir auf jedem Servlet / JSP-Container bereitstellen können.

Hier ist ein Beispiellayout einer typischen WAR-Dateistruktur:

META-INF/ MANIFEST.MF WEB-INF/ web.xml jsp/ helloWorld.jsp classes/ static/ templates/ application.properties lib/ // *.jar files as libs

Im Inneren befindet sich ein META-INF- Verzeichnis mit nützlichen Informationen in der MANIFEST.MF zum Webarchiv. Das META-INF- Verzeichnis ist privat und kann von außen nicht aufgerufen werden.

Andererseits enthält es auch das öffentliche Verzeichnis WEB-INF mit allen statischen Webressourcen, einschließlich HTML-Seiten, Bildern und JS-Dateien. Darüber hinaus enthält es die Datei web.xml , Servlet-Klassen und Bibliotheken.

Wir können dieselben Tools und Befehle verwenden, die wir zum Erstellen einer JAR zum Erstellen eines .war- Archivs verwendet haben.

4. Hauptunterschiede

Was sind 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 . Mit JAR-Dateien können wir mehrere Dateien verpacken, um sie als Bibliothek, Plugin oder jede Art von Anwendung zu verwenden. Andererseits werden WAR-Dateien nur für Webanwendungen verwendet.

Die Struktur der Archive ist ebenfalls unterschiedlich. Wir können eine JAR mit jeder gewünschten Struktur erstellen. Im Gegensatz dazu hat WAR eine vordefinierte Struktur mit den Verzeichnissen WEB-INF und META-INF .

Schließlich können wir eine JAR über die Befehlszeile ausführen, wenn wir sie als ausführbare JAR ohne Verwendung zusätzlicher Software erstellen. Oder wir können es als Bibliothek verwenden. Im Gegensatz dazu benötigen wir einen Server, um eine WAR auszuführen .

5. Schlussfolgerung

In diesem kurzen Artikel haben wir die Java-Verpackungstypen .jar und .war Java verglichen . Dabei haben wir auch festgestellt, dass beide zwar dasselbe ZIP-Dateiformat verwenden, es jedoch einige wichtige Unterschiede gibt.