Oracle ปล่อย Java 27 เปิด TLS 1.3 ต้านควอนตัมและ Compact Object Headers เป็นค่าเริ่มต้น
Oracle ปล่อย Java 27 (JDK 27) เมื่อ 15 กันยายน 2026 มี 9 JEP เด่นที่ TLS 1.3 แบบ hybrid ต้านควอนตัมและ Compact Object Headers เป็นค่าเริ่มต้น แต่เป็นรุ่น non-LTS ที่ซัพพอร์ตถึงมีนาคม 2027
โดย กองบรรณาธิการ THAI DATA อ่าน 6 นาที

สรุปประเด็นสำคัญ
- Java 27 (JDK 27) ออกรุ่นใช้งานทั่วไป (GA) เมื่อ 15 กันยายน 2026 ประกอบด้วย JDK Enhancement Proposal (JEP) 9 รายการ เป็นฟีเจอร์ถาวร 4 รายการ ที่เหลือเป็น preview และ incubator
- JEP 527 เพิ่ม hybrid key exchange แบบ post-quantum ให้ TLS 1.3 และวาง X25519MLKEM768 เป็นตัวเลือกแรกตามค่าเริ่มต้น แอปที่ใช้ javax.net.ssl ได้ประโยชน์โดยไม่ต้องแก้โค้ด
- JEP 534 เปิด Compact Object Headers เป็นค่าเริ่มต้น ลดขนาด object header จาก 96 บิตเหลือ 64 บิต ส่วน JEP 523 ให้ JVM เลือก G1 เสมอเมื่อไม่ได้ระบุ garbage collector
- Java 27 เป็นรุ่น non-LTS ได้ Premier Support จาก Oracle ถึง มีนาคม 2027 รุ่น LTS ถัดไปคือ Java 29 ที่วางแผนไว้เดือนกันยายน 2027
- อัปเดตของ Oracle JDK 21 ตั้งแต่รอบ Critical Patch Update เดือนตุลาคม 2026 จะย้ายไปใช้สัญญาอนุญาต Java SE OTN ซึ่งฟรีเฉพาะการใช้งานส่วนบุคคลและการพัฒนา
Oracle ประกาศเมื่อวันที่ 15 กันยายน 2026 ว่า Java 27 (Oracle JDK 27) พร้อมใช้งานทั่วไปแล้ว รุ่นนี้มี JDK Enhancement Proposal (JEP) 9 รายการ จุดที่กระทบระบบองค์กรมากที่สุดคือการเปลี่ยนค่าเริ่มต้นของ JVM สามเรื่อง ได้แก่ TLS 1.3 ที่เลือกการแลกเปลี่ยนกุญแจแบบต้านควอนตัมเป็นอันดับแรก Compact Object Headers ที่เปิดใช้ทันที และ G1 ที่กลายเป็น garbage collector เริ่มต้นในทุกสภาพแวดล้อม อย่างไรก็ตาม Java 27 เป็นรุ่น non-LTS ที่ Oracle ซัพพอร์ตถึงเดือนมีนาคม 2027 เท่านั้น
9 JEP ใน Java 27 แบ่งเป็นฟีเจอร์ถาวร 4 รายการ และรุ่นทดลอง 5 รายการ
หน้าโครงการ JDK 27 ของ OpenJDK ระบุว่ารุ่นนี้เข้าสู่ช่วง Rampdown Phase One เมื่อ 4 มิถุนายน 2026 ออก Release Candidate เมื่อ 6 สิงหาคม และถึงสถานะ General Availability ตามกำหนดในวันที่ 15 กันยายน 2026 รายการ JEP ทั้งหมดมีดังนี้
| JEP | ชื่อ | สถานะ | ผลต่อการใช้งาน |
|---|---|---|---|
| 523 | Make G1 the Default Garbage Collector in All Environments | ฟีเจอร์ถาวร | JVM เลือก G1 เสมอเมื่อไม่ได้ระบุ GC |
| 527 | Post-Quantum Hybrid Key Exchange for TLS 1.3 | ฟีเจอร์ถาวร | TLS 1.3 รองรับการแลกเปลี่ยนกุญแจแบบ hybrid |
| 534 | Compact Object Headers by Default | ฟีเจอร์ถาวร | object header เหลือ 64 บิตตามค่าเริ่มต้น |
| 536 | JFR In-Process Data Redaction | ฟีเจอร์ถาวร | ปิดบังข้อมูลอ่อนไหวในไฟล์ JFR |
| 531 | Lazy Constants | Third Preview | ควบคุมจังหวะกำหนดค่าคงที่ |
| 532 | Primitive Types in Patterns, instanceof, and switch | Fifth Preview | ใช้ pattern กับชนิดข้อมูลพื้นฐาน |
| 533 | Structured Concurrency | Seventh Preview | จัดการงานหลายเธรดเป็นหน่วยเดียว |
| 538 | PEM Encodings of Cryptographic Objects | Third Preview | อ่านเขียนกุญแจและใบรับรองรูปแบบ PEM |
| 537 | Vector API | Twelfth Incubator | คำนวณแบบเวกเตอร์บน CPU รุ่นใหม่ |
ฟีเจอร์ที่ยังเป็น preview และ incubator ต้องเปิดใช้เองและอาจเปลี่ยนแปลงได้ในรุ่นถัดไป จึงไม่ควรนำไปใช้กับโค้ด production นอกจากนี้ Oracle ยังออก Helidon 27 และ JavaFX 27 พร้อมกัน และนำ Oracle Jipher 20 ซึ่งห่อหุ้มโมดูลเข้ารหัส OpenSSL ที่ผ่านการรับรอง FIPS 140-3 เข้ามาอยู่ใน Java Verified Portfolio
TLS 1.3 เลือกการแลกเปลี่ยนกุญแจแบบต้านควอนตัมก่อน โดยไม่ต้องแก้โค้ด
JEP 527 เพิ่มรูปแบบ hybrid key exchange สามแบบให้ TLS 1.3 ของ JDK ได้แก่ X25519MLKEM768, SecP256r1MLKEM768 และ SecP384r1MLKEM1024 ทั้งหมดจับคู่อัลกอริทึม ML-KEM ที่ทนต่อการโจมตีด้วยคอมพิวเตอร์ควอนตัมเข้ากับ ECDHE แบบเดิม การเชื่อมต่อจึงยังปลอดภัยตราบใดที่อัลกอริทึมตัวใดตัวหนึ่งยังไม่ถูกเจาะ
สิ่งที่เปลี่ยนจริงคือค่าเริ่มต้น JDK 27 วาง X25519MLKEM768 ไว้ลำดับแรกของรายการที่ไคลเอนต์เสนอ ตามด้วย x25519 และกลุ่มเดิม แอปพลิเคชันที่ใช้ API javax.net.ssl และไม่ได้กำหนดกลุ่มกุญแจเองจะใช้การแลกเปลี่ยนกุญแจแบบ hybrid ทันทีเมื่อปลายทางรองรับ ส่วนอีกสองรูปแบบไม่ได้เปิดไว้ตามค่าเริ่มต้น ผู้ดูแลระบบปรับรายการได้ผ่าน system property ชื่อ jdk.tls.namedGroups
เอกสาร JEP ให้เหตุผลว่าต้องเร่งทำแม้คอมพิวเตอร์ควอนตัมขนาดใหญ่ยังไม่มีอยู่จริง เพราะผู้โจมตีสามารถดักเก็บข้อมูลที่เข้ารหัสไว้วันนี้เพื่อถอดรหัสในอนาคต หรือที่เรียกว่า "harvest now, decrypt later" ขอบเขตของ JEP นี้จำกัดอยู่ที่ TLS 1.3 ผ่าน javax.net.ssl เท่านั้น ไม่ครอบคลุม TLS เวอร์ชันอื่น
G1 และ Compact Object Headers เปลี่ยนค่าเริ่มต้นของ JVM
ก่อนหน้านี้ G1 เป็นค่าเริ่มต้นเฉพาะสภาพแวดล้อมแบบเซิร์ฟเวอร์ ส่วนเครื่องที่มี CPU ตัวเดียวหรือหน่วยความจำน้อยกว่า 1792 MB นั้น JVM จะเลือก Serial collector แทน JEP 523 ยกเลิกเงื่อนไขนี้ เมื่อไม่ได้ระบุ garbage collector ในบรรทัดคำสั่ง JVM จะเลือก G1 เสมอไม่ว่าเครื่องจะมีทรัพยากรเท่าใด ผู้ที่ต้องการ Serial ยังเลือกเองได้เหมือนเดิม การเปลี่ยนแปลงนี้เกี่ยวข้องโดยตรงกับคอนเทนเนอร์ขนาดเล็กที่ถูกจำกัด CPU และหน่วยความจำ
JEP 534 เปิด Compact Object Headers เป็นค่าเริ่มต้น หลังจากเป็นฟีเจอร์ทดลองใน JDK 24 และเป็นฟีเจอร์เต็มที่ต้องเปิดเองใน JDK 25 ส่วนหัวของออบเจ็กต์ลดจาก 96 บิตเหลือ 64 บิตบนสถาปัตยกรรม 64 บิต เอกสาร JEP อ้างการทดสอบ SPECjbb2015 ที่ใช้ heap ลดลง 22% และเวลา CPU ลดลง 8% ในการตั้งค่าหนึ่ง และจำนวนรอบ garbage collection ลดลง 15% ในอีกการตั้งค่าหนึ่ง พร้อมระบุว่า Amazon ใช้งานจริงกับบริการหลายร้อยรายการ และ SAP เปิดเป็นค่าเริ่มต้นใน SapMachine แล้ว หากพบปัญหาสามารถปิดได้ด้วยตัวเลือก -XX:-UseCompactObjectHeaders
อีกรายการที่ทีมปฏิบัติการควรรู้คือ JEP 536 ซึ่งทำให้ JDK Flight Recorder ปิดบังอาร์กิวเมนต์ในบรรทัดคำสั่ง ค่า environment variable และ system property ที่อาจมีรหัสผ่านหรือโทเคน ก่อนที่ข้อมูลจะออกจากโพรเซส ลดความเสี่ยงเมื่อต้องส่งไฟล์บันทึกให้ผู้ผลิตหรือทีมอื่นวิเคราะห์
รอบซัพพอร์ตและสัญญาอนุญาตที่เปลี่ยนในเดือนตุลาคม 2026
Oracle Java SE Support Roadmap ฉบับปรับปรุงวันที่ 15 กันยายน 2026 ให้ข้อมูลรอบซัพพอร์ตของ Oracle JDK ไว้ดังนี้
| รุ่น | ประเภท | ออกเมื่อ | Premier Support ถึง |
|---|---|---|---|
| Java 17 | LTS | กันยายน 2021 | กันยายน 2026 |
| Java 21 | LTS | กันยายน 2023 | กันยายน 2028 |
| Java 25 | LTS | กันยายน 2025 | กันยายน 2030 |
| Java 27 | non-LTS | กันยายน 2026 | มีนาคม 2027 |
| Java 29 | LTS (แผน) | กันยายน 2027 | กันยายน 2032 |
ประเด็นที่มักถูกมองข้ามคือสัญญาอนุญาต Oracle ระบุในเอกสารเดียวกันว่า อัปเดตของ Oracle JDK 21 ที่ออกตั้งแต่รอบ Critical Patch Update เดือนตุลาคม 2026 มีแผนให้บริการภายใต้สัญญาอนุญาต Java SE OTN แบบเดียวกับ Java 8, 11 และ 17 ซึ่ง Oracle อธิบายว่าฟรีเฉพาะผู้ใช้ส่วนบุคคล การพัฒนา และการใช้งานที่สัญญาอนุญาตไว้ ผู้ที่ต้องการใช้ Oracle JDK ภายใต้เงื่อนไขไม่มีค่าใช้จ่ายต่อไปควรย้ายไป Oracle JDK 25 ขึ้นไป ส่วนอัปเดตของ Oracle JDK 25 ที่ออกหลังเดือนกันยายน 2028 ก็มีแผนจะย้ายไปใช้สัญญาอนุญาต OTN เช่นเดียวกัน
ทำไมเรื่องนี้สำคัญ
Java ออกรุ่นใหม่ทุกหกเดือน รุ่น non-LTS อย่าง Java 27 จึงไม่ใช่รุ่นที่องค์กรส่วนใหญ่นำขึ้น production แต่เป็นตัวบอกทิศทางว่าค่าเริ่มต้นของ JVM กำลังไปทางใด ทั้งสามเรื่องในรุ่นนี้เป็นการเปลี่ยน "พฤติกรรมเดิมที่ไม่ต้องตั้งค่า" ซึ่งกระทบระบบจำนวนมากโดยไม่มีใครแก้โค้ดสักบรรทัด
ด้านความปลอดภัย Georges Saab รองประธานอาวุโสฝ่าย Java Platform ของ Oracle และประธาน OpenJDK Governing Board ระบุในแถลงการณ์ว่า Oracle กำลังเดินตามแผนที่จะนำความสามารถด้าน post-quantum cryptography ระดับเดียวกันไปสู่ JDK รุ่นที่มีการสนับสนุนระยะยาวด้วย หากเป็นไปตามแผน องค์กรที่อยู่บนรุ่น LTS อาจได้รับความสามารถนี้โดยไม่ต้องรอ Java 29
Oracle ยังใช้โอกาสนี้ชี้ไปที่ JDK 28 รุ่น early access ซึ่งเริ่มนำงานระยะแรกของ Project Valhalla เข้ามา โดยเริ่มจาก value classes and objects ที่มุ่งให้การจัดเก็บข้อมูลของ Java หนาแน่นและมีประสิทธิภาพขึ้น
สิ่งที่องค์กรควรทำ
- คง production ไว้บนรุ่น LTS และใช้ Java 27 เป็นรุ่นทดสอบ เพิ่ม JDK 27 เข้าไปในไปป์ไลน์ CI เพื่อรันชุดทดสอบเดิม จะเห็นปัญหาความเข้ากันได้ก่อนที่ค่าเริ่มต้นใหม่จะมาถึงรุ่น LTS ถัดไป
- ตรวจว่ามีเครื่องใดใช้ Oracle JDK 21 อยู่ ก่อนรอบอัปเดตเดือนตุลาคม 2026 หากใช้ในงานเชิงพาณิชย์ ให้เลือกระหว่างย้ายไป Oracle JDK 25 พิจารณา subscription หรือเปลี่ยนไปใช้ OpenJDK จากผู้แจกจ่ายรายอื่น และอย่าปล่อยให้เครื่องค้างอยู่บนแพตช์เก่าเพราะเลี่ยงเรื่องสัญญา
- วัดผลคอนเทนเนอร์ขนาดเล็กใหม่ บริการที่รันด้วย CPU เดียวหรือหน่วยความจำต่ำกว่า 1792 MB และไม่ได้ระบุ GC จะเปลี่ยนจาก Serial เป็น G1 ควรเทียบการใช้หน่วยความจำและเวลาเริ่มทำงานก่อนอัปเกรด และระบุ GC ให้ชัดในไฟล์ตั้งค่าหากต้องการพฤติกรรมเดิม
- ทดสอบ TLS กับอุปกรณ์เครือข่ายและบริการปลายทาง เมื่อไคลเอนต์ Java เริ่มเสนอกลุ่มกุญแจแบบ hybrid ควรตรวจว่า load balancer, proxy และระบบตรวจสอบทราฟฟิกที่คั่นกลางทำงานร่วมกันได้ และบันทึกวิธีปรับ jdk.tls.namedGroups ไว้ในคู่มือปฏิบัติการ
- เริ่มทำทะเบียนการใช้งานการเข้ารหัส ระบุว่าระบบใดรับส่งข้อมูลที่ต้องเก็บเป็นความลับนานหลายปี เพื่อจัดลำดับการย้ายไปสู่อัลกอริทึมต้านควอนตัมเมื่อแพลตฟอร์มที่ใช้พร้อม
คำถามที่พบบ่อย
Java 27 ออกเมื่อไร และมีอะไรใหม่บ้าง?
Java 27 (JDK 27) ออกรุ่นใช้งานทั่วไปเมื่อ 15 กันยายน 2026 มี JEP 9 รายการ จุดเด่นคือ hybrid key exchange แบบ post-quantum สำหรับ TLS 1.3 การเปิด Compact Object Headers เป็นค่าเริ่มต้น การให้ G1 เป็น garbage collector เริ่มต้นในทุกสภาพแวดล้อม และการปิดบังข้อมูลอ่อนไหวในไฟล์ JDK Flight Recorder
Java 27 เป็นรุ่น LTS หรือไม่?
ไม่ใช่ Java 27 เป็นรุ่น non-LTS ตาม Oracle Java SE Support Roadmap ได้รับ Premier Support ถึงเดือนมีนาคม 2027 เมื่อ Java 28 ออก รุ่น LTS ล่าสุดคือ Java 25 (กันยายน 2025) และรุ่น LTS ถัดไปที่ Oracle วางแผนไว้คือ Java 29 ในเดือนกันยายน 2027
องค์กรควรอัปเกรดระบบ production ไป Java 27 เลยไหม?
ระบบ production ส่วนใหญ่ควรอยู่บนรุ่น LTS เช่น Java 25 ต่อไป เพราะ Java 27 มีอายุซัพพอร์ตเพียง 6 เดือน สิ่งที่ควรทำคือนำ Java 27 ไปทดสอบใน CI และสภาพแวดล้อมทดสอบ เพื่อดูผลของค่าเริ่มต้นใหม่อย่าง G1, Compact Object Headers และ TLS แบบ hybrid ก่อนที่ความสามารถเหล่านี้จะไปอยู่ในรุ่น LTS ถัดไป
Oracle JDK 21 ยังใช้ฟรีได้ถึงเมื่อไร?
Oracle ระบุว่าอัปเดตของ Oracle JDK 21 ที่ออกตั้งแต่รอบ Critical Patch Update เดือนตุลาคม 2026 เป็นต้นไป มีแผนให้บริการภายใต้สัญญาอนุญาต Java SE OTN แบบเดียวกับ Java 8, 11 และ 17 ซึ่งฟรีเฉพาะการใช้งานส่วนบุคคล การพัฒนา และกรณีที่สัญญาอนุญาตไว้ ผู้ที่ต้องการใช้ Oracle JDK แบบไม่มีค่าใช้จ่ายต่อควรย้ายไป Oracle JDK 25 ขึ้นไป
Compact Object Headers ใน Java 27 ช่วยอะไร?
Compact Object Headers ลดขนาดส่วนหัวของทุกออบเจ็กต์ใน HotSpot JVM จาก 96 บิตเหลือ 64 บิตบนสถาปัตยกรรม 64 บิต ทำให้ใช้ heap น้อยลงและใส่งานได้หนาแน่นขึ้น เอกสาร JEP 534 ยกตัวอย่างการทดสอบ SPECjbb2015 ที่ใช้ heap ลดลง 22% และใช้เวลา CPU ลดลง 8% ในการตั้งค่าหนึ่ง
แหล่งอ้างอิง
- Oracle Releases Java 27 and Strengthens Post-Quantum Cryptography Support — Oracle
- JDK 27 — OpenJDK
- JEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3 — OpenJDK
- JEP 534: Compact Object Headers by Default — OpenJDK
- JEP 523: Make G1 the Default Garbage Collector in All Environments — OpenJDK
- Oracle Java SE Support Roadmap — Oracle
พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