การสร้างอิมเมจเนทีฟ
การคอมไพล์ล่วงหน้า
การสร้างอิมเมจเนทีฟ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- GraalVM คืออะไร
- การสร้างอิมเมจเนทีฟ
- การสะท้อนและการกำหนดค่า
- ข้อแลกเปลี่ยนของอิมเมจเนทีฟ