OpenJDK คือชุดพัฒนาซอฟต์แวร์ที่เป็น Open-source ของแพลตฟอร์ม Java SE ซึ่งถือเป็น “ต้นน้ำ” หรือโปรเจกต์หลักที่เวอร์ชันอื่น ๆ นำไปพัฒนาต่อครับ
ทำไม OpenJDK ถึงสำคัญ ?
เดิมที Java เป็นลิขสิทธิ์ของ Sun Microsystems แต่เพื่อให้ Java มีความโปร่งใสและชุมชนนักพัฒนาสามารถช่วยกันพัฒนาได้ จึงมีการเปิดตัว OpenJDK ในปี 2007
- Free & Open Source: ใช้งานได้ฟรีภายใต้สัญญาอนุญาต GNU GPLv2
- Standard Implementation: เป็นตัวกำหนดมาตรฐานที่ Java เวอร์ชันอื่น ๆ ต้องเดินตาม
- Community Driven: มีบริษัทยักษ์ใหญ่ร่วมพัฒนามากมาย เช่น Red Hat, IBM, Google, Amazon และ Microsoft
ความแตกต่างระหว่าง OpenJDK และ Oracle JDK
หลายคนมักสงสัยว่าใช้ตัวไหนดี? สรุปสั้น ๆ ได้ดังนี้ครับ
| คุณสมบัติ | OpenJDK | Oracle JDK |
| ใบอนุญาต | Open Source | Commercial |
| ค่าใช้จ่าย | ฟรี | ฟรีสำหรับการพัฒนา / เสียเงินสำหรับใช้ในเชิงพาณิชย์ |
| ประสิทธิภาพ | เกือบเท่ากัน 100% | มีเครื่องมือเฉพาะทาง |
| การสนับสนุน | ชุมชนและผู้ให้บริการรายอื่น | Oracle Support |
Note: ตั้งแต่ Java 11 เป็นต้นมา ในแง่ของ “Code” ทั้งสองแทบจะเหมือนกันทุกประการ ความต่างหลักคือเรื่อง ลิขสิทธิ์ และ การซัพพอร์ต เท่านั้นครับ
ตระกูลของ OpenJDK
เนื่องจาก OpenJDK เป็นแค่ Source Code จึงมีหลายค่ายนำไป Compile และเพิ่มการปรับแต่ง ของตัวเองเพื่อให้เหมาะกับระบบ Cloud หรือ Server ของเขา เช่น
- Temurin : เน้นความเสถียร เป็นที่นิยมมากที่สุดในหมู่ Developer
- Amazon Corretto: ปรับแต่งมาเพื่อใช้งานบน AWS โดยเฉพาะ
- Microsoft Build of OpenJDK: สำหรับใช้งานบน Azure หรือ Windows
- Azul Zulu: มีความหลากหลายของ OS และสถาปัตยกรรม CPU สูง
สถาปัตยกรรมเบื้องต้น
OpenJDK ทำหน้าที่เปลี่ยน Source Code ให้กลายเป็นสิ่งที่คอมพิวเตอร์เข้าใจผ่านส่วนประกอบหลัก
- JVM : ตัวขับเคลื่อนหลักที่ทำให้ Java รันได้ทุกที่
- JIT Compiler : ช่วยเปลี่ยน Bytecode เป็น Machine Code แบบ Real-time เพื่อเพิ่มความเร็ว
- Garbage Collector : ระบบจัดการหน่วยความจำอัตโนมัติ
ข้อควรระวังสำหรับการใช้งาน
- Environment Variables: การลง Java ใหม่มักจะไปทับค่า
JAVA_HOMEเดิม หากคุณมี App เก่าที่รันบน Java 8 แต่ลง OpenJDK 21 ทับไป อาจทำให้ App เดิมรันไม่ได้ - Keystore / Certs: หากคุณมีการลง SSL Certificate ไว้ใน Java Keystore ของเวอร์ชันเก่า อย่าลืมสำรองไฟล์นั้นไว้ เพราะการลงใหม่จะทำให้ไฟล์เหล่านี้หายไปครับ
อ่านเพิ่มเติม