ไฟล์ JAR คืออะไร?
ไฟล์ที่มีนามสกุล .jar คือไฟล์ Java Archive ที่มีไฟล์ที่เกี่ยวข้องกับแอปพลิเคชันต่างๆ มากมายเป็นไฟล์เดียว รูปแบบไฟล์นี้ถูกสร้างขึ้นเพื่อลดความเร็วในการโหลด Java Applet ที่ดาวน์โหลดมาในเบราว์เซอร์ผ่านธุรกรรม HTTP โดยหลีกเลี่ยงการสร้างการเชื่อมต่อ HTTP หลายรายการ ไฟล์ JAR ไฟล์เดียวสามารถมีไฟล์คลาส Java (.class), images และ sounds แต่ละรายการในไฟล์ JAR สามารถเซ็นชื่อแบบดิจิทัลโดยผู้พัฒนาแอปพลิเคชันเพื่อตรวจสอบแหล่งที่มา ไฟล์ JAR ถูกใช้เป็นประจำเพื่อสร้าง API การทำงานที่มีฟังก์ชันเฉพาะที่เกี่ยวข้องกับ API นั้น
รูปแบบไฟล์ JAR
ไฟล์ JAR อ้างอิงจาก รูปแบบไฟล์ ZIP ยอดนิยม ซึ่งเก็บถาวรไฟล์เนื้อหาแต่ละไฟล์ไว้ในไฟล์เดียว รูปแบบไฟล์ JAR รองรับการบีบอัด ส่งผลให้ขนาดไฟล์เล็กลงสำหรับการดาวน์โหลด และทำให้เวลาในการดาวน์โหลดดีขึ้น ข้อมูลจำเพาะของไฟล์ JAR โดย Oracle ให้รายละเอียดทั้งหมดเกี่ยวกับข้อกำหนดภายในของไฟล์ JAR
ไฟล์รายการ
เมื่อสร้างไฟล์ JAR ไฟล์รายการจะถูกสร้างขึ้นโดยอัตโนมัติภายในไฟล์ซึ่งมีข้อมูลเมตาเกี่ยวกับเนื้อหาของไฟล์ JAR ไฟล์นี้แสดงเนื้อหาที่บรรจุอยู่ภายในไฟล์ JAR ไฟล์ Manifest ทั่วไปมีลักษณะดังนี้ซึ่งแสดงโฟลเดอร์และคลาสที่รวมอยู่ในไฟล์ JAR
META-INF/
META-INF/MANIFEST.MF
pack/
pack/class1.class
pack/class2.class
..
..
ข้อมูลจำเพาะรายการ
ข้อกำหนดรายการถูกกำหนดโดย Oracle ดังนี้
ไฟล์รายการ
: ส่วนหลักขึ้นบรรทัดใหม่ *individual-section
`ส่วนหลัก’: บรรทัดข้อมูลเวอร์ชันขึ้นบรรทัดใหม่ *แอตทริบิวต์หลัก
version-info
: Manifest-Version: หมายเลขรุ่น
หมายเลขรุ่น
: หลัก+{.หลัก+}*
`แอตทริบิวต์หลัก’: (แอตทริบิวต์หลักที่ถูกต้อง) ขึ้นบรรทัดใหม่
individual-section
: ชื่อ : ค่าขึ้นบรรทัดใหม่ *perentry-attribute
perentry-attribute
: (แอตทริบิวต์ perentry ที่ถูกต้องตามกฎหมาย) ขึ้นบรรทัดใหม่
ขึ้นบรรทัดใหม่
: CR LF | เอลฟ์ | CR (ไม่ตามด้วย LF)
digit
: {0-9}
JAR ที่เรียกใช้งานได้
ไฟล์ JAR ยังสามารถประกอบด้วยแอปพลิเคชันที่สามารถดำเนินการโดย Java Virtual Machine (JVM) ซึ่งคล้ายกับแอปพลิเคชันอื่นๆ บนระบบปฏิบัติการ Microsoft Windows ในกรณีนี้ JVM จำเป็นต้องทราบเกี่ยวกับจุดเข้าใช้งานของแอปพลิเคชันที่เป็นคลาสใดๆ ที่มีเมธอดหลักเป็นโมฆะแบบสแตติกสาธารณะ ไฟล์รายการระบุคลาสดังกล่าวด้วยส่วนหัว ‘คลาสหลัก’ ในรูปแบบต่อไปนี้:
Main-Class: com.example.MyClassName