Multi-Release JAR (MRJAR) একটি JAR ফাইল যা একাধিক Java সংস্করণের জন্য সমর্থন প্রদান করে। এটি Java 9 এ প্রবর্তিত একটি ফিচার, যার মাধ্যমে একটি JAR ফাইল একাধিক Java সংস্করণের মধ্যে সামঞ্জস্য রেখে কাজ করতে পারে। MRJAR ফাইলগুলি একাধিক Java Runtime Environment (JRE) বা Java Development Kit (JDK) ভার্সনের জন্য উপযোগী হতে পারে, যা সিস্টেমের সাথে Java অ্যাপ্লিকেশন বা লাইব্রেরির সামঞ্জস্যপূর্ণতা নিশ্চিত করে।
Multi-Release JAR এর মাধ্যমে একটি JAR ফাইল একাধিক Java সংস্করণের মধ্যে নির্দিষ্ট কোড অংশ চালাতে সক্ষম, যাতে এটি পেছনের ভার্সনগুলির জন্য backward compatibility বজায় রাখে এবং আধুনিক Java সংস্করণের জন্য নতুন সুবিধা যোগ করে।
MRJAR এর সুবিধা:
- একই JAR ফাইলের মধ্যে বিভিন্ন Java সংস্করণের জন্য সমর্থন:
MRJAR ফাইলের মাধ্যমে একক JAR ফাইল ব্যবহার করে একাধিক Java সংস্করণের জন্য আলাদা কোড থাকতে পারে। এতে ডেভেলপারদের আলাদা JAR ফাইল তৈরি করার প্রয়োজন হয় না, ফলে কোড রক্ষণাবেক্ষণ সহজ হয়ে ওঠে। - Backward Compatibility:
MRJAR ফাইলটি Java 9 বা পরবর্তী সংস্করণে নতুন ফিচার ব্যবহার করতে সক্ষম হলেও, এটি পুরনো Java সংস্করণগুলির জন্যও কাজ করবে। এটি ডেভেলপারদের পুরনো সংস্করণের সাথে সামঞ্জস্য রেখে নতুন ফিচার যোগ করার সুযোগ দেয়। - ভালো পারফরম্যান্স:
একটি MRJAR ফাইল একাধিক Java সংস্করণের জন্য একে অপরকে প্রভাবিত না করে কার্যকরভাবে কাজ করে, যার ফলে কোডের পারফরম্যান্স এবং রক্ষণাবেক্ষণ আরও সহজ হয়। - সেন্ট্রালাইজড মেইনটেনেন্স:
আপনি একাধিক সংস্করণের জন্য কোড ব্যতিক্রমের পরিবর্তে একটি কেন্দ্রীয় লাইব্রেরি তৈরি করতে পারেন, যা উন্নত রক্ষণাবেক্ষণ এবং আপডেট প্রদান করতে সাহায্য করে। - কোড রিইউজেবিলিটি:
পুরনো এবং নতুন Java সংস্করণের জন্য কোডের অংশ রিইউজ করার মাধ্যমে কোড ডুপ্লিকেশন কমে, যা কোড বেস সহজ করে তোলে।
MRJAR ব্যবহারিক উদাহরণ:
ধরা যাক, আপনি একটি লাইব্রেরি তৈরি করতে চান যা Java 8 এবং Java 9 বা পরবর্তী সংস্করণের জন্য সমর্থন প্রদান করবে। Java 9 থেকে শুরু হওয়া কিছু নতুন ফিচার (যেমন, Module System) থাকতে পারে, যেগুলি পুরনো সংস্করণের জন্য প্রয়োজনীয় নয়। এই পরিস্থিতিতে MRJAR ব্যবহার করে আপনি একাধিক সংস্করণের জন্য কোড একত্রে রাখতে পারেন।
১. MRJAR তৈরি করার জন্য Java কোড উদাহরণ:
ধরা যাক, আপনার লাইব্রেরির একটি ক্লাস রয়েছে যেটি Java 9 বা পরবর্তী সংস্করণের জন্য একটি নতুন ফিচার ব্যবহার করবে, তবে Java 8 ব্যবহারকারীদের জন্য তার অন্যথায় কাজ করবে।
CommonClass.java (shared for both versions):
public class CommonClass {
public void sayHello() {
System.out.println("Hello from the common code!");
}
}Java 9 Specific Code (Java 9 এবং পরবর্তী সংস্করণগুলির জন্য):
// Java 9 specific code (placed in META-INF/versions/9)
public class Java9SpecificClass {
public void useModule() {
System.out.println("Java 9 specific feature: Module system");
}
}Java 8 Specific Code (Java 8 জন্য):
// Java 8 specific code (placed in META-INF/versions/8)
public class Java8SpecificClass {
public void useOldFeature() {
System.out.println("Java 8 specific feature: No module system");
}
}২. JAR ফাইল তৈরি:
এখন, এই কোডটি একটি multi-release JAR ফাইল হিসেবে তৈরি করতে হবে। এজন্য আপনি jar কমান্ডে --enable-preview ফ্ল্যাগ ব্যবহার করবেন।
jar --create --file=multi-release-example.jar --main-class=CommonClass -C classes/ .এই কমান্ডটি একটি JAR ফাইল তৈরি করবে যেখানে:
- CommonClass সব সংস্করণের জন্য থাকবে।
- Java 8 এর জন্য কোড থাকবে
META-INF/versions/8ডিরেক্টরিতে। - Java 9 এর জন্য কোড থাকবে
META-INF/versions/9ডিরেক্টরিতে।
৩. JAR ফাইল রান করা:
এখন, আপনি যে কোনো Java সংস্করণ থেকে এই JAR ফাইলটি চালাতে পারেন:
java -jar multi-release-example.jarএটি Java 9 এবং পরবর্তী সংস্করণের জন্য Java9SpecificClass ব্যবহার করবে, কিন্তু পুরনো সংস্করণের জন্য Java8SpecificClass ব্যবহার করবে।
MRJAR ফিচারের ব্যাবহার:
- Module System: Java 9-এ
moduleসিস্টেমের জন্য কোড লিখতে হলে পুরনো Java সংস্করণগুলি এর সাথে সামঞ্জস্য রাখতে পারবে না, তবে MRJAR এর মাধ্যমে আপনি Java 8 এবং Java 9 বা পরবর্তী সংস্করণের জন্য ভিন্ন কোড ব্যবহার করতে পারবেন। - Library Distribution: একটি লাইব্রেরি তৈরি করার জন্য MRJAR ব্যবহার করে, আপনি একাধিক সংস্করণের জন্য একটি একক JAR ফাইল তৈরি করতে পারেন, যা লাইব্রেরি ব্যবহারকারীদের জন্য সুবিধাজনক।
উপসংহার:
Multi-Release JAR Java 9 এবং পরবর্তী সংস্করণগুলিতে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা বিভিন্ন Java সংস্করণের জন্য কোড সমর্থন নিশ্চিত করে। এটি ডেভেলপারদের জন্য backward compatibility বজায় রেখে নতুন ফিচার এবং সিস্টেম আপডেট তৈরি করার সুবিধা প্রদান করে। Java 8 এবং Java 9 বা পরবর্তী সংস্করণের মধ্যে পার্থক্য থাকা সত্ত্বেও, একটি মাত্র JAR ফাইল দিয়ে দুইটি সংস্করণে অ্যাপ্লিকেশন চালানো সম্ভব হয়, যা রক্ষণাবেক্ষণ এবং ডেপ্লয়মেন্ট সহজ করে তোলে।
Read more