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

การสร้างอิมเมจเนทีฟ

การคอมไพล์ล่วงหน้า

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

การสร้างอิมเมจเนทีฟ

เครื่องมือ native-image เปลี่ยนไบต์โค้ด Java ที่คอมไพล์แล้วให้เป็นไฟล์ปฏิบัติการเนทีฟแบบไฟล์เดียวและอยู่ในตัว บทเรียนนี้จะอธิบายขั้นตอนการสร้าง สิ่งที่เกิดขึ้นเบื้องหลัง และวิธีเรียกใช้ผลลัพธ์

เริ่มต้นด้วย Java ทั่วไป

อิมเมจเนทีฟเริ่มต้นจากคลาสที่คอมไพล์ตามปกติ ต่อไปนี้คือตัวอย่างโปรแกรมทั่วไปที่เราจะสมมติว่านำไปคอมไพล์เป็นโค้ดเนทีฟ

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello from a native binary!");
    }
}

คอมไพล์ก่อน แล้วจึงสร้าง

มีสองขั้นตอน: ขั้นแรก javac Hello.java จะสร้าง Hello.class จากนั้น native-image Hello จะสร้างไฟล์ปฏิบัติการชื่อ hello การสร้างใช้เวลานานกว่าการคอมไพล์มาก เพราะต้องวิเคราะห์ทั้งโปรแกรม

การวิเคราะห์แบบโลกปิด

native-image ทำการวิเคราะห์แบบโลกปิด ซึ่งหมายความว่าต้องมองเห็นโค้ดทั้งหมดที่อาจทำงานได้ เริ่มจาก main แล้วไล่ไปตามเมธอดที่เข้าถึงได้ทุกเมธอด และใส่เฉพาะเมธอดเหล่านั้นไว้ในไบนารี ส่วนใดที่เข้าถึงไม่ได้จะถูกลบออก (การตัดโค้ดที่ไม่มีการใช้งานในเวลาลิงก์)

การคอมไพล์ล่วงหน้า

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

การเริ่มต้นระบบขณะสร้าง

เพื่อให้เริ่มทำงานได้รวดเร็ว native-image สามารถเรียกใช้ตัวเริ่มต้นแบบสแตติกในเวลาสร้าง และฝังฮีปที่ได้ลงในอิมเมจ (เรียกว่า ฮีปของอิมเมจ) ซึ่งหมายความว่าออบเจ็กต์บางส่วนมีอยู่แล้วทันทีที่โปรแกรมเริ่มทำงาน

การเรียกใช้ไฟล์ปฏิบัติการ

ผลลัพธ์คือไฟล์ปฏิบัติการของ OS ทั่วไป คุณเรียกใช้ได้โดยตรง ไม่ต้องใช้ java -jar และไม่จำเป็นต้องติดตั้ง JVM บนเครื่องเป้าหมาย ไฟล์นี้ยังเชื่อมโยงแบบสแตติกทั้งหมดหรือเกือบทั้งหมด ขึ้นอยู่กับแฟล็กที่ใช้

แฟล็กการสร้างที่ใช้บ่อย

ตัวเลือกที่มีประโยชน์ได้แก่:

  • -o name — ชื่อไฟล์ผลลัพธ์
  • --no-fallback — ให้ล้มเหลวแทนการสร้างอิมเมจสำรองที่ต้องพึ่งพา JVM
  • -O2 / -O3 — ระดับการปรับปรุงประสิทธิภาพ
  • --static — ไบนารีที่ลิงก์แบบสแตติกทั้งหมด (Linux)

หน่วยความจำและดิสก์

ตัวการสร้างเองใช้หน่วยความจำมาก แอปพลิเคชันขนาดใหญ่อาจต้องใช้ RAM หลายกิกะไบต์และเวลา CPU หลายนาที ต้นทุนนี้จ่ายเพียงครั้งเดียวในเวลาสร้าง เพื่อแลกกับการเริ่มทำงานที่รวดเร็วและมีต้นทุนต่ำขณะทำงาน

การสร้างผ่าน Maven/Gradle

ในโครงการจริง คุณแทบไม่ต้องเรียก native-image ด้วยตนเอง ปลั๊กอิน เครื่องมือสร้างเนทีฟของ GraalVM จะผสานเครื่องมือนี้เข้ากับ Maven (native:compile) และ Gradle (nativeCompile) ทำให้ไบนารีเป็นส่วนหนึ่งของกระบวนการสร้างตามปกติ

ตรวจสอบเวลาเริ่มทำงาน

หลังจากสร้างเสร็จ ให้เปรียบเทียบเวลาเริ่มทำงาน การเรียกใช้ด้วย java -jar อาจใช้เวลาหลายร้อยมิลลิวินาที ในขณะที่ไบนารีเนทีฟตอบสนองภายในเวลาเพียงไม่กี่มิลลิวินาที การวัดความแตกต่างนี้คือเหตุผลหลักของการเลือกใช้เนทีฟ

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการสร้างอิมเมจเนทีฟ

ทบทวน

คุณได้เรียนรู้การสร้าง native-image:

  • เริ่มจากไบต์โค้ดที่คอมไพล์แล้ว แล้ว native-image จะสร้างไฟล์ปฏิบัติการที่อยู่ในตัว
  • การวิเคราะห์แบบโลกปิดค้นหาโค้ดที่เข้าถึงได้ทั้งหมดจาก main
  • โค้ดที่เข้าถึงได้จะถูกคอมไพล์แบบ AOT ส่วนโค้ดที่เข้าถึงไม่ได้จะถูกลบออก
  • การเริ่มต้นระบบขณะสร้างจะฝังฮีปของอิมเมจเพื่อให้เริ่มทำงานได้รวดเร็ว
  • การสร้างใช้เวลานานและหน่วยความจำมาก ควรผสานเข้ากับกระบวนการสร้างผ่านปลั๊กอิน Maven/Gradle

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

บทเรียน “การสร้างอิมเมจเนทีฟ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างอิมเมจเนทีฟ”

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

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

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

บทเรียน “การสร้างอิมเมจเนทีฟ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. GraalVM คืออะไร
  2. การสร้างอิมเมจเนทีฟ
  3. การสะท้อนและการกำหนดค่า
  4. ข้อแลกเปลี่ยนของอิมเมจเนทีฟ
← กลับไปที่ Java Academy