OpenJDK ชุดพัฒนาซอฟต์แวร์ Java แบบโอเพนซอร์ส
สรุปใจความสำคัญ
- OpenJDK เป็นการนำมาตรฐาน Java SE มาปรับใช้ในรูปแบบโอเพนซอร์สภายใต้สัญญาอนุญาต GNU GPL v2
- เป็น Reference Implementation อย่างเป็นทางการของ Java SE ตั้งแต่เวอร์ชัน 7
- เริ่มต้นโดย Sun Microsystems ในปี 2006 ก่อนจะถูกดูแลโดย Oracle Corporation
- ซอร์สโค้ดทั้งหมดของ JDK ถูกเปลี่ยนเป็นโอเพนซอร์สอย่างสมบูรณ์ในปี 2010 หลังจากแทนที่ส่วนประกอบกรรมสิทธิ์ (binary plugs) ทั้งหมด
OpenJDK (Open Java Development Kit) คือการนำมาตรฐาน Java Platform, Standard Edition (Java SE) มาปรับใช้ในรูปแบบของซอฟต์แวร์โอเพนซอร์ส โครงการนี้เริ่มต้นโดยบริษัท Sun Microsystems ในปี 2006 ก่อนที่บริษัทจะถูกควบรวมโดย Oracle Corporation ในเวลาต่อมา OpenJDK ได้รับการเผยแพร่ภายใต้สัญญาอนุญาต GNU General Public License (GPL) เวอร์ชัน 2 พร้อมข้อกำหนดข้อยกเว้นการเชื่อมโยง (GPL linking exception) เพื่อให้ส่วนประกอบที่เชื่อมต่อกับ Java Class Library ไม่ต้องตกอยู่ภายใต้เงื่อนไขของ GPL
ปัจจุบัน OpenJDK ทำหน้าที่เป็นตัวให้คำจำกัดความและการนำไปใช้งานอ้างอิง (Official Reference Implementation) ของ Java SE ตั้งแต่เวอร์ชัน 7 เป็นต้นมา และเป็นรากฐานที่ได้รับความนิยมสูงสุดสำหรับชุดพัฒนาซอฟต์แวร์ Java (JDK) ในปัจจุบัน
ประวัติและการพัฒนา
จุดเริ่มต้นและการเปิดเผยซอร์สโค้ด
Sun Microsystems ประกาศในงาน JavaOne 2006 ว่าจะเปลี่ยน Java ให้เป็นซอฟต์แวร์โอเพนซอร์ส โดยในวันที่ 13 พฤศจิกายน 2006 Sun ได้ปล่อย Java HotSpot virtual machine และคอมไพเลอร์ออกมาเป็นซอฟต์แวร์เสรีภายใต้สัญญาอนุญาต GPL พร้อมคำมั่นสัญญาว่าจะปล่อยส่วนที่เหลือของ JDK รวมถึง Java Runtime Environment (JRE) ภายในเดือนมีนาคม 2007 ยกเว้นบางส่วนที่ Sun ไม่มีสิทธิ์ในการเผยแพร่ซอร์สโค้ด
ต่อมาในวันที่ 8 พฤษภาคม 2007 Sun ได้ปล่อยซอร์สโค้ดของ Java Class Library ทั้งหมดภายใต้ GPL โดยมีส่วนน้อยที่ยังเป็นซอฟต์แวร์กรรมสิทธิ์ (Proprietary) เนื่องจากข้อจำกัดด้านลิขสิทธิ์จากบุคคลที่สาม ซึ่งรวมถึงส่วนประกอบสำคัญของส่วนติดต่อผู้ใช้แบบกราฟิก (GUI)
การกำจัดส่วนประกอบกรรมสิทธิ์ (Binary Plugs)
ในช่วงแรกของการเปิดตัวในเดือนพฤษภาคม 2007 มีส่วนประกอบของ OpenJDK ประมาณ 4% ที่ยังเป็นซอฟต์แวร์กรรมสิทธิ์ อย่างไรก็ตาม ด้วยความร่วมมือระหว่าง Sun Microsystems และชุมชนนักพัฒนา ได้มีการสร้างส่วนประกอบทางเลือกแบบโอเพนซอร์สขึ้นมาทดแทน จนกระทั่งในเวอร์ชัน OpenJDK 6 (พฤษภาคม 2008) ส่วนที่เป็นกรรมสิทธิ์ลดลงเหลือไม่ถึง 1% และในที่สุดตั้งแต่เดือนธันวาคม 2010 ส่วนประกอบที่เรียกว่า "binary plugs" ทั้งหมดถูกแทนที่ด้วยซอฟต์แวร์โอเพนซอร์ส ทำให้ JDK ทั้งหมดกลายเป็นโอเพนซอร์สอย่างสมบูรณ์
การมีส่วนร่วมของชุมชนและการพอร์ตระบบ
โครงการ OpenJDK ได้รับการสนับสนุนจากบริษัทเทคโนโลยีชั้นนำและชุมชนนักพัฒนาอย่างกว้างขวาง ตัวอย่างเช่น Red Hat ได้ลงนามข้อตกลงผู้สนับสนุนกับ Sun ในปี 2007 เพื่อให้วิศวกรของบริษัทสามารถมีส่วนร่วมในโครงการและเข้าถึงชุดทดสอบ Technology Compatibility Kit (TCK) เพื่อตรวจสอบความเข้ากันได้กับมาตรฐาน Java SE
นอกจากนี้ ยังมีการจัดตั้ง Porters Group เพื่อช่วยในการพอร์ต OpenJDK ไปยังสถาปัตยกรรมโปรเซสเซอร์และระบบปฏิบัติการที่หลากหลาย เช่น การพอร์ตไปยัง BSD และ Mac OS X รวมถึงการพัฒนาเวอร์ชันสำหรับระบบปฏิบัติการอื่น ๆ เช่น OS/2 (ผ่าน ArcaOS) และ OpenVMS บนแพลตฟอร์ม Itanium
กระบวนการส่งมอบโค้ด
OpenJDK มีขั้นตอนการรับโค้ดที่เข้มงวด โดยทุกการเสนอแก้ไข (Contribution) จะต้องผ่านการตรวจสอบโดยผู้ดูแลระบบ (Committer) ของ OpenJDK และผู้ส่งโค้ดต้องลงนามในข้อตกลงผู้สนับสนุน (SCA/OCA) นอกจากนี้ การแก้ไขบั๊กควรมาพร้อมกับชุดทดสอบ jtreg เพื่อยืนยันว่าปัญหาได้รับการแก้ไขจริง
การนำไปใช้งานในเชิงพาณิชย์และชุมชน
มีผู้ให้บริการหลายรายที่นำ OpenJDK ไปสร้างเป็นชุดพัฒนาซอฟต์แวร์ของตนเอง เช่น Azul Systems และ Microsoft ที่ร่วมกันสร้าง Zulu ซึ่งเป็น OpenJDK build สำหรับผู้ใช้ Windows Azure cloud โดย Azul Systems ได้ส่งมอบการแก้ไขบั๊กและฟีเจอร์ใหม่ ๆ กลับคืนสู่โครงการ OpenJDK อย่างต่อเนื่อง
คำถามที่พบบ่อย
OpenJDK แตกต่างจาก Oracle JDK อย่างไร?
OpenJDK คือโครงการโอเพนซอร์สที่เป็นรากฐานของ Java SE ในขณะที่ Oracle JDK คือชุดพัฒนาซอฟต์แวร์เชิงพาณิชย์ที่สร้างขึ้นจาก OpenJDK โดยมีการเพิ่มการสนับสนุนและข้อตกลงการใช้งานสำหรับองค์กร
OpenJDK ใช้สัญญาอนุญาตแบบใด?
OpenJDK เผยแพร่ภายใต้สัญญาอนุญาต GNU General Public License (GPL) เวอร์ชัน 2 พร้อมข้อกำหนดข้อยกเว้นการเชื่อมโยง (GPL linking exception)
ใครสามารถมีส่วนร่วมในการพัฒนา OpenJDK ได้บ้าง?
นักพัฒนาทั่วไปและบริษัทเทคโนโลยีสามารถมีส่วนร่วมได้ แต่ต้องลงนามในข้อตกลงผู้สนับสนุน (SCA/OCA) และโค้ดที่ส่งเข้ามาต้องผ่านการตรวจสอบโดยผู้ดูแลระบบของโครงการ
