Module System জাভা ৯-এ নবীন ফিচার। একটি মডিউল হলো প্যাকেজের সেট এবং এটি দুটি টাইপে ভাগ: এক্সপোর্টেড প্যাকেজ এবং কনসিল্ড প্যাকেজ। এক্সপোর্টেড প্যাকেজ বাহ্যিক থেকে ব্যবহার করা যায়। কনসিল্ড প্যাকেজ বাহ্যিক থেকে ব্যবহার করা যায় না, শুধু এই মডিউলের কোডই ব্যবহার করতে পারে।
জাভা ৯-এ চারটি মডিউল টাইপ
- Application Modules: ফাংশনালিটি অর্জনের জন্য তৈরি মডিউল। সব থার্ড-পার্টি ডিপেন্ডেন্সি এই ক্যাটাগরিতে পড়ে।
- Automated Modules: যেসব JAR মডিউল পাথেই রাখা যায় মডিউল ডেসক্রিপ্টর ছাড়া, সেগুলো অটোমেটেড মডিউল। প্রধান সুবিধা: pre-Java 9 빌্ড JAR ব্যবহার করা যায়।
- Unnamed Modules: ক্লাসপাথে থাকা যেকোনো JAR বা ক্লাস অননেম মডিউলে পড়ে। নাম নেই, তাই সব মডিউল রিড ও এক্সপোর্ট করতে পারে।
- Platform Modules: JDK মডুলার স্ট্রাকচারে রূপান্তরিত হয়েছে, এগুলোই প্ল্যাটফর্ম মডিউল।
মডিউল ডিক্লেরেশন টেমপ্লেট
module <Module-Name> {
requires moduleName;
exports packageName;
}