
Java ใน VS Code อัปเดตใหม่ หยุดดูโค้ดได้ละเอียด แต่ต้องเช็ก JDK ก่อนเรียน
ส่วนเสริม Java ของ Oracle สำหรับ VS Code ต้องใช้ JDK 21 ขึ้นไปเพื่อเปิดทำงาน แปลว่าเครื่องเรียนที่ใช้ชุดพัฒนา Java เก่าต้องเช็กก่อนอัปเดตครับ (บันทึกรุ่นของ Oracle) รุ่นใหม่นี้คือ 27.0.0 แปลว่าเป็นหมายเลขรุ่นของส่วนเสริม ไม่ใช่รุ่นของงานที่คุณต้องส่งครู (GitHub)
Inside Java ประกาศส่วนเสริมรุ่นใหม่ ในหน้าข่าววันที่ 8 ตุลาคม ส่วนหน้ารุ่นบน GitHub ระบุวันที่ 5 ตุลาคม ข่าวนี้เกี่ยวกับทั้งเวลาที่ใช้แก้การบ้าน และการเตรียมคอมก่อนเข้าห้องเรียน ผมอ่านจากเอกสารที่ลิงก์ไว้ ยังไม่ได้ทดสอบบนเครื่องจริงครับ
สรุป 30 วินาที: เกิดอะไรขึ้น
Extension หรือส่วนเสริม คือเครื่องมือที่ติดเพิ่มใน VS Code โปรแกรมสำหรับเขียนและแก้ไฟล์โค้ด หน้า Marketplace ของ Oracle ระบุว่าช่วยตั้งแต่เขียน แปลงโค้ดให้พร้อมทำงาน รัน ตรวจหาปัญหา ไปจนถึงทดสอบงาน Java ผู้เริ่มต้นจึงควรแยกชื่อโปรแกรมเขียนโค้ดออกจากเครื่องมือที่ติดเพิ่มก่อน
บันทึกรุ่นบน GitHub ระบุว่าอัปเกรด NetBeans เป็นรุ่น 31 แปลว่าปรับเครื่องมือ Java เบื้องหลังของส่วนเสริม ไม่ได้บอกให้คุณย้ายไปใช้โปรแกรมเขียนโค้ดอื่น ประโยชน์ที่ Oracle ระบุคือรองรับ Java รุ่นใหม่ดีขึ้น จัดรูปแบบโค้ดใหม่ได้ดีขึ้น และเพิ่มความเสถียรของการรองรับ Java
การปรับเครื่องมือรอบนี้รองรับ JDK 27 ดีขึ้น แปลว่าเป็นข่าวสำหรับคนใช้ชุดพัฒนา Java รุ่นดังกล่าวด้วย แต่ไม่มีผลวัดความเร็วเป็นตัวเลขในบันทึกรุ่น (GitHub) อีกจุดคือหยุดตรวจโค้ดภายใน lambda แต่ละตัวได้ และแก้การตั้งค่าสมุดทดลองโค้ดให้เชื่อมกับบริบทของโครงการ (GitHub) ศัพท์เหล่านี้ผมจะแยกอธิบายด้านล่างครับ
ทำไมเรื่องนี้เกี่ยวกับคุณ
สำหรับนักเรียนที่เพิ่งเริ่ม Java สิ่งที่ต้องการคือเปิดงานได้ และรู้ว่าคำตอบผิดตรงไหน เครื่องมือใหม่จะมีประโยชน์เมื่อช่วยให้เห็นขั้นตอนทำงานชัดขึ้น แต่การอัปเดตต้องผ่านเงื่อนไขของเครื่องก่อน หน้า Marketplace แยกการเลือก JDK สำหรับส่วนเสริมและสำหรับโครงการไว้อย่างชัดเจน
JDK หรือ Java Development Kit คือชุดเครื่องมือสำหรับพัฒนาและรันงาน Java คำว่า “รุ่น Java ของเครื่อง” จึงยังบอกไม่ครบว่าเลือกชุดไหนให้ส่วนเสริม และเลือกชุดไหนให้งานเรียน ตาม คู่มือ Marketplace คุณกำหนดแต่ละส่วนให้ใช้ชุดพัฒนาคนละตำแหน่งได้ การจดค่าที่ใช้จึงสำคัญกว่าจำว่าเคยติดตั้ง Java ไว้แล้ว
ครูที่เตรียมแบบฝึกหัด และผู้ปกครองที่ช่วยลูกตั้งเครื่อง ควรเริ่มจากเงื่อนไขในใบงานก่อนครับ คู่มือยังระบุว่ารองรับโครงการที่ใช้ JDK 8 ขึ้นไป แปลว่างานเก่าไม่ได้ถูกตัดออกเพียงเพราะส่วนเสริมเปลี่ยนข้อกำหนด (Marketplace) ถ้าส่วนเสริมต้องใช้รุ่นใหม่ การบ้านต้องย้ายรุ่นตามด้วยหรือ? คำตอบอยู่ที่การแยกค่าของเครื่องมือกับค่าของโครงการ
ทำงานยังไง
หน้า Marketplace เรียกส่วนที่ช่วยเครื่องมือเข้าใจ Java ว่า Language Server หรือโปรแกรมเบื้องหลังที่ดูแลงานด้านภาษาโค้ด ค่า jdk.jdkhome ชี้ตำแหน่ง JDK ที่ส่วนนี้ใช้ และเป็นค่าเริ่มต้นสำหรับแปลงและรันงานด้วย ถ้าไม่กำหนดของโครงการแยก การเลือกให้ส่วนเสริมจึงมีผลต่อค่าเริ่มต้นของงาน
ค่า jdk.project.jdkhome ใช้เลือก JDK สำหรับแปลงและรันโครงการต่างหาก ตาม Marketplace เมื่อกำหนดค่านี้ คุณจึงระบุชุดพัฒนาของงานเรียนโดยไม่ต้องให้เหมือนชุดที่เปิดส่วนเสริมเสมอ แต่การตั้งค่าแยกไม่ได้ยืนยันว่าโค้ดทุกชิ้นจะใช้ได้ทันที ควรรันใบงานและทดสอบผลลัพธ์จริงหลังเปลี่ยนค่า
Debugger คือเครื่องมือช่วยตรวจขณะโปรแกรมทำงาน ส่วน breakpoint คือจุดที่ตั้งให้โปรแกรมหยุดเพื่อดูสิ่งที่เกิดขึ้นตรงนั้น รอบนี้ Oracle เพิ่มการตั้งจุดหยุดภายใน lambda แต่ละตัว ตาม บันทึกรุ่น Lambda ในที่นี้คือส่วนโค้ดสั้นๆ ที่ใช้ระบุงานย่อย ประโยชน์สำหรับการเรียนคือเลือกตรวจส่วนย่อยที่สงสัยได้ละเอียดขึ้น
ลองนึกถึงการดูคลิปทำกับข้าวตามสูตรครับ การหยุดทั้งคลิปเมื่อถึงช่วงผัด คือการหยุดในขั้นตอนใหญ่ แต่ถ้าอยากดูจังหวะใส่เครื่องปรุง ต้องหยุดให้ตรงขั้นย่อยนั้น การตั้ง breakpoint ภายใน lambda เปรียบเหมือนเลือกหยุดตรงจังหวะที่อยากตรวจ แทนที่จะหยุดกว้างๆ แล้วเดาว่าขั้นตอนไหนทำให้อาหารเค็ม
อีกเครื่องมือคือ notebook หรือสมุดที่วางโค้ดทดลองไว้คู่กับคำอธิบาย หน้า Marketplace ระบุว่ารันโค้ดเป็นช่องแยกได้ และเก็บผลลัพธ์คู่กับโค้ดได้ Project Context คือบริบทที่บอกว่าสมุดนั้นเชื่อมกับโครงการไหน การแก้ในรุ่นนี้เกี่ยวกับการตั้งค่าความเชื่อมโยงดังกล่าว ตาม GitHub จึงไม่ควรตีความว่า Oracle เพิ่งเพิ่ม notebook เป็นครั้งแรก
จุดหักมุม: การบ้านเดิมอาจใช้ได้ แต่เครื่องมือเปิดไม่ได้
แต่ส่วนเสริมต้องใช้ JDK 21 ขึ้นไป แปลว่าเครื่องที่มีเพียงชุดพัฒนาเก่าต้องเตรียมชุดที่เข้าเงื่อนไขก่อน (GitHub) ห้องเรียนที่ยังใช้ชุดเก่าจึงควรเช็กเครื่องทดลองก่อนอัปเดตพร้อมกัน เรื่องนี้เป็นความเสี่ยงตามข้อกำหนด ไม่ใช่รายงานว่าห้องเรียนใดเกิดปัญหาแล้ว
แต่ Oracle ยังให้ตั้ง JDK ของโครงการแยกผ่าน jdk.project.jdkhome ได้ (GitHub) การเตรียมเครื่องมือให้พร้อมจึงไม่เท่ากับคำสั่งให้ย้ายหลักสูตรทันที อย่าเพิ่งแก้การบ้านทั้งวิชา เพียงเพราะหน้าตั้งค่าเครื่องมือมีรุ่นใหม่ครับ
เรื่องเงิน / ผลกระทบ
แหล่งที่อ่านไม่มีราคาขายเป็นเงินบาท หรือยอดค่าใช้จ่ายสำหรับห้องเรียนให้คำนวณ หน้า Marketplace ระบุว่าส่วนเสริมใช้สัญญาอนุญาต Apache 2.0 แปลว่าเอกสารระบุเงื่อนไขสิทธิ์ของซอฟต์แวร์ แต่ข้อมูลนี้อย่างเดียวไม่ใช่งบประมาณติดตั้งทั้งหมด ไม่ควรนำไปสรุปว่าการเปลี่ยนชุดพัฒนาของโรงเรียนไม่มีต้นทุนใดๆ
ต้นทุนที่ควรวางแผนในทางปฏิบัติคือเวลาตั้งเครื่องและตรวจใบงานครับ ถ้าเครื่องส่วนเสริมกับเครื่องนักเรียนใช้ค่าต่างกัน ครูควรมีข้อมูลพอแยกว่าปัญหาอยู่ที่การตั้งค่าหรือเนื้อหาที่สอน นี่เป็นคำแนะนำในการเตรียมงาน ไม่ใช่ตัวเลขผลประหยัดที่ Oracle รายงาน
สำหรับเจ้าของกิจการที่มีทีมเขียนระบบ Java อย่าใช้ข่าวอัปเดตนี้เป็นเหตุผลซื้อคอมใหม่ทันที เอกสารที่มีไม่ได้ให้สเปกหน่วยความจำหรือผลทดสอบเครื่องเก่าเพื่อรองรับข้อสรุปนั้น สิ่งที่ยืนยันคือข้อกำหนด JDK และการตั้งค่าแยก ตาม Marketplace ควรให้ทีมตรวจเครื่องเดิมกับงานจริงก่อนตัดสินใจเรื่องงบ
ด้านเวลาแก้โค้ด Oracle ระบุว่าปรับการจัดรูปแบบสำหรับคุณสมบัติ Java ใหม่ (GitHub) การจัดรูปแบบ คือจัดการหน้าตาโค้ด เช่น การวางบรรทัดและระยะย่อหน้า ไม่ใช่คำรับรองว่าคำตอบของโปรแกรมถูกต้อง ถ้าใช้กับงานกลุ่ม ควรตกลงรูปแบบร่วมกันและตรวจการเปลี่ยนแปลงก่อนส่งงาน
ข้อมูลที่ยังไม่ชัด และจุดที่แหล่งข่าวพูดไม่ตรงกัน
ฝั่งสนับสนุนมาจาก Oracle เอง บันทึกรุ่นระบุว่าปรับการรองรับ Java ให้เสถียรขึ้น พร้อมเพิ่มจุดหยุดใน lambda (GitHub) Inside Java ทำหน้าที่ประกาศรุ่นใหม่และชี้ไปหน้า Marketplace แต่ข้อความที่เก็บมาไม่ได้มีผลทดลองอิสระ หรือความเห็นผู้ใช้ให้เทียบกับคำกล่าวของผู้พัฒนา
ด้านข้อจำกัดก็อยู่ในเอกสารของ Oracle หน้า Marketplace ระบุปัญหาที่ทราบอยู่ เช่น คำสั่ง Project: Test Project ทำงานทดสอบแต่ไม่อัปเดตแผงผลทดสอบ โดยผลอยู่ใน Terminal หรือ Debug Console ซึ่งเป็นพื้นที่แสดงข้อความการทำงาน จึงควรตรวจตำแหน่งผลให้ถูกก่อนสรุปว่างานทดสอบไม่ได้ทำงาน
เอกสารเดียวกันเตือนว่าการแก้ไฟล์ pom.xml ผ่านส่วนเสริมบางลักษณะ อาจทำให้การแปลงหรือรันครั้งต่อไปล้มเหลว และให้ตรวจรายการซ้ำในไฟล์ (Marketplace) ไฟล์นี้เป็นข้อมูลกำหนดโครงการสำหรับ Maven เครื่องมือช่วยจัดการและสร้างงาน Java คำเตือนดังกล่าวไม่ได้ระบุว่าเกิดกับทุกโครงการ หรือเพิ่งเริ่มในรุ่นใหม่
ไม่มีแหล่งใดในชุดข้อมูลนี้บันทึกเสียงคัดค้านจากครู นักเรียน หรือองค์กรภายนอกครับ จึงไม่ควรแต่งชื่อผู้คัดค้านให้ครบรูปแบบข่าว ข้อจำกัดจากผู้พัฒนาเป็นหลักฐานอีกด้านที่ใช้ได้ แต่ไม่ใช่เสียงอิสระ และยังไม่มีผลทดลองบอกว่าหยุดดู lambda แล้วประหยัดเวลาได้เท่าไร
ตัวเลขรองรับดูต่างกันเพราะพูดคนละงาน หน้า Marketplace ระบุว่าโครงการใช้ JDK 8 ขึ้นไปได้ แปลว่าเป็นขอบเขตโดยรวมของโครงการ แต่หัวข้อการรันและตรวจด้วย Language Server Java+ ระบุ JDK 11 ขึ้นไป แปลว่าช่องทางนี้มีเงื่อนไขเฉพาะของมัน (Marketplace) อย่าอ่านคำว่ารองรับโครงการแล้วขยายเป็นคำรับรองทุกวิธีตรวจโค้ด
ส่วนข้อกำหนดเปิดส่วนเสริม ทั้ง GitHub และ Marketplace ระบุตรงกัน ไม่มีความขัดแย้งเรื่องขั้นต่ำระหว่างสองหน้านี้ วันที่ในข้อความที่เก็บจาก Inside Java มีข้อมูลกำกับไม่สอดคล้องกับวันที่ใน URL จึงยึดหน้าข่าวตามวันที่ใน URL และไม่อนุมานเวลาประกาศเป็นชั่วโมง ไม่มีข้อมูลเวลาพร้อมเขตเวลาให้แปลงเป็นเวลาไทย
ยังไม่รู้ว่ารุ่นนี้แก้ปัญหาในใบงานของคุณครบหรือไม่ และไม่รู้ว่ารองรับเมนูภาษาไทยเต็มรูปแบบหรือไม่ หน้า Marketplace ระบุการแปลหน้าตาเครื่องมือสำหรับญี่ปุ่นและจีนตัวย่อ แต่ไม่ได้ยืนยันภาษาไทย เรื่องความเข้ากันได้จึงต้องทดสอบกับเครื่องและแบบฝึกหัดที่ใช้จริง
แล้วเราควรทำอะไร
นักเรียนและคนเริ่มเขียน Java: ทำตามได้เลย
- จดรุ่นที่ใบงานต้องใช้ก่อน แยกจากรุ่นของส่วนเสริม และเก็บตำแหน่งชุดพัฒนาที่ติดตั้งไว้ จะได้ส่งข้อมูลให้ครูได้ตรงจุดหากงานเปิดไม่ได้
- เลือกชุดที่เปิดส่วนเสริมได้ ตั้ง
Jdk: Jdkhomeให้ชี้ไปชุดพัฒนาที่ผ่านขั้นต่ำ ตาม คู่มือ Marketplace ถ้าเครื่องยังไม่มี JDK คู่มือระบุว่ามีตัวช่วยดาวน์โหลดและตั้งค่า อย่าเลือกตามหมายเลขที่ใหญ่ที่สุดโดยไม่ดูใบงาน - เลือกชุดของการบ้านแยกเมื่อจำเป็น ใช้
Jdk › Project: Jdkhomeตาม Marketplace แล้วลองแปลงและรันตัวอย่างที่ครูกำหนด ตรวจผลกับคำตอบที่คาดไว้ ไม่หยุดแค่เห็นว่าไม่มีข้อความเตือน - ฝึกตรวจโค้ดทีละส่วน ถ้าแบบฝึกหัดมี lambda ให้ลองจุดหยุดภายในส่วนย่อยที่สงสัย ซึ่งเป็นความสามารถที่เพิ่มใน บันทึกรุ่น ถ้ายังไม่เรียนหัวข้อนี้ ก็เริ่มจากเปิดและรันงานให้ได้ก่อน
ครูและผู้ดูแลห้องเรียน: ทดลองก่อนกระจาย
- เลือกเครื่องทดลองกับใบงานจริง จดค่า JDK ของส่วนเสริมและของโครงการ แล้วตรวจขั้นตอนที่นักเรียนต้องทำตั้งแต่เปิดจนดูผลทดสอบ
- เขียนคู่มือแยกค่าตั้งแต่ต้น ระบุว่าช่องไหนสำหรับเครื่องมือ ช่องไหนสำหรับการบ้าน เพราะค่าเริ่มต้นของโครงการใช้ค่าชุดพัฒนาของส่วนเสริม ตาม Marketplace
- ตรวจสมุดทดลองของวิชาด้วย เลือก Project Context ให้ตรงโครงการ แล้วรันช่องโค้ดที่ใช้สอน การแก้การเชื่อมบริบทมีอยู่ใน รุ่นนี้ แต่ควรตรวจผลของใบงานเอง
- บอกที่ดูผลทดสอบให้ชัด หากใช้คำสั่งที่คู่มือระบุว่าผลไม่ขึ้นแผง ให้สอนดูข้อความในพื้นที่แสดงผลตาม Known Issues ด้วย จะได้ไม่เสียเวลาแก้ปัญหาผิดจุด
ทีม IT และทีมพัฒนา: ตรวจขอบเขตก่อนอนุมัติ
- บันทึกค่าที่ใช้ต่อโครงการ หน้า Marketplace อธิบายว่าการค้นหา JDK ดูค่าระดับพื้นที่งานและระดับผู้ใช้ ก่อนดูค่าจากสภาพแวดล้อมของเครื่อง อย่าอาศัยเพียงความจำว่าทุกคนเคยติดตั้งรุ่นเดียวกัน
- เปิดเฉพาะโฟลเดอร์ที่จำเป็นกับงาน คู่มือเตือนว่าพื้นที่งานขนาดใหญ่อาจใช้เวลาวิเคราะห์นาน และไม่แนะนำให้เปิดโฟลเดอร์หลักของผู้ใช้เป็นพื้นที่งาน (Marketplace)
- อ่านค่าของโครงการก่อนให้ความเชื่อถือ ส่วนเสริมขอการตัดสินใจเพิ่มเมื่อพื้นที่งานมีค่าตั้งของส่วนเสริม และหยุดเปิดใช้งานต่อจนกว่าจะเลือกเชื่อถือ ตาม Marketplace ถ้าเป็นงานที่รับจากภายนอก ให้ตรวจค่าก่อนตอบรับ
ผมมองว่า…
ผมมองว่า ข่าวนี้ไม่ใช่การบังคับให้ทุกคนเขียน Java รุ่นล่าสุด แต่คือการแยกความพร้อมของเครื่องมือออกจากข้อกำหนดของงานเรียนครับ สิ่งที่ผู้เริ่มต้นควรได้หลังอัปเดตคือเปิดงานได้ เข้าใจจุดที่ผิด และอธิบายค่าของเครื่องตัวเองได้ การจำเลขรุ่นใหม่ได้อย่างเดียว ยังไม่ช่วยให้ส่งการบ้านทัน
ผมมองว่า สำหรับครู การทดสอบกับใบงานก่อนเข้าคาบสำคัญกว่ารายการฟีเจอร์ยาวๆ ส่วนทีมงานควรใช้จุดหยุดที่ละเอียดขึ้นเพื่อเรียนรู้พฤติกรรมของโค้ด ไม่ถือว่าเครื่องมือใหม่แทนการตรวจคำตอบได้ ข่าวอัปเดตจะมีค่าก็ต่อเมื่อทำให้ขั้นตอนเรียนและทำงานของคุณชัดขึ้นจริง
ปิดท้าย: สิ่งที่ต้องจับตา
ความพร้อมของเครื่องเรียนควรวัดจากการทำใบงานได้ครบ มากกว่าหมายเลขรุ่นที่ใหม่ที่สุด สิ่งที่ควรจับตาต่อคือคำอธิบายขอบเขตการตรวจโค้ดสำหรับโครงการรุ่นเก่า และการปรับรายการปัญหาที่ทราบใน Marketplace แหล่งข้อมูลยังไม่ได้ให้วันแก้ปัญหารอบถัดไป จึงไม่ควรนัดหมายแทนผู้พัฒนา
เครื่องที่คุณใช้เรียนตั้ง JDK ของส่วนเสริมกับของการบ้านแยกกันแล้วหรือยัง?
Recap
- เกิดอะไรขึ้น: Oracle อัปเดตส่วนเสริม Java เพิ่มจุดหยุดภายใน lambda และแก้บริบทของ notebook ตาม บันทึกรุ่น
- ตัวเลขที่ต้องจำ: JDK 21 คือขั้นต่ำสำหรับเปิดส่วนเสริม แปลว่าเช็กชุดพัฒนาของเครื่องมือก่อนอัปเดต (GitHub)
- ขอบเขตที่ต้องแยก: โครงการยังใช้ชุดพัฒนาเก่าได้ผ่าน
jdk.project.jdkhomeแต่ช่องทางตรวจโค้ดมีเงื่อนไขเฉพาะ (Marketplace) - ใครเห็นต่าง: ไม่มีเสียงคัดค้านอิสระในแหล่งที่อ่าน ส่วน Oracle ระบุทั้งประโยชน์และปัญหาที่ทราบ อย่าแปลรายการฟีเจอร์เป็นผลทดสอบผู้ใช้
- ยังไม่รู้: ผลกับใบงานของคุณ เวลาที่ประหยัดได้ และวันแก้ปัญหารอบถัดไป
- กระทบคุณ: นักเรียนตรวจค่าก่อนส่งงาน ครูทดลองใบงานก่อนเข้าคาบ ทีม IT ตรวจพื้นที่งานและค่าที่เชื่อถือ
- จับตา: ขอบเขตการตรวจโค้ดงานเก่า และการปรับ Known Issues ในคู่มือ
- แหล่ง [1]: Inside Java — ประกาศรุ่นใหม่
- แหล่ง [2]: GitHub Oracle — รายการเปลี่ยนแปลง
- แหล่ง [3]: Visual Studio Marketplace — การตั้งค่าและข้อจำกัด