Module คืออะไร?
Module คือการรวมกลุ่มของโค้ด ข้อมูล และทรัพยากร (resources) เป็นชุดของแพ็กเกจและประเภทที่เกี่ยวข้อง เช่น classes, abstract classes, interfaces พร้อมไฟล์ข้อมูลและ static resources
ลักษณะเฉพาะของ Module
- ต้องกำหนด interface สำหรับการสื่อสารกับโมดูลอื่น
- แยกชัดเจนระหว่าง module interface และ module implementation
- มีชุด properties ที่เก็บข้อมูล
- โมดูลสามารถ nested (ซ้อนกัน) ได้หลายโมดูล
- แต่ละโมดูลมี หน้าที่ชัดเจน แต่ละฟังก์ชันถูก implement โดยโมดูลเดียว
- ทดสอบได้แยกจากโมดูลอื่น (independently testable)
- ข้อผิดพลาดในโมดูลหนึ่งไม่แพร่กระจายไปโมดูลอื่น
เงื่อนไขการเข้าถึงแพ็กเกจระหว่างโมดูล
หากมีโมดูล M1 และ M2 โดย M2 มีแพ็กเกจ Pkg2 ที่ต้องการให้ M1 เข้าถึงได้:
- M1 ต้องระบุ requires M2 ใน module declaration
- M2 ต้องระบุ exports Pkg2 ใน module declaration
สรุป
Module ใน Java 9 ออกแบบมาเพื่อ encapsulation แบบเข้มงวด การจัดการ dependency ชัดเจน และรองรับการพัฒนาแอปพลิเคชันขนาดใหญ่