ชุมชนนักพัฒนา Java กำลังถกเถียงเกี่ยวกับแนวทางต่างๆ ในการกระจายแอปพลิเคชัน โดยเฉพาะอย่างยิ่งเกี่ยวกับ jlink และทางเลือกอื่นๆ เช่น native-image ของ GraalVM ในขณะที่ jlink นำเสนอความสามารถในการสร้างรันไทม์แบบโมดูลาร์ นักพัฒนามีความคิดเห็นที่หลากหลายเกี่ยวกับความเหมาะสมในการใช้งานเมื่อเทียบกับโซลูชันอื่นๆ
แนวทางการใช้งาน jlink
เครื่องมือ jlink ของ Java ช่วยให้นักพัฒนาสามารถสร้างอิมเมจรันไทม์แบบกำหนดเองได้ โดยเลือกเฉพาะโมดูลที่จำเป็นสำหรับแอปพลิเคชัน ซึ่งส่งผลให้มีขนาดเล็กกว่าเมื่อเทียบกับการส่ง JDK แบบเต็ม อย่างไรก็ตาม นักพัฒนาบางคนได้ชี้ให้เห็นข้อจำกัดในรูปแบบผลลัพธ์ ดังที่นักพัฒนาคนหนึ่งกล่าวว่า:
ผมหวังว่าพวกเขาจะทำให้มันสร้างไฟล์เดี่ยวแบบ static linked ได้ Golang นั้นยอดเยี่ยมมากในแง่นี้... ตอนนี้มันสร้างไดเรกทอรีที่คล้ายกับ JRE เอง ซึ่งดูไม่ค่อยมีความหมายสำหรับผม ไม่มีใครสนใจขนาดของไดเรกทอรี แต่การจัดการไฟล์เดี่ยวต่างหากที่สำคัญจริงๆ Source
ทางเลือกอื่นๆ
ชุมชนได้เน้นย้ำถึงทางเลือกหลายอย่างเพื่อแก้ไขข้อจำกัดของการกระจายแบบไฟล์เดี่ยว:
- jpackage : เครื่องมือนี้สามารถใช้อิมเมจที่สร้างจาก jlink เป็นอินพุตเพื่อสร้างรูปแบบการกระจายที่สะดวกยิ่งขึ้น
- ** GraalVM** : นำเสนอความสามารถในการสร้างเนทีฟอิมเมจ แม้ว่าบางฟีเจอร์เคยเป็นเวอร์ชันเชิงพาณิชย์เท่านั้น
- ** OpenJ9** : อีกทางเลือกหนึ่งสำหรับการสร้างการกระจายที่กะทัดรัดขึ้น
การนำไปใช้งานจริง
การนำ jlink ไปใช้งานจริงนั้นมีการใช้งานในสภาพแวดล้อมการผลิตแล้ว ตัวอย่างเช่น บางองค์กรได้นำไปรวมเข้ากับกระบวนการสร้าง Docker สำหรับแอปพลิเคชัน Java ซึ่งแสดงให้เห็นถึงความเป็นไปได้ในการใช้งานกับการติดตั้งแบบคอนเทนเนอร์
พัฒนาการล่าสุด
การอัปเดตที่สำคัญที่ถูกกล่าวถึงในการสนทนาคือ ความสามารถในการสร้างเนทีฟอิมเมจของ GraalVM ได้กลายเป็นฟรีให้ใช้งานแล้ว ตามที่ยืนยันโดยเงื่อนไขการอนุญาตใหม่ของ Oracle ซึ่งเปิดโอกาสให้นักพัฒนามีทางเลือกมากขึ้นในการหาโซลูชันการกระจายแบบไฟล์เดี่ยว
การพิจารณาการใช้งานข้ามแพลตฟอร์ม
เครื่องมือ jlink ยังคงรักษาความสามารถในการทำงานข้ามแพลตฟอร์มของ Java ช่วยให้นักพัฒนาสามารถสร้างอิมเมจรันไทม์สำหรับระบบปฏิบัติการที่แตกต่างกันจากเครื่องที่ใช้สร้างเพียงเครื่องเดียว คุณสมบัตินี้มีคุณค่าอย่างยิ่งสำหรับทีมที่ต้องจัดการการติดตั้งบนหลายแพลตฟอร์ม
การอภิปรายแสดงให้เห็นว่าในขณะที่ jlink ทำหน้าที่ตามวัตถุประสงค์ในการสร้างรันไทม์แบบโมดูลาร์ ระบบนิเวศของ Java ยังคงพัฒนาต่อไปด้วยเครื่องมือต่างๆ เช่น jpackage และ GraalVM ที่ตอบสนองความต้องการในการติดตั้งที่แตกต่างกัน การเลือกระหว่างเครื่องมือเหล่านี้ขึ้นอยู่กับความต้องการเฉพาะของโครงการและความต้องการในการกระจายแอปพลิเคชัน
Sources: Original Article Community Discussion