ความแตกต่างระหว่าง OpenJDK และ Adoptium / AdoptOpenJDK


183

เนื่องจากการอัปเดตนโยบายRoadmap สนับสนุน Oracle Java SEล่าสุด (สิ้นสุดการอัปเดต $ ฟรีจาก Oracle หลังจากเดือนมีนาคม 2019 โดยเฉพาะ) ฉันจึงค้นหาทางเลือกอื่นสำหรับ Oracle Java ฉันพบว่า OpenJDK เป็นทางเลือกโอเพนซอร์ส และฉันได้พบAdoptOpenJDK , บัดนี้เป็นที่รู้จักในฐานะ Adoptium ซึ่งเป็นไบนารีที่สร้างไว้ล่วงหน้า มันเป็นปริศนา

ความแตกต่างระหว่าง OpenJDK และ Adoptium / AdoptOpenJDK คืออะไร?


ปรับปรุง: AdoptOpenJDKได้เปลี่ยนชื่อเป็นAdoptiumซึ่งเป็นส่วนหนึ่งของการย้ายไปยังมูลนิธิคราส
Basil Bourque

คำตอบ:


272

ในระยะสั้น:

  • OpenJDKมีความหมายหลายอย่างและสามารถอ้างถึง:
    • การใช้งานฟรีและโอเพ่นซอร์สของแพลตฟอร์ม Java, Standard Edition (Java SE)
    • open source repository - ซอร์สโค้ด Java หรือที่รู้จักในชื่อโครงการ OpenJDK
    • สร้างไว้ล่วงหน้าไบนารี OpenJDK ที่ดูแลโดย Oracle
    • สร้างไว้ล่วงหน้าไบนารีของ OpenJDK ที่ดูแลโดยชุมชน OpenJDK
  • AdoptOpenJDK - สร้างไบนารี OpenJDK ที่สร้างไว้ล่วงหน้าโดยชุมชน ( โอเพ่นซอร์สลิขสิทธิ์ )

คำอธิบาย:

Prebuilt OpenJDK (หรือการกระจาย) - ไบนารีที่สร้างขึ้นจากhttp://hg.openjdk.java.net/ซึ่งเป็นไฟล์เก็บถาวรหรือตัวติดตั้งที่มีให้สำหรับแพลตฟอร์มต่างๆพร้อมสัญญาการสนับสนุนที่เป็นไปได้

OpenJDK, พื้นที่เก็บข้อมูลแหล่งที่มา (ที่เรียกว่าโครงการ OpenJDK ) - เป็นMercurialเบสที่เก็บมาเปิดเจ้าภาพที่ http://hg.openjdk.java.net ซอร์สโค้ด Java คุณลักษณะ Java ส่วนใหญ่ (จาก VM และไลบรารีหลักไปยังคอมไพเลอร์) มีพื้นฐานมาจากแหล่งเก็บข้อมูลนี้เท่านั้น ออราเคิลมีทางเลือกอื่น

OpenJDK การกระจาย (ดูรายชื่อผู้ให้บริการด้านล่าง) - ไม่เสียค่าใช้จ่ายในรูปแบบของเบียร์และประเภทของการพูดฟรี แต่คุณจะไม่เรียก Oracle ถ้าคุณมีปัญหา ไม่มีสัญญาการสนับสนุน นอกจากนี้ Oracle จะปล่อยเฉพาะการอัปเดตสำหรับรุ่น OpenJDK (การกระจาย) ใด ๆ หากการเปิดตัวนั้นเป็นรุ่น Java ล่าสุดรวมถึงรุ่น LTS (การสนับสนุนระยะยาว) วันที่ Oracle เผยแพร่ OpenJDK (การกระจาย) รุ่น 12.0 แม้ว่าจะมีปัญหาด้านความปลอดภัยกับ OpenJDK (การกระจาย) รุ่น 11.0, Oracle จะไม่ปล่อยการปรับปรุงสำหรับ 11.0 ดูแลโดย Oracle เท่านั้น

บางโครงการ OpenJDK - เช่นOpenJDK 8และOpenJDK 11 - ได้รับการดูแลโดยชุมชน OpenJDK และให้การเผยแพร่สำหรับ OpenJDK บางรุ่นสำหรับบางแพลตฟอร์ม สมาชิกชุมชนมีความรับผิดชอบในการเผยแพร่การแก้ไขสำหรับช่องโหว่ความปลอดภัยใน OpenJDK เหล่านี้

