JLink คืออะไร?
JLink เป็น linker tool ใหม่ใน Java 9 ใช้สำหรับสร้าง Custom JRE (Java Runtime Environment) ของตัวเอง
ปกติเรารันโปรแกรมด้วย JRE มาตรฐานจาก Oracle ซึ่งมีขนาดใหญ่และรวมโมดูลที่อาจไม่ได้ใช้ JLink ช่วยให้สร้าง JRE ที่มีเฉพาะโมดูลที่จำเป็นต่อการรันแอปพลิเคชัน ทำให้ขนาด API ลดลงและลดการพึ่งพา Full JRE
Link Time ใน Java 9
Java 9 เพิ่ม phase ใหม่คือ Link Time ระหว่าง Compile Time และ Runtime ซึ่งเป็นขั้นตอนที่เลือกได้ (optional)
คำสั่งสร้าง Custom JRE
jlink --module-path <path> --add-modules <modules> --limit-modules <modules> --output <dir>
พารามิเตอร์หลัก:
- --module-path : พาธที่เก็บโมดูลที่ linker ค้นพบ (modular JAR, JMOD files, โมดูลต่างๆ)
- --add-modules : ระบุโมดูลที่ต้องการเพิ่มใน runtime image (รวม transitive dependencies)
- --limit-modules : จำกัดช่วงของโมดูลที่ observable
- --output : ไดเรกทอรีปลายทางสำหรับ runtime image ที่สร้างขึ้น
ตัวอย่างคำสั่ง
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
คำอธิบาย:
$JAVA_HOME/jmods: ไดเรกทอรีที่มีjava.base.jmodและโมดูลมาตรฐาน/JDK อื่นๆmlib: ไดเรกทอรีที่มี artifact ของโมดูลcom.greetings
ประโยชน์ของ JLink
- ลดขนาด JRE ให้เหลือเฉพาะสิ่งที่จำเป็น
- เหมาะสำหรับการ deploy บนอุปกรณ์ที่มีหน่วยความจำจำกัด
- เพิ่มความปลอดภัยโดยไม่รวม API ภายในที่ไม่ได้ใช้