Overview
In deze korte tutorial, zullen we ons richten op de verschillen tussen JAR en WAR packaging in Java.
Eerst, zullen we elke packaging optie apart definiëren. Daarna vatten we de verschillen samen.
JAR Packaging
Vereenvoudig gezegd is JAR – of Java Archive – een bestandsformaat voor pakketten. JAR-bestanden hebben de extensie .jar en kunnen bibliotheken, hulpbronnen en metadatabestanden bevatten.
In wezen is het een gezipt bestand dat de gecomprimeerde versies bevat van .class-bestanden en hulpbronnen van gecompileerde Java-bibliotheken en -toepassingen.
Hier volgt bijvoorbeeld een eenvoudige JAR-bestandsstructuur:
META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class
Het META-INF/MANIFEST.MF bestand kan aanvullende metadata bevatten over de bestanden die in het archief zijn opgeslagen.
We kunnen een JAR-bestand maken met het commando jar of met tools zoals Maven.
WAR Packaging
WAR staat voor Web Application Archive of Web Application Resource. Deze archiefbestanden hebben de extensie .war en worden gebruikt om webapplicaties te verpakken die we op elke Servlet/JSP-container kunnen implementeren.
Hier volgt een voorbeeldindeling van een typische WAR-bestandsstructuur:
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 niet van buitenaf worden benaderd.
Aan de andere kant bevat het ook de WEB-INF publieke directory met alle statische webbronnen, waaronder HTML-pagina’s, afbeeldingen en JS-bestanden. Bovendien bevat het het web.xml-bestand, servletklassen en bibliotheken.
We kunnen dezelfde gereedschappen en commando’s gebruiken die we hebben gebruikt om een JAR te bouwen om een .war-archief te bouwen.
Key verschillen
Wat zijn nu de belangrijkste verschillen tussen deze twee archieftypen?
Het eerste en meest voor de hand liggende verschil is de bestandsextensie. JAR’s hebben de extensie .jar, terwijl het WAR-bestand de extensie .war heeft.
Het tweede grote verschil is hun doel en de manier waarop ze functioneren. JAR-bestanden stellen ons in staat om meerdere bestanden te verpakken om het te gebruiken als een bibliotheek, plugin, of enige vorm van toepassing. WAR bestanden daarentegen worden alleen gebruikt voor web applicaties.
De structuur van de archieven is ook verschillend. We kunnen een JAR maken met elke gewenste structuur. WAR daarentegen heeft een voorgedefinieerde structuur met WEB-INF en META-INF directories.
Ten slotte kunnen we een JAR vanaf de opdrachtregel uitvoeren als we hem bouwen als een uitvoerbare JAR zonder extra software te gebruiken. Of, we kunnen het gebruiken als een bibliotheek. Daarentegen hebben we een server nodig om een WAR uit te voeren.
Conclusie
In dit beknopte artikel hebben we de Java-verpakkingstypes .jar en .war vergeleken. Daarbij hebben we ook opgemerkt dat, hoewel beide hetzelfde ZIP-bestandsformaat gebruiken, er een aantal belangrijke verschillen zijn.
Ga aan de slag met Spring 5 en Spring Boot 2, via de cursus Leer Spring:
>> CHECK OUT THE COURSE