AdoptOpenJDK การกระจายนั้นคล้ายกับการแจกจ่าย OpenJDK ของ Oracle (ซึ่งฟรีและเป็นบิลด์ที่สร้างขึ้นโดยการรวบรวมแหล่งที่มาจากแหล่งเก็บข้อมูลของ OpenJDK) AdoptOpenJDK ในฐานะที่เป็นเอนทิตีจะไม่เป็น backporting patches เช่นจะไม่มี AdoptOpenJDK 'fork / version' ที่แตกต่างอย่างมากจาก upstream (ยกเว้นบาง patch build สคริปต์สำหรับสิ่งต่าง ๆ เช่นการสนับสนุน Win32) ความหมายถ้าสมาชิกของชุมชน (Oracle หรืออื่น ๆ แต่ไม่ใช่ AdoptOpenJDK เป็นเอนทิตี) การรักษาความปลอดภัย backport แก้ไขการปรับปรุงของรุ่น OpenJDK LTS แล้ว AdoptOpenJDK จะให้สร้างสำหรับเหล่านั้น ปรับปรุงโดยชุมชน OpenJDK

OracleJDK - เป็นอีกหนึ่งการแจกจ่าย เริ่มต้นด้วย JDK12 จะไม่มี OracleJDK รุ่นฟรี ข้อเสนอการกระจาย JDK ของออราเคิลมีไว้สำหรับการสนับสนุนเชิงพาณิชย์ คุณจ่ายให้กับสิ่งนี้ แต่คุณต้องพึ่งพา Oracle ที่ให้การสนับสนุน ซึ่งแตกต่างจากข้อเสนอ OpenJDK ของ Oracle, OracleJDK มาพร้อมกับการรองรับเวอร์ชัน LTS ที่ยาวนานขึ้น ในฐานะนักพัฒนาคุณสามารถได้รับใบอนุญาตฟรีสำหรับส่วนบุคคล / การพัฒนาใช้เฉพาะ JDK นี้ แต่ส่วนใหญ่เป็นปลาเฮอริ่งแดงเนื่องจาก 'just binary' นั้นโดยทั่วไปเหมือนกับไบนารี OpenJDK ฉันเดาว่าหมายความว่าคุณสามารถดาวน์โหลด LTS JDK รุ่นที่ติดตั้งความปลอดภัยจากเว็บไซต์ของ Oracle ได้ตราบใดที่คุณสัญญาว่าจะไม่ใช้พวกเขาในเชิงพาณิชย์

หมายเหตุ อาจเป็นการดีที่สุดที่จะเรียกใช้บิวด์ OpenJDK โดย Oracle "Oracle OpenJDK builds"

Donald Smith ผู้จัดการผลิตภัณฑ์ Java ที่ Oracle เขียน :

ตามหลักการแล้วเราเพียงอ้างถึง Oracle JDK build ทั้งหมดเป็น "Oracle JDK" ไม่ว่าจะภายใต้ GPL หรือใบอนุญาตการค้าขึ้นอยู่กับสถานการณ์ของคุณ อย่างไรก็ตามด้วยเหตุผลทางประวัติศาสตร์ในขณะที่มีความแตกต่างที่เหลืออยู่เล็กน้อยเราจะอ้างถึงสิ่งเหล่านี้แยกกันในรูปแบบ OpenJDK ของ Oracle และ Oracle JDK


ผู้ให้บริการ OpenJDK และการเปรียบเทียบ

-------------------------------------------------- --------------------------------------
| ผู้ให้บริการ | สร้างฟรี | ฟรีไบนารี ขยาย | พาณิชย์ อนุญาต
| | จากแหล่ง | การกระจาย | อัปเดต | สนับสนุน | ใบอนุญาต
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | ใช่ ใช่ ใช่ ไม่ | ใช่
| Amazon - Corretto | ใช่ ใช่ ใช่ ไม่ | ใช่
| Azul Zulu | ไม่ | ใช่ ใช่ ใช่ ใช่
| BellSoft Liberica | ไม่ | ใช่ ใช่ ใช่ ใช่
| IBM | ไม่ | ไม่ | ใช่ ใช่ ใช่
| jClarity | ไม่ | ไม่ | ใช่ ใช่ ใช่
| OpenJDK | ใช่ ใช่ ใช่ ไม่ | ใช่
| Oracle JDK | ไม่ | ใช่ ไม่มี ** | ใช่ ไม่ |
| Oracle OpenJDK | ใช่ ใช่ ไม่ | ไม่ | ใช่
| ojdkbuild | ใช่ ใช่ ไม่ | ไม่ | ใช่
| RedHat | ใช่ ใช่ ใช่ ใช่ ใช่
| SapMachine | ใช่ ใช่ ใช่ ใช่ ใช่
-------------------------------------------------- --------------------------------------

