module-info.java
ประกาศมอดูล
module-info.java เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
ระบบโมดูล
ระบบโมดูลแพลตฟอร์ม Java (JPMS) ซึ่งเปิดตัวใน Java 9 ช่วยให้คุณจัดกลุ่มแพ็กเกจเป็น โมดูลที่มีชื่อ พร้อมการพึ่งพาและขอบเขตที่ระบุไว้อย่างชัดเจน
การประกาศจะอยู่ในไฟล์พิเศษ: module-info.java
เหตุผลที่ต้องใช้โมดูล
ก่อนมีโมดูล เส้นทางคลาสเป็นเพียงกลุ่มไฟล์เก็บถาวรที่ไม่มีโครงสร้าง ทุกคนสามารถเข้าถึงคลาสสาธารณะใดก็ได้ และการพึ่งพาที่ขาดหายไปจะปรากฏเฉพาะขณะเรียกใช้เท่านั้น
โมดูลเพิ่ม การห่อหุ้มที่เข้มงวด และ การกำหนดค่าที่เชื่อถือได้ ซึ่งตรวจสอบในเวลาคอมไพล์และเวลาเริ่มโปรแกรม
ตำแหน่งของ module-info
module-info.java อยู่ที่ รากของต้นไม้ซอร์ส เหนือไดเรกทอรีแพ็กเกจต่าง ๆ ไฟล์นี้จะคอมไพล์เป็น module-info.class ที่รากของโมดูล
แต่ละโมดูลมีไฟล์นี้ได้เพียงหนึ่งไฟล์เท่านั้น
การประกาศแบบน้อยที่สุด
โมดูลที่เรียบง่ายที่สุดมีเพียงชื่อเดียว ตามธรรมเนียม ชื่อจะใช้รูปแบบ DNS ย้อนกลับ เช่นเดียวกับชื่อแพ็กเกจ
module com.example.app {
}การประกาศการพึ่งพา
ใช้ requires เพื่อระบุการพึ่งพาโมดูลอื่น โมดูลทุกโมดูลจะพึ่งพา java.base โดยปริยาย ดังนั้นคุณจึงไม่ต้องประกาศโมดูลนี้
module com.example.app {
requires java.sql;
requires java.logging;
}การเปิดเผยแพ็กเกจ
โดยค่าเริ่มต้น แพ็กเกจของโมดูลจะถูกซ่อนไว้ ใช้ exports เพื่อทำให้ชนิดข้อมูลสาธารณะของแพ็กเกจมองเห็นได้จากโมดูลอื่น
module com.example.app {
exports com.example.app.api;
}การห่อหุ้มอย่างเข้มงวด
แพ็กเกจใดก็ตามที่คุณไม่ได้ export จะไม่สามารถเข้าถึงได้จากภายนอกโดยสิ้นเชิง แม้แต่คลาสสาธารณะภายในแพ็กเกจนั้น นี่คือความแตกต่างที่สำคัญจากโลกของคลาสพาธ
แพ็กเกจภายในยังคงเป็นแพ็กเกจภายใน โดยมี JVM เป็นผู้บังคับใช้
กฎการตั้งชื่อโมดูล
ชื่อโมดูลใช้กฎการเขียนชื่อแบบเดียวกับแพ็กเกจ คือเป็นตัวระบุที่คั่นด้วยจุด โปรดเลือกชื่อที่มั่นคงและไม่ซ้ำกันทั่วโลก เพราะโมดูลอื่นจะพึ่งพาโมดูลนี้ด้วยชื่อ
การเปลี่ยนชื่อโมดูลถือเป็นการเปลี่ยนแปลงที่ทำให้ผู้ใช้โมดูลเดิมทำงานไม่ได้
ตัวอย่างที่สมบูรณ์ยิ่งขึ้น
การประกาศจริงจะรวมการระบุสิ่งที่ต้องพึ่งพาและการเปิดเผยแพ็กเกจเข้าด้วยกัน โมดูลนี้พึ่งพาการบันทึกการทำงาน และเปิดเผยเฉพาะแพ็กเกจส่วนเชื่อมต่อสาธารณะของตน
module com.example.orders {
requires java.logging;
requires com.example.payments;
exports com.example.orders.api;
}การคอมไพล์โมดูล
คุณคอมไพล์โดยใช้ตัวเลือกที่รองรับโมดูล ตัวเลือก --module-source-path และ -d จะบอกคอมไพเลอร์ว่าแหล่งซอร์สและผลลัพธ์อยู่ที่ใด
javac -d out --module-source-path src $(find src -name '*.java')java --module-path out --module com.example.app/com.example.app.Main
พาธโมดูล
ระบบจะค้นหาโมดูลจาก พาธโมดูล (--module-path) ซึ่งเป็นสิ่งที่มาแทนคลาสพาธและรองรับโมดูล ตัวเรียกใช้จะอ่านตัวบอกข้อมูลของแต่ละโมดูลเพื่อสร้างกราฟการพึ่งพาก่อนเริ่มทำงาน
ตรวจสอบอย่างรวดเร็ว
ลองทบทวนการมองเห็นเริ่มต้นของแพ็กเกจ
สรุปทบทวน
คุณได้เรียนรู้พื้นฐานของ module-info.java ดังนี้:
- มีตัวบอกข้อมูลหนึ่งรายการต่อโมดูลที่รากของซอร์ส
requiresใช้ประกาศการพึ่งพา โดยมีjava.baseเป็นสิ่งที่รวมให้โดยปริยายexportsใช้เปิดเผยแพ็กเกจ ส่วนอื่นทั้งหมดจะถูกห่อหุ้ม- สร้างและเรียกใช้ด้วย
--module-pathและ--module
ถัดไป: คำสั่งระบุการพึ่งพาและการเปิดเผยแพ็กเกจโดยละเอียด
คำถามที่พบบ่อย
บทเรียน “module-info.java” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “module-info.java” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “module-info.java”
ประกาศมอดูล คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “module-info.java” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- module-info.java
- requires และ exports
- บริการด้วย provides/uses
- การย้ายไปใช้มอดูล