একটি মডিউল হলো কোড এবং ডেটা-র কম্বিনেশন যার একটি নাম থাকে, অন্য মডিউলগুলোর ওপর ডিপেন্ডেন্সি ডিক্লেয়ার করে, প্যাকেজ এক্সপোর্ট করে যাতে পাবলিক টাইপস বাইরে থেকে অ্যাক্সেসযোগ্য হয়, এবং সার্ভিসেস সপেসিফাই করে যা এটি ব্যবহার করে বা প্রদান করে। এই সব module-info.java ফাইলে সপেসিফাই থাকে, যা মডিউলের রুট ডিরেক্টরিতে থাকে।
module-info.java ফাইলে দুটি ধরনের "export" ক্লজ ব্যবহার করা যায়।
১) export <package>: ডিফল্টভাবে, একটি মডিউলের টাইপ public বাইরে থেকে দৃশ্যমান নয়। অন্য মডিউল থেকে একটি প্যাকেজের পাবলিক টাইপস দৃশ্যমান করতে হলে, আমাদের এই প্যাকেজটি export করতে হবে। মনে রাখবেন যে আমরা প্যাকেজ লেভেলে আছি, টাইপের ইউনিট লেভেলে নয়। কিন্তু সাব-প্যাকেজগুলো এক্সপোর্ট হয় না।
আমরা tp.com.tutorialspoint.model প্যাকেজের ক্লাস ও ইন্টারফেস অন্য মডিউল ব্যবহার করতে দিতে চাইলে, নিচের মতো লিখতে পারি:
module com.tutorialspoint.model {
exports tp.com.tutorialspoint.model;
}
খুব জরুরি বুঝতে হবে যে একটি প্যাকেজ শুধু একই মডিউলে থাকতে পারে। অন্যথায়, নিচের এরর আসবে:
Error:(1, 1) java: package exists in another module:
২) export <package> to <module>: আমরা আমাদের মডিউলগুলোর সিকিউরিটি বড়াতে পারি নির্দিষ্ট প্যাকেজের দৃশ্যমানতা একটি ফাইনাইট লিস্টের মডিউলে সীমাবদ্ধ করে: শুধু লিস্ট করা মডিউলগুলো এই ক্লাসগুলো অ্যাক্সেস করতে পারবে।
module com.tutorialspoint.model {
exports tp.com.tutorialspoint.model
to com.tutorialspoint.gui;
}