Builds ฟรีจากซอร์สโค้ด - ซอร์สโค้ดการแจกจ่ายพร้อมใช้งานแบบสาธารณะและสามารถรวบรวมบิลด์ของตัวเองได้

Free Binary ดิสทริบิวชัน - ไบนารีการกระจายนั้นเป็นแบบสาธารณะสำหรับการดาวน์โหลดและการใช้งาน

Extended Updates - aka LTS (การสนับสนุนระยะยาว) - การปรับปรุงสาธารณะหลังระยะเวลาการเผยแพร่ 6 เดือน

การสนับสนุนเชิงพาณิชย์ - ผู้ให้บริการบางรายเสนอการปรับปรุงเพิ่มเติมและการสนับสนุนลูกค้าให้กับลูกค้าที่ชำระเงินเช่น Oracle JDK ( รายละเอียดการสนับสนุน )

สิทธิ์การใช้งาน - สิทธิ์การใช้งานการแจกจ่ายไม่ใช่แบบป้องกันเช่น Apache 2.0


ฉันควรใช้การกระจาย Java ใด

ในวัน Sun / Oracle โดยปกติ Sun / Oracle จะสร้างการแจกแจง JDK แบบดาวน์สตรีมที่เป็นกรรมสิทธิ์ตามแหล่ง OpenJDK เมื่อเร็ว ๆ นี้ออราเคิลได้ตัดสินใจที่จะสร้างงานที่เป็นกรรมสิทธิ์ของตัวเองเฉพาะกับการสนับสนุนเชิงพาณิชย์ที่แนบมา พวกเขาประกาศสร้าง OpenJDK build ด้วยเช่นกันบนhttps://jdk.java.net/ไซต์ของพวกเขา

สิ่งที่เกิดขึ้นเริ่มต้น JDK 11 คือการเปลี่ยนจาก mindset ของผู้จำหน่ายรายเดียว (Oracle) เป็น mindset ที่คุณเลือกผู้ให้บริการที่ให้การกระจายผลิตภัณฑ์แก่คุณภายใต้เงื่อนไขที่คุณต้องการ: แพลตฟอร์มที่พวกเขาสร้างขึ้นเพื่อความถี่และความรวดเร็วของการเผยแพร่ การสนับสนุนมีโครงสร้างอย่างไร ฯลฯ หากคุณไม่ไว้วางใจผู้ขายรายใดที่มีอยู่คุณสามารถสร้าง OpenJDK ด้วยตนเองได้

แต่ละบิลด์ของ OpenJDK มักจะทำจากแหล่งเก็บต้นฉบับต้นน้ำเดียวกัน (OpenJDK“ โครงการ”) อย่างไรก็ตามแต่ละบิลด์นั้นไม่เหมือนใคร - ฟรีหรือการค้า, แบรนด์หรือ unbranded, บริสุทธิ์หรือรวมกัน (เช่น BellSoft Liberica JDK เสนอ JavaFX ที่รวมไว้ซึ่งถูกลบออกจาก Oracle builds เริ่มต้น JDK 11)

หากไม่มีสภาพแวดล้อม (เช่น Linux) และ / หรือข้อกำหนดสิทธิการใช้งานจะกำหนดการแจกจ่ายเฉพาะและหากคุณต้องการสร้าง JDK มาตรฐานที่สุดอาจเป็นตัวเลือกที่ดีที่สุดคือการใช้ OpenJDK โดย Oracle หรือ AdoptOpenJDK


ข้อมูลเพิ่มเติม

ถึงเวลาต้องมองข้าม JDK ของ Oracleโดย Stephen Colebourne

Java ยังคงฟรีโดยชุมชน Java Champions (เผยแพร่เมื่อ 17 กันยายน 2018)

Java ยังคงเป็นฟรี 2.0.0โดยชุมชน Java Champions (เผยแพร่เมื่อ 3 มีนาคม 2019)

Aleksey Shipilev เกี่ยวกับการสัมภาษณ์การปรับปรุง JDKโดย Opsian (เผยแพร่เมื่อ 27 มิถุนายน 2019)


