แปดบท เรียงจากคำถามว่าอะไรใช้ได้ ไปหาคำถามว่าควรรับอะไรเข้าทีมก่อน
คุณเขียน Java เป็นมานานแล้ว แต่ความรู้หยุดอยู่ที่ 8 หรือ 11
คอร์สนี้ไม่ได้เริ่มที่ว่าตัวแปรคืออะไร · ถ้ายังไม่เคยเขียน Java
ให้ไปที่ คอร์ส Java จากศูนย์ ก่อน แล้วค่อยกลับมา
และมันไม่ใช่รายการ feature ใหม่ · รายการแบบนั้นหาได้ทุกที่และมักล้าสมัยตั้งแต่วันที่เขียน
ทั้งสองข้อตอบด้วยการรัน ไม่ใช่ด้วยการอ่าน
ของพวกนี้ ใช้ได้จริงแล้วหรือยัง ในรุ่นที่ผมรันอยู่
และเปลี่ยนไปใช้แล้ว ได้อะไรกลับมาที่ตรวจสอบได้
คำถามแรกดูเหมือนง่าย แต่มันคือคำถามที่คำตอบบนอินเทอร์เน็ตผิดบ่อยที่สุด
· รูปของ StructuredTaskScope ที่บทความสามปีหลังทุกชิ้นสอนไว้ แปลไม่ผ่านใน JDK 25
· ขณะที่ Gatherers กับ ScopedValue ซึ่งหลายคนยังจำว่าเป็น preview กลับรันได้โดยไม่ต้องใส่ธงอะไรเลย
เจ็ดข้อ · ทุกข้อมีคำสั่งที่คุณรันเองแล้วเห็นผลเดียวกัน
- อะไร final อะไร preview — แปลตัวอย่างสองรอบ ต่างกันที่ธงเดียว แล้วอ่านสถานะจากผล
record เป็นสัญญา ไม่ใช่การพิมพ์น้อยลง — อ่านชื่อ member กับกลไกที่ javap เห็น
- switch เหนือ
sealed พลาดไม่ได้ — แต่มีอยู่ช่องหนึ่งที่มันยังพลาดได้เงียบๆ
- record pattern แปลออกมาเป็นอะไร — เทียบ bytecode กับรูปที่เขียนมือ
Gatherers ขี้เกียจจริง — นับจำนวนครั้งที่ต้นทางถูกถาม
- virtual thread สร้างพร้อมกันได้มาก — นับจำนวน thread กับจำนวน carrier
- preview มีราคา — รันโดยไม่ใส่ธงแล้วอ่านข้อความที่ JVM ตอบ
ห้าข้อที่ตัดออก พร้อมเหตุผลของแต่ละข้อ
- ไม่มี build tool ทั้งคอร์ส ทุกตัวอย่างแปลด้วย
javac และรันด้วย java ตรงๆ
· คอร์สนี้พูดเรื่องภาษา ไม่ใช่เรื่องเครื่องมือ และการไม่มี Maven ทำให้คุณรันตามได้ทันที
- ไม่แตะ framework ไม่มี Spring ไม่มี Jakarta EE
· เรื่องนั้นเป็นของ คอร์ส Kotlin กับ Spring Boot
- ไม่วัดความเร็ว ทั้งคอร์สไม่มีหน่วยเวลาสักตัว · หน่วยที่ใช้คือสถานะการแปล
· ข้อความของ compiler · ชื่อและจำนวน member ใน bytecode · จำนวน thread · จำนวนครั้งที่ถูกเรียก
- ไม่เล่าซ้ำเรื่อง pinning ของ virtual thread เว็บนี้มีบทความที่มีด่านของตัวเองอยู่แล้ว
· virtual thread ที่ยัง pin ข้าม JEP 491
- ไม่ลงเรื่องที่ยังไม่เข้ารุ่นไหน คอร์สนี้พูดถึงของที่แปลได้วันนี้เท่านั้น
อย่างเดียว
JDK 25 · ตรวจด้วย javac --version แล้วต้องขึ้นต้นด้วย javac 25
ถ้าคุณอยู่บน macOS แล้ว java --version ตอบว่าไม่มี runtime นั่นคือ stub ของระบบ
ไม่ใช่ JDK จริง · ต้องชี้ไปที่ JDK home ที่ติดตั้งไว้เอง