একটি মডিউল হলো একটি স্বাধীন অ্যাপ্লিকেশন ইউনিট যা একটি সিঙ্গল ফাংশনালিটি রিপ্রেজেন্ট করে। একটি মডিউলে তিনটি গুরুত্বপূর্ণ কম্পোনেন্ট থাকে:
- নেম (Name): विशিষ্টভাবে আইডেন্টিফাই করার জন্য
- ডিপেন্ডেন্সি (Dependencies): যেসব মডিউলে এটি ডিপেন্ড করে
- এক্সপোর্টেড প্যাকেজ (Exported packages): যেসব প্যাকেজ এক্সটার্নাল অ্যাপ্লিকেশনের জন্য ওপেন
একটি মডিউল ডিক্লেয়ার করতে হলে "module-info.java" ফাইলটি রুট সোর্স কোডে যোগ করতে হয়। "module-info.java" ফাইলটির কম্পোনেন্টগুলো হলো "name", "requires", "exports", এবং "exports to"।
module-info.java ফাইল টেমপ্লেট
module <module-name> {
requires <module-name1> ;
requires <module-name2>;
...
exports <package-name1>;
exports <package-name2>;
...
exports <package-name> to <module-name>;
}
প্রতিটি কম্পোনেন্টের বিবরণ
- Name: মডিউলের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। মডুলার সিস্টেম নাম দিয়ে মডিউল আইডেন্টিফাই করে, তাই এটি ইউনিক হতে হয়।
- requires: এই ক্লজ ডিপেন্ডেন্সি এবং এক্সটার্নাল মডিউল ডিফাইন করতে ব্যবহৃত হয় যেগুলোতে কারেন্ট মডিউল ডিপেন্ডেন্ট। "module-info.java" ফাইলে প্রতিটি ডিপেন্ডেন্ট মডিউলের জন্য আলাদা "requires" এন্ট্রি দরকার। জাভা ৯-এ একটি বেস মডিউল রয়েছে। এটি একটি স্বাধীন মডিউল যা অন্য কোনো মডিউল রিকোয়ার করে না। "requires" ক্লজ ব্যবহার করা লাগে না। এই বেস মডিউল ডিফল্টলি উপলব্ধ।
- exports: "exports" ক্লজ কারেন্ট মডিউলের এক্সপোর্ট করা প্যাকেজ ডিফাইন করতে ব্যবহৃত হয়। এই প্যাকেজগুলো অন্য মডিউল ব্যবহারের জন্য ওপেন। "module-info.java" ফাইলে প্রতিটি এক্সপোর্টেড মডিউলের জন্য আলাদা "exports" এন্ট্রি দরকার।
- exports to: "exports to" ক্লজ একটি প্যাকেজ শুধু নির্দিষ্ট মডিউলগুলোর জন্য এক্সপোর্ট করতে ব্যবহৃত হয়, সবার জন্য এক্সপোর্ট করার বদলে।