ในวันที่ 17 มีนาคมที่ผ่านมาครบรอบ 6 เดือนพอดีหลังจาก Java 25
ดังนั้น Java 26 ได้เวลาปล่อยตัว final ออกมา
โดยมีความสามารถที่น่าสนใจดังนี้

  • JEP 500: Prepare to Make Final Mean Final
  • JEP 504: Remove the Applet API
  • JEP 516: Ahead-Of-Time Object Caching with Any GC
  • JEP 517: HTTP/3 for the HTTP Client API
  • JEP 526: Lazy Constants
  • JEP 530: Primitive Types in Patterns, instanceof, and switch

มาดูตัวอย่างการใช้งานบางตัวกันดู

เรื่องที่ 1 JEP 500: Prepare to Make Final Mean Final

เป็นการปรับปรุงการใช้งาน final ให้ final จริง ๆ
โดยปกติตัวแปรใด ๆ ประกาศเป็น final แล้วนั้น
หลังจากที่ทำการ initialize ค่าให้แล้วในครั้งแรก
จะไม่สามารถทำการแก้ไขได้ !!
แต่ในความเป็นจริง สามารถทำได้ ผ่าน Java reflection (java.lang.reflect)

ดังนั้นใน Java 26 จึงเตรียมการปิดการแก้ไขผ่าน Java refection ไปนั่นเอง
โดยในตอนนี้จะทำแจ้ง warning ออกมา แต่ยังใช้งานได้
แต่ในอนาคตจะปิดแน่นอน
หรือถ้าต้องการปิดความสามารถนี้ ให้ทำการใส่ parameter –illegal-final-field-mutation
ตัวอย่างการใช้งาน

ตัวอย่าง code การแก้ไข final variable ผ่าน Java reflection

ทำการ run code ทั้งใน Java 25 และ Java 26

อ่านเพิ่มเติมได้ที่ Doc

เรื่องที่ 2 JEP 517: HTTP/3 for the HTTP Client API

มี HTTP client API ที่สนับสนุน HTTP/3 ซึ่งใช้งาน QUIC
โดยประกอบไปด้วย

  • Lower latency
  • Better performance
  • Improve security (encrypted connection by default)

ตัวอย่างการใช้งาน

เรื่องที่ 3 JEP 526: Lazy Constants

ทำการเปลี่ยนชื่อจาก StableValue มาเป็น LazyConstant
โดยสามารถทำการ initial ได้ตามที่ต้องการ
หรือ เมื่อทำการเรียกใช้งานครั้งแรก (ปกติต้อง initial ตอน startup เท่านั้น)
รวมทั้งยังทำงานแบบ exactly once ในการทำงานแบบ concurrent ให้อัตโนมัติ
ซึ่งช่วยปรับปรุงเรื่องของ performance ขึ้นมาได้

ตัวอย่างการใช้งาน

ลองทำการศึกษาเพิ่มเติม
และ update กันดูครับ ผ่าน SDKMan ได้เลย
ขอให้สนุกกับการ coding