একটি মাল্টি-রিলিজ জার (রেফারেন্স: mrjar) একই লাইব্রেরির একাধিক JDK ভার্সন-এর জন্য রিলিজ ধারণ করে। অর্থাৎ, আমরা একটি লাইব্রেরি mrjar হিসেবে রাখতে পারি যা JDK 9-এর জন্য কাজ করবে। mrjar-এ থাকা কোডে ক্লাস ফাইল থাকে যা JDK 9-এ কম্পাইলড। JDK 9-এ কম্পাইলড ক্লাসগুলো JDK 9-এর অফার করা API-র সুবিধা নিতে পারে।
mrjar ইতিমধ্যে বিদ্যমান জারের ডিরেক্টরি স্ট্রাকচারকে এক্সটেন্ড করে। এতে একটি রুট ডিরেক্টরি থাকে যেখানে সব কন্টেন্ট থাকে এবং META-INF ডিরেক্টরি থাকে যা জারের মেটাডেটা স্টোর করতে ব্যবহৃত হয়। সাধারণত একটি জারে META-INF/MANIFEST.MF ফাইল থাকে যাতে অ্যাট্রিবিউট থাকে।
সাধারণ জারের এন্ট্রি
- jar-root - C1.class - C2.class - C3.class - C4.class - META-INF - MANIFEST.MF
উপরের টেমপ্লেটে জারে চারটি ক্লাস ফাইল এবং একটি MANIFEST.MF ফাইল রয়েছে। mrjar META-INF ডিরেক্টরিকে এক্সটেন্ড করে JDK ভার্সন-স্পেসিফিক ক্লাস স্টোর করে। META-INF ডিরেক্টরিতে versions সাব-ডিরেক্টরি থাকে যাতে অনেক সাব-ডিরেক্টরি থাকে, প্রতিটির নাম JDK মেজর ভার্সনের সমান। উদাহরণস্বরূপ, JDK 9-স্পেসিফিক ক্লাসের জন্য META-INF/versions/9 directory থাকে। JDK 10-স্পেসিফিক ক্লাসের জন্য META-INF/versions/10 থাকে।
mrjar স্ট্রাকচার
- 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