মাল্টি-ভার্সন কম্প্যাটিবল JAR ফাংশন আমাদের একটি ক্লাসের ভার্সন তৈরি করতে দেয় যা আমরা শুধু তখন ব্যবহার করতে চাই যখন লাইব্রেরি প্রোগ্রাম একটি স্পেসিফিক জাভা এনভায়রনমেন্ট ভার্সনে রান হয়। আমরা কম্পাইল্ড ভার্সন "--release" প্যারামিটার দিয়ে সপেসিফাই করতে পারি।
একটি স্পেসিফিক পরিবর্তন হলো "MANIFEST.MF" ফাইল "META-INF" ডিরেক্টরিতে একটি নতুন অ্যাট্রিবিউট হিসেবে থাকে:
Multi-Release: true
META-INF ডিরেক্টরির অধীনে একটি নতুন ভার্সন ডিরেক্টরি থাকে। যদি আমরা জাভা ৯ ভার্সন সাপোর্ট করতে চাই, তবে versions ডিরেক্টরির অধীনে একটি ৯ ডিরেক্টরি থাকে।
multirelease.jar
├── META-INF
│ └── versions
│ └── 9
│ └── multirelease
│ └── Helper.class
├── multirelease
├── Helper.class
└── Main.class
নিচের উদাহরণে, আমরা "Test.java" ফাইল থেকে একটি মাল্টি-ভার্সন কম্প্যাটিবল JAR ফাংশন ব্যবহার করে জার প্যাকেজের দুটি ভার্সন জেনারেট করতে পারি। একটি ভার্সন jdk 7, আরেকটি jdk 9, তারপর আমরা এগুলো ভিন্ন এনভায়রনমেন্টে এক্সিকিউট করি।
প্রথম ধাপ: একটি ফোল্ডার তৈরি করুন C:/test/java7/com/tutorialspoint, এবং এই ফোল্ডারে একটি "Test.java" ফাইল তৈরি করুন নিচের মতো:
package com.tutorialspoint;
public class Test {
public static void main(String args[]) {
System.out.println("Inside Java 7");
}
}
দ্বিতীয় ধাপ: একটি ফোল্ডার তৈরি করুন C:/test/java9/com/tutorialspoint, এবং এই ফোল্ডারে একটি "Test.java" ফাইল তৈরি করুন নিচের মতো:
package com.tutorialspoint;
public class Test {
public static void main(String args[]) {
System.out.println("Inside Java 9");
}
}
আমরা কোড কম্পাইল করতে পারি নিচের মতো:
C:\test> javac --release 9 java9/com/tutorialspoint/Test.java C:\test> javac --release 7 java7/com/tutorialspoint/Test.java
আমরা একটি মাল্টি-ভার্সন কম্প্যাটিবল jar প্যাকেজ তৈরি করতে পারি নিচের মতো:
C:\JAVA> jar -c -f test.jar -C java7 . --release 9 -C java9 Warning: entry META-INF/versions/9/com/tutorialspoint/Test.java, multiple resources with same name
JDK 7 দিয়ে এক্সিকিউট করুন:
C:\JAVA> java -cp test.jar com.tutorialspoint.Test Inside Java 7
JDK 9 দিয়ে এক্সিকিউট করুন:
C:\JAVA> java -cp test.jar com.tutorialspoint.Test Inside Java 9