ความแตกต่างระหว่าง jar และ war ใน Java


462

ความแตกต่างระหว่าง a .jarและ.warไฟล์คืออะไร?
มันเป็นเพียงนามสกุลไฟล์หรือมีอะไรมากกว่านี้?

คำตอบ:


387

จากเคล็ดลับ Java: ความแตกต่างระหว่างไฟล์ ear jar และ war :

ไฟล์เหล่านี้เป็นไฟล์ซิปโดยใช้เครื่องมือ java jar ไฟล์เหล่านี้ถูกสร้างขึ้นเพื่อวัตถุประสงค์ที่แตกต่างกัน นี่คือคำอธิบายของไฟล์เหล่านี้:

  • ไฟล์. jar: ไฟล์ . jar ประกอบด้วยไฟล์ไลบรารีทรัพยากรและอุปกรณ์เสริมเช่นไฟล์คุณสมบัติ

  • .war ไฟล์: แฟ้มสงครามมีโปรแกรมประยุกต์บนเว็บที่สามารถนำไปใช้ใน servlet / JSP ภาชนะใด ๆ ไฟล์. war มีไฟล์jsp, html, javascriptและอื่น ๆ ที่จำเป็นสำหรับการพัฒนาเว็บแอปพลิเคชัน


คำอธิบาย Sun / Oracle อย่างเป็นทางการ:


บทความ Wikipedia:


10
ฉันสงสัยว่าเป็น jsp และไฟล์เว็บแอปพลิเคชันเพิ่มเติมทำไมถึงไม่อยู่ในไฟล์ jar
Emmanuel Angelo.R

@ EmmanuelAngelo.R พวกเขาสามารถ - ไฟล์ jar เป็นเพียงไฟล์ซิป ถ้ามันจะทำสิ่งที่มีประโยชน์เป็นเรื่องอื่นซึ่งขึ้นอยู่กับรหัสที่คุณต้องการใช้ไฟล์ jar เป็นตัวอย่างที่น่าสนใจเซิร์ฟเวอร์ Jenkins Continuous Integration ถูกแจกจ่ายเป็นไฟล์ WAR ซึ่งสามารถรันด้วย "java -jar" ดูwiki.jenkins-ci.org/display/JENKINS/…สำหรับรายละเอียด
Thorbjørn Ravn Andersen


40

คุณเพิ่มคอมโพเนนต์ของเว็บให้กับแอ็พพลิเคชัน J2EE ในแพ็คเกจที่เรียกว่าเว็บแอ็พพลิเคชันไฟล์เก็บถาวร (WAR) ซึ่งเป็น JAR คล้ายกับแพ็กเกจที่ใช้สำหรับไลบรารีคลาส Java สงครามมักจะมีทรัพยากรอื่น ๆ นอกเหนือจากองค์ประกอบของเว็บรวมถึง:

  • คลาสยูทิลิตี้ฝั่งเซิร์ฟเวอร์ (ฐานข้อมูล beans, ตะกร้าสินค้าและอื่น ๆ )
  • แหล่งข้อมูลบนเว็บแบบคงที่ (HTML, รูปภาพและไฟล์เสียงและอื่น ๆ )
  • คลาสฝั่งไคลเอ็นต์ (แอพเพล็ตและคลาสยูทิลิตี้)

WAR มีโครงสร้างไดเร็กทอรีแบบลำดับชั้นเฉพาะ ไดเรกทอรีระดับบนสุดของสงครามคือรูทเอกสารของแอปพลิเคชัน รูทเอกสารคือที่เก็บเพจ JSP คลาสและที่เก็บถาวรของไคลเอ็นต์และเว็บสแตติกรีซอร์ส

(ที่มา )

ดังนั้น. war คือ. jar แต่มันมีส่วนประกอบของเว็บแอ็พพลิเคชันและถูกจัดวางตามโครงสร้างเฉพาะ Awar ถูกออกแบบมาเพื่อใช้งานกับเว็บแอปพลิเคชันเซิร์ฟเวอร์เช่น Tomcat หรือ Jetty หรือเซิร์ฟเวอร์ Java EE เช่น JBoss หรือ Glassfish


1
นี่หมายความว่าอย่างไรถ้าคุณกำลังสร้างแอปเซิร์ฟเวอร์ที่เพิ่งใช้ซ็อกเก็ตและไม่มี UI ใด ๆ ไม่จำเป็นต้องทำแพคเกจเป็นไฟล์สงคราม
bot_bot

ที่จริงแล้วตอนนี้ฉันกำลังอ่านอีกเล็กน้อยฉันไม่ต้องการ Tomcat ฉันสามารถส่งไหไปยังเซิร์ฟเวอร์และเรียกใช้โดยตรงจากที่นั่น
bot_bot


15

.warไฟล์แอพลิเคชันเว็บ Archive ซึ่งไหลภายในแอพพลิเคชันเซิร์ฟเวอร์ในขณะที่.jarเป็น Java Application Archive ที่รันโปรแกรมคอมพิวเตอร์ในเครื่องของผู้ใช้


14
คำสั่งที่สองไม่จำเป็นต้องเป็นความจริง jar สามารถเริ่มเว็บเซิร์ฟเวอร์ในตัวเช่นกับ Spring Boot
whirlwin

4
แม้ว่าข้อความนั้นจะไม่เป็นความจริง แต่อย่างใด jar สามารถเป็นไลบรารีของรหัสที่จะใช้โดยแอปพลิเคชันอื่น กล่าวอีกนัยหนึ่งมันอาจไม่ได้มีคลาสหลักสำหรับการทำงาน
Kevin Welker

