Yleiskatsaus
Tässä pikaoppaassa keskitymme JAR- ja WAR-pakkausten eroihin Javassa.
Ensin määrittelemme jokaisen pakkausmuodon erikseen. Sen jälkeen teemme yhteenvedon niiden eroista.
JAR-pakkaaminen
Lyhyesti sanottuna JAR eli Java-arkisto on pakettitiedostomuoto. JAR-tiedostoilla on .jar-pääte, ja ne voivat sisältää kirjastoja, resursseja ja metatietotiedostoja.
Ltse asiassa kyseessä on pakattu tiedosto, joka sisältää pakattuja versioita .class-tiedostoista ja resursseja käännetyistä Java-kirjastoista ja -sovelluksista.
Esimerkiksi seuraavassa on yksinkertainen JAR-tiedoston rakenne:
META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class
The META-INF/MANIFEST.MF-tiedosto voi sisältää muita metatietoja arkistoon tallennetuista tiedostoista.
JAR-tiedoston voi luoda jar-komennolla tai Mavenin kaltaisilla työkaluilla.
WAR-pakkaus
WAR on lyhenne sanoista Web Application Archive (verkkosovellusarkisto) tai Web Application Resource (verkkosovellusresurssi). Näillä arkistotiedostoilla on .war-pääte, ja niitä käytetään paketoimaan web-sovelluksia, jotka voimme ottaa käyttöön millä tahansa Servlet/JSP-säiliöllä.
Tässä on esimerkkiasettelu tyypillisestä WAR-tiedostorakenteesta:
Sisällä on META-INF-hakemisto, joka sisältää MANIFEST.MF:ssä hyödyllistä tietoa web-arkistosta. META-INF-hakemisto on yksityinen, eikä siihen pääse käsiksi ulkopuolelta.
Toisaalta se sisältää myös julkisen WEB-INF-hakemiston, jossa on kaikki staattiset web-resurssit, kuten HTML-sivut, kuvat ja JS-tiedostot. Lisäksi se sisältää web.xml-tiedoston, servlet-luokat ja kirjastot.
Voidaan käyttää .war-arkiston rakentamiseen samoja työkaluja ja komentoja, joita käytimme JAR-arkiston rakentamiseen.
Keskeiset erot
Mitkä ovat siis näiden kahden arkistotyypin keskeiset erot?
Ensimmäinen ja ilmeisin ero on tiedostopääte. JAR-tiedostoilla on .jar-pääte, kun taas WAR-tiedostolla on .war-pääte.
Toinen keskeinen ero on niiden tarkoitus ja toimintatapa. JAR-tiedostojen avulla voimme paketoida useita tiedostoja, jotta voimme käyttää niitä kirjastona, lisäosana tai minkä tahansa sovelluksen muodossa. Toisaalta WAR-tiedostoja käytetään vain verkkosovelluksiin.
Arkistojen rakenne on myös erilainen. Voimme luoda JAR-arkiston haluamallamme rakenteella. Sitä vastoin WAR-arkistolla on valmiiksi määritelty rakenne, jossa on WEB-INF- ja META-INF-hakemistot.
Viimeiseksi voimme ajaa JAR-arkistoa komentoriviltä, jos rakennamme sen suoritettavaksi JAR-arkistoksi ilman lisäohjelmia. Tai voimme käyttää sitä kirjastona. WAR:n suorittamiseen sen sijaan tarvitsemme palvelimen.
Johtopäätös
Tässä pika-artikkelissa vertailimme .jar- ja .war- Java-pakkaustyyppejä. Samalla totesimme myös, että vaikka molemmat käyttävät samaa ZIP-tiedostomuotoa, niissä on useita tärkeitä eroja.
Aloita Spring 5:n ja Spring Boot 2:n käyttö Opi Spring -kurssin avulla:
>> KATSO KURSSI