Verschillen tussen JAR- en WAR-verpakkingen

1. Overzicht

In deze korte tutorial, we zullen ons concentreren op de verschillen tussen JAR- en WAR-verpakkingen in Java.

Eerst definiëren we elke verpakkingsoptie afzonderlijk. Daarna zullen we hun verschillen samenvatten.

2. JAR-verpakking

Simpel gezegd, JAR - of Java Archive - is een pakketbestandsindeling. JAR-bestanden hebben de extensie .pot extensie en kan bevatten bibliotheken, bronnen en metagegevensbestanden.

In wezen is het een gecomprimeerd bestand met de gecomprimeerde versies van .klasse bestanden en bronnen van gecompileerde Java-bibliotheken en -toepassingen.

Hier is bijvoorbeeld een eenvoudige JAR-bestandsstructuur:

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

De META-INF / MANIFEST.MF bestand kan aanvullende metagegevens bevatten over de bestanden die in het archief zijn opgeslagen.

We kunnen een JAR-bestand maken met behulp van de pot commando of met tools zoals Maven.

3. WAR-verpakking

WAR staat voor Web Application Archive of Web Application Resource. Deze archiefbestanden hebben de extensie .oorlog extensie en zijn gebruikt om webapplicaties te verpakken die we kunnen implementeren op elke Servlet / JSP-container.

Hier is een voorbeeldlay-out van een typische WAR-bestandsstructuur:

META-INF / MANIFEST.MF WEB-INF / web.xml jsp / helloWorld.jsp klassen / static / templates / application.properties lib / // * .jar-bestanden als libs

Binnenin heeft het een META-INF directory met nuttige informatie in de MANIFEST.MF over het webarchief. De META-INF directory is privé en kan van buitenaf niet worden geopend.

Aan de andere kant bevat het ook de WEB-INF openbare directory met alle statische webbronnen, inclusief HTML-pagina's, afbeeldingen en JS-bestanden. Bovendien bevat het de web.xml bestand, servletklassen en bibliotheken.

We kunnen dezelfde tools en opdrachten gebruiken die we hebben gebruikt om een ​​JAR te bouwen om een .oorlog archief.

4. Belangrijkste verschillen

Dus, wat zijn de belangrijkste verschillen tussen deze twee archieftypen?

Het eerste en meest voor de hand liggende verschil is de bestandsextensie. JAR's hebben de .pot extensie, terwijl het WAR-bestand de .oorlog uitbreiding.

Het tweede grote verschil is hun doel en de manier waarop ze functioneren. Met JAR-bestanden kunnen we meerdere bestanden verpakken om deze te gebruiken als bibliotheek, plug-in of een andere toepassing. Aan de andere kant worden WAR-bestanden alleen gebruikt voor webtoepassingen.

Ook de structuur van de archieven is anders. We kunnen een JAR maken met elke gewenste structuur. WAR heeft daarentegen een voorgedefinieerde structuur met WEB-INF en META-INF mappen.

Eindelijk kunnen we voer een JAR uit vanaf de opdrachtregel als we het bouwen als een uitvoerbare JAR zonder extra software te gebruiken. Of we kunnen het gebruiken als bibliotheek. In tegenstelling, wij een server nodig om een ​​WAR uit te voeren.

5. Conclusie

In dit korte artikel hebben we de .pot en .oorlog Java-verpakkingstypen. Daarbij hebben we ook opgemerkt dat hoewel beide hetzelfde ZIP-bestandsformaat gebruiken, er verschillende belangrijke verschillen zijn.