Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Multi-Release JAR (mrjar) ใน Java 9 คืออะไร

Multi-release JAR (mrjar) เป็น JAR ที่มีไลบรารีรุ่นเดียวกันสำหรับ หลายเวอร์ชัน JDK หมายความว่าเราสามารถมีไลบรารีเป็น mrjar ที่ทำงานบน JDK 9 โค้ดใน mrjar มี class files ที่คอมไพล์ด้วย JDK 9 คลาสเหล่านี้อาจใช้ API ที่ JDK 9 เสนอ

โครงสร้าง JAR ธรรมดา

- jar-root
  - C1.class
  - C2.class
  - C3.class
  - C4.class
  - META-INF
    - MANIFEST.MF

โครงสร้าง Multi-Release JAR

mrjar ขยายโครงสร้าง META-INF เพื่อเก็บคลาสเฉพาะเวอร์ชัน JDK โฟลเดอร์ META-INF/versions มีซับไดเรกทอรีชื่อตาม major version ของ JDK

- jar-root
  - C1.class
  - C2.class
  - C3.class
  - C4.class
  - META-INF
    - MANIFEST.MF
    - versions
      - 9
        - C2.class
        - C5.class
      - 10
        - C1.class
        - C2.class
        - C6.class

การทำงาน

  • JDK 9+ จะโหลดคลาสจาก META-INF/versions/9/ แทนที่ใน root
  • JDK 10+ จะโหลดจาก META-INF/versions/10/
  • JDK 8 หรือเก่ากว่า (ไม่รองรับ mrjar) จะโหลดจาก root ตามปกติ
  • ต้องมี Multi-Release: true ใน MANIFEST.MF

สร้าง mrjar ด้วยคำสั่ง jar

jar --create --file mrjar.jar -C classes-root . --release 9 -C classes-9 . --release 10 -C classes-10 .

mrjar ช่วยให้ไลบรารีเดียวรองรับหลาย JDK ได้ โดยใช้ API ใหม่ในเวอร์ชันใหม่ แต่ยังทำงานบน JDK เก่าได้