0Pricing
Java Academy · บทเรียน

การย้ายไปใช้มอดูล

มอดูลอัตโนมัติและมอดูลไม่มีชื่อ

การย้ายไปใช้มอดูล เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

การปรับโค้ดเดิมให้เป็นโมดูล

มีโครงการไม่กี่โครงการที่เริ่มใช้โมดูลตั้งแต่วันแรก JPMS ได้รับการออกแบบมาเพื่อ การย้ายแบบค่อยเป็นค่อยไป โดยอนุญาตให้คลาสพาธและพาธโมดูลอยู่ร่วมกันได้

แนวคิดสำคัญคือ โมดูลอัตโนมัติ และ โมดูลไร้ชื่อ

โมดูลไร้ชื่อ

ทุกสิ่งที่โหลดจากคลาสพาธจะอยู่ใน โมดูลไร้ชื่อ เพียงโมดูลเดียว โมดูลนี้อ่านโมดูลอื่นทั้งหมดและเปิดเผยแพ็กเกจทั้งหมดของตน

นี่คือสะพานที่ช่วยให้โค้ดเดิมบนคลาสพาธยังคงทำงานได้

โมดูลที่มีชื่ออ่านโมดูลไร้ชื่อไม่ได้

กฎสำคัญคือ โมดูลที่มีชื่อแบบระบุชัดจะพึ่งพาโมดูลไร้ชื่อไม่ได้ คุณไม่สามารถเขียน requires เพื่อใช้โค้ดบนคลาสพาธได้

ดังนั้นให้ย้ายจากล่างขึ้นบน โดยปรับรูปแบบการแทนโมดูลที่เป็นสิ่งพึ่งพาก่อน

โมดูลอัตโนมัติ

เมื่อนำ JAR ธรรมดา (ที่ไม่ใช่โมดูล) ไปไว้บน พาธโมดูล JAR นั้นจะกลายเป็น โมดูลอัตโนมัติ ระบบจะสร้างชื่อให้โดยอัตโนมัติ โมดูลนี้จะอ่านโมดูลอื่นทั้งหมดและเปิดเผยแพ็กเกจทั้งหมดของตน

วิธีนี้ทำให้โมดูลที่มีชื่อสามารถใช้ requires กับ JAR ที่ยังไม่มี module-info ได้

ชื่อมาจากที่ใด

ชื่อของโมดูลอัตโนมัติจะมาจากแหล่งต่าง ๆ ตามลำดับความสำคัญดังนี้:

  • รายการ Automatic-Module-Name ในตัวแสดงรายการของ JAR หากมี
  • หากไม่มี จะใช้ชื่อไฟล์ JAR โดยตัดเวอร์ชันออกและแทนยัติภังค์ด้วยจุด

ชื่อที่มั่นคงมีความสำคัญ

ผู้สร้างไลบรารีควรเพิ่ม Automatic-Module-Name ลงในตัวแสดงรายการก่อนที่จะปรับเป็นโมดูลอย่างสมบูรณ์ วิธีนี้รับรองชื่อโมดูลที่มั่นคง ทำให้ข้อกำหนด requires ของโมดูลที่ใช้งานต่อยังคงใช้ได้เมื่อมี module-info จริงในภายหลัง

Automatic-Module-Name: com.example.json

กลยุทธ์จากบนลงล่าง

แนวทางที่แนะนำสำหรับแอปพลิเคชันของคุณมีดังนี้:

  • คงสิ่งที่ต้องพึ่งพาไว้เป็นโมดูลอัตโนมัติบนพาธโมดูล
  • เพิ่ม module-info.java ให้โมดูลระดับบนสุดของคุณก่อน
  • ประกาศ requires โดยใช้ชื่อโมดูลอัตโนมัติเหล่านั้น

ขั้นตอนการย้ายตัวอย่าง

สมมติว่า guava-32.jar อยู่บนพาธโมดูลในฐานะโมดูลอัตโนมัติชื่อ com.google.common โมดูลแอปพลิเคชันของคุณสามารถระบุการพึ่งพาโมดูลนี้ได้แล้ว

module com.example.app {
    requires com.google.common;
    exports com.example.app.api;
}

ปัญหาแพ็กเกจซ้ำกัน

ระบบโมดูลห้ามไม่ให้โมดูลสองโมดูลมี แพ็กเกจเดียวกัน ไลบรารีเดิมที่แบ่งแพ็กเกจเดียวกันไว้ในหลาย JAR จะทำให้เกิดข้อผิดพลาด

แก้ไขโดยรวม JAR เข้าด้วยกัน ใช้ --patch-module หรืออัปเกรดเป็นรุ่นที่แก้ปัญหาแพ็กเกจซ้ำกันแล้ว

ปัญหาการเข้าถึงด้วยการสะท้อนกลับ

เฟรมเวิร์กที่ทำการสะท้อนกลับเชิงลึกอาจล้มเหลวด้วย InaccessibleObjectException เมื่อคุณปรับโค้ดเป็นโมดูล ให้เพิ่มคำสั่ง opens หรือใช้แฟล็ก --add-opens สำหรับเริ่มทำงานเป็นทางเชื่อมชั่วคราว

เครื่องมือวิเคราะห์การพึ่งพาที่มีประโยชน์

เครื่องมือ jdeps จะวิเคราะห์ JAR ของคุณ รายงานการพึ่งพา ตรวจจับการใช้ส่วนเชื่อมต่อภายในของ JDK และยังสามารถสร้าง module-info.java ฉบับร่างด้วย jdeps --generate-module-info ได้อีกด้วย

ควรเรียกใช้เครื่องมือนี้ก่อนเพื่อวางแผนการย้าย

ตรวจสอบอย่างรวดเร็ว

ลองทบทวนว่า JAR ธรรมดาได้รับตัวตนของโมดูลอย่างไร

สรุปทบทวน

คุณได้เรียนรู้เทคนิคการย้ายดังนี้:

  • โค้ดบนคลาสพาธอยู่ใน โมดูลไร้ชื่อ และโมดูลที่มีชื่อไม่สามารถใช้ requires กับโมดูลนี้ได้
  • JAR ธรรมดาบนพาธโมดูลจะกลายเป็น โมดูลอัตโนมัติ
  • กำหนด Automatic-Module-Name เพื่อให้ได้ชื่อที่มั่นคง
  • ระวังแพ็กเกจซ้ำกันและการเข้าถึงด้วยการสะท้อนกลับ ใช้ jdeps เพื่อวางแผน

หลักสูตร JPMS จบลงเพียงเท่านี้

คำถามที่พบบ่อย

บทเรียน “การย้ายไปใช้มอดูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การย้ายไปใช้มอดูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การย้ายไปใช้มอดูล”

มอดูลอัตโนมัติและมอดูลไม่มีชื่อ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การย้ายไปใช้มอดูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. module-info.java
  2. requires และ exports
  3. บริการด้วย provides/uses
  4. การย้ายไปใช้มอดูล
← กลับไปที่ Java Academy