Module คือคอนเทนเนอร์ของแพ็กเกจ ออกแบบมาเพื่อ นำกลับมาใช้ใหม่ (reuse) แต่ละโมดูลมี module descriptor เก็บข้อมูล: ชื่อโมดูล, dependencies (โมดูลอื่นที่ต้องพึ่งพา), และแพ็กเกจที่ export ให้โมดูลอื่นใช้
ข้อดีของ Module System
Strong Encapsulation - public ไม่ได้เข้าถึงได้ทุกที่อีกต่อไป สามารถจำกัดแพ็กเกจที่เข้าถึงได้จากภายนอก
Lightweight Application - แอปพลิเคชันเบากว่า รันบนอุปกรณ์มากขึ้น ประสิทธิภาพดีขึ้น
Separation of Concerns - แยกแพ็กเกจเป็น external และ concealed ง่ายต่อการจัดการ
Improved Security - คลาสภายใน เช่น
sun.security.*,com.sun.crypto.*ถูกซ่อนไว้ ไม่เข้าถึงได้จากภายนอก
การประกาศโมดูล
สร้างไฟล์ module-info.java:
module com.example.app {
requires com.example.services;
exports com.example.app.util;
}
requires- โมดูลที่ต้องพึ่งพาexports- แพ็กเกจที่เปิดให้โมดูลอื่นใช้