java archive (jar) เป็นรูปแบบไฟล์ที่ไม่ขึ้นกับแพลตฟอร์มใดๆเพื่อรวมไฟล์หลายไฟล์เข้าด้วยกันเพื่อให้สามารถแจกจ่ายเป็นหน่วยเดียว ดังนั้นจึงมีประโยชน์หากแอปพลิเคชันของคุณมีไฟล์จำนวนมาก โดยเราสามารถรวมไฟล์หลายๆชนิดไว้ด้วยกันได้ ไฟล์เป็นไฟล์แบบบีบอัด (compress) ทำให้มีขนาดไม่ใหญ่ สามารถส่งผ่านทางเครือข่ายได้ง่าย และยังสามารถประยุกต์ใช้การลงนามแบบดิจอตอลได้ด้วย (digital sign)

โดยพื้นฐานไฟล์ .jar จะเป็นการรวมไฟล์ .class ซึ่งก็คือไฟล์จาวาไบต์โค๊ดไว้ด้วยกัน แต่ก็สามารถมีไฟล์ชนิดอื่นด้วย เช่น ไฟล์การตั้งค่า (configuration file) ไฟล์รูปภาพ ไฟล์เสียง เป็นต้น และเราจะเรียกไฟล์ที่ไม่ใช่จาวาไบต์โค๊ดเราเรียกว่า resource

ใน .jar ไฟล์จะต้องมีไฟล์ที่อธิบายตัว .jar ไฟล์เองเรียกว่าเป็นเมต้าดาต้าของ .jar ไฟล์ก็ได้ โดยไฟล์นี้ชื่อ MANIFEST.MF อยู่ในไดเร็คทอรี่ META-INF ข้อมูลในไฟล์ เช่น ผู้เขียนโปรแกรม เวอร์ชั่น เป็นต้น

โดยมาก .jar ไฟล์จะประกอบไปด้วยกลุ่มของ .class ไฟล์ที่รวมกันอยู่ในแพคเกจอีกทีหนึ่ง ซึ่งจากโครงสร้างตามภาพด้านบนแพคเกจก็คือไดเร็คทอรี่นั่นเอง เช่น second หรือ third.another (เราใช้ . ในการเชื่อมโครงสร้างของแพคเกจ) โดยชื่อของแพคเกจจะประกอบด้วยตังเลขและตังอักษรและห้ามใช้เครื่องหมาย –

ในไฟล์ MANIFEST.MF นอกจากข้อมูล ผู้เขียนโปรแกรม และ เวอร์ชั่น แล้วยังบอกด้วยว่าคลาส Main อยู่ที่ใด จากตัวอย่างด้านล่างจะบอกว่าคลาส Main อยู่ที่ second.Main และไฟล์จะจ้องจบด้วยบรรทัดว่างหนึ่งบรรทัด

การเรียกใช้งาน .jar ไฟล์ใช้คำสั่ง java -jar app-with-main-class-header.jar แต่ถ้าในไฟล์ MANIFEST.MF ไม่ได้ระบุ Main-Class หรือเราต้องการระบุว่าจะเรียก Main เองจะใช้คำสั่ง java -cp app-without-main-class-header.jar path.to.Main