8
คุณอาจจะเพิ่มการกล่าวถึงว่าผู้ให้บริการอื่น ๆ ให้การใช้งาน Java บนพื้นฐาน OpenJDK เช่นซูลูและZingผลิตภัณฑ์จากระบบ Azul อีกโครงการหนึ่งคือEclipse OpenJ9
Basil Bourque

2
@DmitriyPopov มันอนุญาต - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
Mikhail Kholodkov

1
@MikhailKholodkov ไม่ถูกต้องเกี่ยวกับสิทธิ์ใช้งาน Apache ลิงก์ของคุณไปยัง AdoptOpenJDK โดยใช้ Apache License 2.0 จะใช้กับบิลด์สคริปต์ที่พวกเขาสร้างขึ้นเพื่อช่วยสร้างไบนารีของพวกเขาเท่านั้น ไบนารีถูกสร้างขึ้นจากซอร์สโค้ดที่ได้รับจากโครงการ OpenJDK โดยใช้ GPL พร้อมการเชื่อมโยงใบอนุญาตข้อยกเว้น
Basil Bourque

2
@GarrettWilson AdoptOpenJDK ทำ 2 สิ่งเท่านั้น: (a) สร้างไบนารีและตัวติดตั้งโดยใช้ซอร์สโค้ดที่ OpenJDK จัดทำและ (b) ทำการทดสอบกับไบนารีเหล่านั้น AdoptOpenJDK ไม่ได้บำรุงรักษาที่เก็บของรหัสที่มาสำหรับการใช้งานแพลตฟอร์ม Java ดังนั้น: OpenJDK เป็นซอร์สโค้ดเท่านั้น AdoptOpenJDK เป็นเพียงไบนารี + ตัวติดตั้ง AdoptOpenJDK รหัสผู้แต่งสำหรับเครื่องมือสร้างและชุดทดสอบเท่านั้น นอกจาก AdoptOpenJDK บริษัท อื่น ๆ หลายแห่งยังจัดเตรียม builds ตามซอร์สโค้ดที่จัดทำโดยโครงการ OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP และอีกมากมาย
Basil Bourque

1
@GarretWilson ฉันควรเพิ่มว่า AdoptOpenJDK ทำสิ่งที่สาม: (c) สร้างและบำรุงรักษาเครื่องมือเพื่อสนับสนุนอาคารและการทดสอบที่กล่าวถึงในความคิดเห็นก่อนหน้าของฉัน
Basil Bourque

63

ปรับปรุง: AdoptOpenJDKได้เปลี่ยนชื่อเป็นAdoptiumซึ่งเป็นส่วนหนึ่งของการย้ายไปยังมูลนิธิคราส


OpenJDK code ซอร์สโค้ด
Adoptium / AdoptOpenJDK ➙ builds

ความแตกต่างระหว่าง OpenJDK และ AdoptOpenJDK

ครั้งแรกให้ซอร์สโค้ดอื่น ๆ ให้สร้างของซอร์สโค้ดที่

ผู้ขายหลายรายของ Java & OpenJDK

AdoptiumของEclipse Foundationเดิมชื่อAdoptOpenJDKเป็นเพียงหนึ่งในผู้จำหน่ายหลายรายที่กระจายการใช้งานของแพลตฟอร์ม Java เหล่านี้รวมถึง:

  • มูลนิธิ Eclipse (Adoptium / AdoptOpenJDK)
  • ระบบ Azul
  • คำพยากรณ์
  • Red Hat / IBM
  • BellSoft
  • SAP
  • Amazon AWS
  • … และอื่น ๆ

ดูผังงานของฉันนี้เพื่อช่วยแนะนำคุณในการเลือกผู้ขายสำหรับการติดตั้งแพลตฟอร์ม Java คลิก / แตะเพื่อซูม

แผนผังลำดับงานแนะนำคุณในการเลือกผู้จำหน่ายสำหรับการนำ Java 11 ไปใช้งาน

แหล่งข้อมูลอื่น: เมทริกซ์การเปรียบเทียบนี้โดย Azul Systems มีประโยชน์และดูเหมือนเป็นจริงและยุติธรรมกับใจ

นี่คือรายการของข้อควรพิจารณาและแรงจูงใจที่ต้องพิจารณาในการเลือกผู้ขายและการใช้งาน

แรงจูงใจในการเลือกผู้จำหน่ายสำหรับ Java

ผู้ค้าบางรายเสนอเทคโนโลยีJITให้คุณเลือก

