ป้ายกำกับ: Support

JAVA: OpenJDK VS Oracle JDKJAVA: OpenJDK VS Oracle JDK

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

หลายคนมักสงสัยว่าใช้ตัวไหนดี? สรุปสั้น ๆ ได้ดังนี้ครับ

คุณสมบัติOpenJDKOracle 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 ของเวอร์ชันเก่า อย่าลืมสำรองไฟล์นั้นไว้ เพราะการลงใหม่จะทำให้ไฟล์เหล่านี้หายไปครับ

อ่านเพิ่มเติม