@KevinWelker เห็นด้วย แม้ในปี 2011 (เมื่อโพสต์นี้ถูกเขียน) โถก็ยังสามารถเป็นตัวแทนของห้องสมุด อย่างไรก็ตามการบูทสปริงไม่อยู่รอบ ๆ ดังนั้นฉันสามารถมองเห็นความจริงที่ว่าคุณสามารถฝังเว็บเซิร์ฟเวอร์ในขวดอย่างที่กล่าวถึงลมกรด
intrepistar_88

@ Kevin Welker ไม่ใช่ "ไม่ใช่ทั้งหมด" ฉันจะพูดว่า "ไม่ใช่ความจริงทั้งหมด" เนื่องจาก whirlwin เพิ่งพูดถึงข้อยกเว้นซึ่งเป็นความจริงอย่างสมบูรณ์ใช่ไหม?
Alexei Martianov

12

ไฟล์ war เป็นไฟล์ jar พิเศษที่ใช้ทำแพคเกจเว็บแอปพลิเคชันเพื่อให้ง่ายต่อการปรับใช้บนเซิร์ฟเวอร์แอปพลิเคชัน เนื้อหาของไฟล์ war ต้องเป็นไปตามโครงสร้างที่กำหนดไว้


10

.jar และ. war เป็นไฟล์ซิปที่เก็บถาวร ทั้งคู่สามารถมีไฟล์รายการ META-INF / MANIFEST.MF ซึ่งเป็นตัวเลือกซึ่งเก็บข้อมูลที่มีข้อมูลเช่นการกำหนดเวอร์ชันและแอตทริบิวต์การเรียนการสอนเช่น classpath และ main-class สำหรับ JVM ที่จะเรียกใช้งาน

ไฟล์. war - คลังเก็บแอปพลิเคชันเว็บที่มีวัตถุประสงค์เพื่อดำเนินการภายใน 'คอนเทนเนอร์ Servlet' และอาจรวมไฟล์ jar อื่น ๆ (ที่ไดเรกทอรี WEB-INF / lib) ที่รวบรวมคลาส (ที่ WEB-INF / คลาส (servlet ไปที่นั่นด้วย)) .jsp ไฟล์รูปภาพไฟล์ ฯลฯ เนื้อหา WAR ทั้งหมดที่มีเพื่อสร้างโมดูลที่มีในตัวเอง


5

บีบอัดไฟล์ถาวรทั้งสอง war ใช้สำหรับเว็บแอ็พพลิเคชันที่มีโครงสร้างไดเร็กทอรีเฉพาะ


4

war และ jar เป็นไฟล์เก็บถาวรสำหรับไฟล์ java war เป็นที่เก็บถาวรของเว็บและกำลังทำงานบนเว็บเซิร์ฟเวอร์ jar คือไฟล์เก็บถาวร java


1

สงคราม -

เผยแพร่เว็บแอปพลิเคชันบน Java WAR มีโครงสร้างไฟล์เดียวกับไฟล์ JAR ซึ่งเป็นไฟล์บีบอัดไฟล์เดียวที่มีไฟล์หลายไฟล์ที่รวมอยู่ในนั้น

ขวด -

ไฟล์. jar ประกอบด้วยไฟล์ไลบรารีทรัพยากรและอุปกรณ์เสริมเช่นไฟล์คุณสมบัติ

ไฟล์ WAR ใช้เพื่อรวม JSP, servlets, คลาสไฟล์ Java, ไฟล์ XML, ไลบรารี javascript, ไลบรารี JAR, หน้าเว็บสแตติก, และทรัพยากรอื่น ๆ ที่จำเป็นในการเรียกใช้แอปพลิเคชัน



0

ไฟล์ JAR อนุญาตให้ทำแพ็กเกจหลายไฟล์เพื่อใช้เป็นไลบรารีปลั๊กอินหรือแอปพลิเคชันประเภทใดก็ได้ ในทางกลับกันไฟล์ WAR จะใช้สำหรับเว็บแอปพลิเคชันเท่านั้น

สามารถสร้าง JAR ด้วยโครงสร้างที่ต้องการ ในทางตรงกันข้าม WAR มีโครงสร้างที่กำหนดไว้ล่วงหน้าพร้อมกับไดเรกทอรี WEB-INF และ META-INF

ไฟล์ JAR อนุญาตให้ Java Runtime Environment (JRE) ปรับใช้แอปพลิเคชันทั้งหมดรวมถึงคลาสและแหล่งข้อมูลที่เกี่ยวข้องในการร้องขอเดียว ในทางกลับกันไฟล์ WAR อนุญาตให้ทดสอบและปรับใช้เว็บแอ็พพลิเคชันได้อย่างง่ายดาย


0

นามสกุลไฟล์ JAR คือ. jar และสร้างด้วยคำสั่ง jar จากพรอมต์คำสั่ง (เช่นเดียวกับคำสั่ง javac) โดยทั่วไปไฟล์ JAR มีทรัพยากรที่เกี่ยวข้องกับ Java เช่นไลบรารีคลาสไฟล์ etc.JAR นั้นเหมือนกับไฟล์ winzip ยกเว้นว่าไฟล์ Jar เป็นแพลตฟอร์มที่เป็นอิสระ

ไฟล์ WAR เป็นเพียงไฟล์ JAR แต่มีไฟล์ Java ที่เกี่ยวข้องกับเว็บเท่านั้นเช่น Servlets, JSP, HTML

ในการเรียกใช้ไฟล์ WAR จำเป็นต้องมีเว็บเซิร์ฟเวอร์หรือเว็บคอนเทนเนอร์เช่น Tomcat หรือ Weblogic หรือ Websphere ในการเรียกใช้ไฟล์ JAR นั้น JDK แบบง่ายก็เพียงพอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.