ไดอะแกรมแสดงประวัติของการรวมฮอตสปอตและ JRockit และ OpenJ9 ทั้งสองมีอยู่ใน AdoptOpenJDK

เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับระบบนิเวศ Java นี้อ่านJava ยังฟรี


1
หาก 'OpenJDK' อ้างถึงแหล่งที่มาดังนั้นความแตกต่างระหว่างhub.docker.com/_/openjdkและhub.docker.com/_/adoptopenjdkคืออะไร
bcoughlan

1
@bcoughlan คุณจะต้องขอให้ผู้เผยแพร่ผลิตภัณฑ์ทั้งสองนี้: Docker, Inc. หน้าเว็บที่เชื่อมโยงของคุณอ้างว่าโครงการ AdoptOpenJDK ได้รับการดูแลรักษาเป็นครั้งที่สองในขณะที่ "ชุมชนนักเทียบท่า" เป็นคนแรก สิ่งแรกคือสร้างความเข้าใจผิดในการใช้โลโก้และการตั้งชื่อเนื่องจากอาจทำให้คุณรู้สึกว่าโครงการ OpenJDK สร้างมันขึ้นมาซึ่งไม่ใช่กรณี คนแรกอาจละเมิดรายการ # 2 ของประกาศเครื่องหมายการค้าที่ OpenJDKระบุ แต่ฉันไม่ใช่ทนายความ
Basil Bourque

1
@SanderVerhagen คุณสามารถให้ลิงค์ไปยังหน้าดาวน์โหลดนั้นได้ที่เว็บไซต์ OpenJDK หรือไม่? ฉันไม่พบข้อเสนอดังกล่าว ฉันจะพบลิงค์ไปของออราเคิลไบนารี OpenJDK JDK สำหรับ Windows, MacOS และ Linux บนเว็บไซต์อื่น: jdk.java.net ไซต์นั้นและการดาวน์โหลดแบบไบนารีนั้นจัดทำขึ้นเพื่อให้ชุมชน Oracle ได้รับความอนุเคราะห์โดยไม่ใช่โครงการ OpenJDK ในฐานะที่เป็นหน้าแรกพูดว่า: Java Development Kit สร้างจาก Oracle ฉันแสดงผลิตภัณฑ์นี้เป็นฟองที่สองในถังสีฟ้าของผังงานของฉันที่มุมขวาบน
Basil Bourque

1
@SanderVerhagen นำไปสู่การเชื่อมโยงไปยังเว็บไซต์ที่แตกต่างกันที่ผมสงสัยนอก OpenJDK เว็บไซต์jdk.java.net/14คือไม่ได้เป็นส่วนหนึ่งของเว็บไซต์ OpenJDK หรือมันเป็นส่วนหนึ่งของโครงการ OpenJDK ในคำอื่น ๆopenjdk.java.netไม่jdk.java.net ดูอีกสองฟองที่ด้านบนของถังสีน้ำเงินในผังงานของฉัน ผลิตภัณฑ์ Oracle ที่มุมบนซ้ายเป็นผลิตภัณฑ์เชิงพาณิชย์ ผลิตภัณฑ์ Oracle ที่อยู่ด้านบนขวาคือบิลด์ที่ไม่มีค่าใช้จ่ายลิขสิทธิ์ GPL - ลิงค์ของคุณจะนำไปสู่ผลิตภัณฑ์นี้โดยเฉพาะ
Basil Bourque

1
@SanderVerhagen ฉันสงสัยว่าคุณกำลังสับสนกับการตั้งชื่อผลิตภัณฑ์ คำว่า "Java" เป็นเครื่องหมายการค้าของ Oracle และสามารถใช้ได้เมื่อได้รับอนุญาตเท่านั้น ผู้ขายส่วนใหญ่จึงไม่ได้ใช้เครื่องหมายการค้านั้น แต่ผู้ค้าส่วนใหญ่ใช้คำว่า“ OpenJDK” เป็นส่วนหนึ่งของการตั้งชื่อไม่ใช่“ Java” ผู้ขายเหล่านี้สร้างบิวด์จากซอร์สโค้ดที่ได้รับจากโครงการOpenJDK OpenJDKโครงการให้รหัสที่มาเพียงไม่สร้างไม่ได้ติดตั้ง สำหรับการสร้าง / ติดตั้งคุณจะต้องทำด้วยตัวเองหรือได้รับจากผู้ขาย ผมขอแนะนำให้อ่านJava ยังคงฟรี
Basil Bourque
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.