Overblik
I denne hurtige vejledning vil vi fokusere på forskellene mellem JAR- og WAR-pakning i Java.
Først definerer vi hver pakningsmulighed for sig. Herefter opsummerer vi deres forskelle.
JAR-pakning
Simpelt sagt er JAR – eller Java Archive – et pakkefilformat. JAR-filer har filtypenavnet .jar og kan indeholde biblioteker, ressourcer og metadatafiler.
Det er i bund og grund en zippet fil, der indeholder de komprimerede versioner af .class-filer og ressourcer fra kompilerede Java-biblioteker og -programmer.
For eksempel er her en simpel JAR-filstruktur:
META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class
The META-INF/MANIFEST.MF-filen kan indeholde yderligere metadata om de filer, der er gemt i arkivet.
Vi kan oprette en JAR-fil ved hjælp af jar-kommandoen eller med værktøjer som Maven.
WAR-pakning
WAR står for Web Application Archive eller Web Application Resource. Disse arkivfiler har filtypenavnet .war og bruges til at pakke webapplikationer, som vi kan implementere på en hvilken som helst Servlet/JSP-container.
Her er et eksempel på layoutet af en typisk WAR-filstruktur:
Indeni har den en META-INF-mappe, der indeholder nyttige oplysninger i MANIFEST.MF om webarkivet. META-INF-mappen er privat og kan ikke tilgås udefra.
På den anden side indeholder den også den offentlige WEB-INF-mappe med alle de statiske webressourcer, herunder HTML-sider, billeder og JS-filer. Desuden indeholder den web.xml-filen, servlet-klasser og biblioteker.
Vi kan bruge de samme værktøjer og kommandoer, som vi brugte til at bygge en JAR, til at bygge et .war-arkiv.
Nøgleforskelle
Så, hvad er de vigtigste forskelle mellem disse to arkivtyper?
Den første og mest åbenlyse forskel er filudvidelsen. JAR’er har filtypenavnet .jar, mens WAR-filen har filtypenavnet .war.
Den anden store forskel er deres formål og den måde, de fungerer på. JAR-filer giver os mulighed for at pakke flere filer for at kunne bruge dem som et bibliotek, plugin eller en hvilken som helst form for applikation. På den anden side bruges WAR-filer kun til webapplikationer.
Arkivernes struktur er også forskellig. Vi kan oprette en JAR med en hvilken som helst ønsket struktur. I modsætning hertil har WAR en foruddefineret struktur med WEB-INF- og META-INF-kataloger.
Endeligt kan vi køre en JAR fra kommandolinjen, hvis vi bygger den som en eksekverbar JAR uden brug af yderligere software. Eller vi kan bruge den som et bibliotek. Derimod skal vi bruge en server for at udføre en WAR.
Slutning
I denne hurtige artikel har vi sammenlignet Java-pakningstyperne .jar og .war. I den forbindelse bemærkede vi også, at selv om begge bruger det samme ZIP-filformat, er der flere vigtige forskelle.
Kom godt i gang med Spring 5 og Spring Boot 2 gennem kurset Lær Spring:
>> CHECK OUT THE COURSE