মডিউল হলো একটি নামযুক্ত, সেলফ-ডেসক্রিবিং কোড এবং ডেটার সংগ্রহ। কোডটি প্যাকেজের সেট হিসেবে অর্গানাইজ করা থাকে যাতে জাভা ক্লাস এবং ইন্টারফেসের মত টাইপ থাকে। ডেটাতে রিসোর্স এবং অন্যান্য স্ট্যাটিক ইনফরমেশন থাকে। আমাদের একটি মডিউল ডিক্লেয়ার করতে হয় এবং সোর্স কোডের রুটে module-info.java যোগ করতে হয়।
নিচে "module-info.java" ফাইলের টেমপ্লেট দেওয়া হলো:
module <module-name> {
requires <module-name1> ;
requires <module-name2>;
exports <package-name1>;
exports <package-name2>;
exports <package-name> to <module-name>
}
আমরা কিছু কমান্ড-লাইন অপশন ব্যবহার করতে পারি যা এক্সিস্টিং মডিউল মডিফাই করতে এবং ডিপেন্ডেন্সি যোগ করতে, অডিশনাল প্যাকেজ এক্সপোর্ট করতে সাহায্য করে।
নিচে কিছু কমান্ড-লাইন কমান্ড দেওয়া হলো যা এক্সিস্টিং মডিউল মডিফাই করতে ব্যবহার করা যায়:
1) --add-reads <module>=<target-module>(,<target-module>)*
উপরের কমান্ড <module>-কে আপডেট করে <target-module> রিড করতে, মডিউল ডিক্লেরেশনের তാത্ত্বিকতার ব্যাবধানে। <target-module> হতে পারে ALL-UNNAMED যাতে সব নেমলেস মডিউল রিড করা যায়।
2) --add-exports <module>/<package>=<target-module>(,<target-module>)*
উপরের কমান্ড <module>-কে আপডেট করে <package> এক্সপোর্ট করতে <target-module>-এ, মডিউল ডিক্লেরেশনের তাত্ত্বিকতার ব্যাবধানে। <target-module> হতে পারে ALL-UNNAMED যাতে সব নেমলেস মডিউলে এক্সপোর্ট করা যায়।
3) --add-opens <module>/<package>=<target-module>(,<target-module>)*
উপরের কমান্ড <module>-কে আপডেট করে <package> ওপেন করতে <target-module>-এ, মডিউল ডিক্লেরেশনের তাত্ত্বিকতার ব্যাবধানে।
4) --patch-module <module>=<file>(;<file>)*
উপরের কমান্ড একটি মডিউলকে জার ফাইল বা ডিরেক্টরিতে ক্লাস এবং রিসোর্স দিয়ে রিপ্লেস বা ইনক্রিজ করতে পারে।