Sự khác biệt giữa OpenJDK và Adoptium / AdoptOpenJDK


182

Do cập nhật chính sách Lộ trình hỗ trợ Java Java SE gần đây (đặc biệt là bản cập nhật phát hành miễn phí $ từ Oracle sau tháng 3 năm 2019), tôi đã tìm kiếm các lựa chọn thay thế cho Oracle Java. Tôi đã thấy rằng OpenJDK là một sự thay thế nguồn mở. Và tôi đã tìm thấy AdoptOpenJDK , hiện được gọi là Adoptium, là một nhị phân dựng sẵn . Nó đánh đố.

Sự khác biệt giữa OpenJDK và Adoptium / AdoptOpenJDK là gì?


Cập nhật: AdoptOpenJDK đã đổi tên thành Adoptium , như là một phần của việc chuyển sang Quỹ Eclipse .
Basil Bourque

Câu trả lời:


270

Nói ngắn gọn:

  • OpenJDK có nhiều ý nghĩa và có thể tham khảo:
    • triển khai mã nguồn mở và miễn phí của Nền tảng Java, Phiên bản tiêu chuẩn (Java SE)
    • kho lưu trữ nguồn mở - mã nguồn Java hay còn gọi là dự án OpenJDK
    • Các tệp nhị phân OpenJDK dựng sẵn được duy trì bởi Oracle
    • Các tệp nhị phân OpenJDK dựng sẵn được duy trì bởi cộng đồng OpenJDK
  • AdoptOpenJDK - các tệp nhị phân OpenJDK dựng sẵn được duy trì bởi cộng đồng ( nguồn mở được cấp phép )

Giải trình:

Prebuilt OpenJDK (hoặc phân phối) - nhị phân, được xây dựng từ http://hg.openjdk.java.net/ , được cung cấp dưới dạng lưu trữ hoặc trình cài đặt, được cung cấp cho các nền tảng khác nhau, với hợp đồng hỗ trợ có thể.

OpenJDK, kho lưu trữ nguồn (còn gọi là dự án OpenJDK ) - là kho lưu trữ nguồn mở dựa trên Mercurial , được lưu trữ tại http://hg.openjdk.java.net . Mã nguồn Java. Phần lớn các tính năng Java (từ VM và các thư viện lõi đến trình biên dịch) chỉ dựa trên kho lưu trữ nguồn này. Oracle có một ngã ba thay thế này.

OpenJDK, bản phân phối (xem danh sách các nhà cung cấp bên dưới) - miễn phí như trong bia và loại miễn phí như trong lời nói , nhưng, bạn không được gọi cho Oracle nếu bạn gặp vấn đề với nó. Không có hợp đồng hỗ trợ. Hơn nữa, Oracle sẽ chỉ phát hành các bản cập nhật cho bất kỳ phiên bản OpenJDK (bản phân phối) nào nếu bản phát hành đó là bản phát hành Java gần đây nhất, bao gồm các bản phát hành LTS (hỗ trợ dài hạn). Ngày Oracle phát hành OpenJDK (bản phân phối) phiên bản 12.0, ngay cả khi có vấn đề bảo mật với OpenJDK (bản phân phối) phiên bản 11.0, Oracle sẽ không phát hành bản cập nhật cho 11.0. Duy trì duy nhất bởi Oracle.

Một số dự án OpenJDK - như OpenJDK 8OpenJDK 11 - được cộng đồng OpenJDK duy trì và cung cấp các bản phát hành cho một số phiên bản OpenJDK cho một số nền tảng. Các thành viên cộng đồng đã chịu trách nhiệm phát hành các bản sửa lỗi cho các lỗ hổng bảo mật trong các phiên bản OpenJDK này.

AdoptOpenJDK, bản phân phối rất giống với bản phân phối OpenJDK của Oracle (ở chỗ nó miễn phí và là bản dựng được sản xuất bằng cách biên dịch các nguồn từ kho lưu trữ nguồn OpenJDK). AdoptOpenJDK với tư cách là một thực thể sẽ không phải là bản vá lỗi, tức là sẽ không có một 'fork / phiên bản' AdoptOpenJDK khác về mặt truyền thông (ngoại trừ một số bản vá kịch bản xây dựng cho những thứ như hỗ trợ Win32). Có nghĩa là, nếu các thành viên của cộng đồng (Oracle hoặc những người khác, nhưng không phải AdoptOpenJDK với tư cách là một thực thể) sửa lỗi bảo mật backport cho các bản cập nhật của phiên bản OpenJDK LTS, thì AdoptOpenJDK sẽ cung cấp các bản dựng cho những người đó. Được duy trì bởi cộng đồng OpenJDK.

OracleJDK - là một bản phân phối khác. Bắt đầu với JDK12 sẽ không có phiên bản miễn phí của OracleJDK. Cung cấp phân phối JDK của Oracle là dành cho hỗ trợ thương mại. Bạn trả tiền cho việc này, nhưng sau đó bạn phải nhờ đến Oracle để được hỗ trợ. Không giống như việc cung cấp OpenJDK của Oracle, OracleJDK hỗ trợ các phiên bản LTS lâu hơn. Là nhà phát triển, bạn có thể nhận được giấy phép miễn phí cho cá nhân / phát triển chỉ sử dụng JDK cụ thể này, nhưng đó chủ yếu là cá trích đỏ, vì 'chỉ là nhị phân' về cơ bản giống như nhị phân OpenJDK. Tôi đoán điều đó có nghĩa là bạn có thể tải xuống các phiên bản LTS JDK được vá bảo mật từ các trang web của Oracle miễn là bạn hứa sẽ không sử dụng chúng cho mục đích thương mại.

Lưu ý . Có lẽ tốt nhất là gọi các bản dựng OpenJDK của Oracle là "bản dựng OpenJDK của Oracle".

Donald Smith, người quản lý sản phẩm Java tại Oracle viết :

Lý tưởng nhất, chúng tôi chỉ đơn giản gọi tất cả các bản dựng JDK của Oracle là "Oracle JDK", theo GPL hoặc giấy phép thương mại, tùy thuộc vào tình huống của bạn. Tuy nhiên, vì lý do lịch sử, trong khi vẫn tồn tại những khác biệt nhỏ, chúng tôi sẽ đề cập đến chúng một cách riêng biệt như các bản dựng OpenJDK của Oracle và JDK của Oracle.


Nhà cung cấp và so sánh OpenJDK

-------------------------------------------------- --------------------------------------
| Nhà cung cấp | Bản dựng miễn phí | Nhị phân miễn phí | Mở rộng | Thương mại | Cho phép |
| | từ Nguồn | Phân phối | Cập nhật | Hỗ trợ | Giấy phép |
| ------------------------------------------------- ------------------------------------- |
| Áp dụng thông qua | Vâng | Vâng | Vâng | Không | Vâng |
| Amazon - Corretto | Vâng | Vâng | Vâng | Không | Vâng |
| Azul Zulu | Không | Vâng | Vâng | Vâng | Vâng |
| BellSoft Liberica | Không | Vâng | Vâng | Vâng | Vâng |
| IBM | Không | Không | Vâng | Vâng | Vâng |
| jClarity | Không | Không | Vâng | Vâng | Vâng |
| OpenJDK | Vâng | Vâng | Vâng | Không | Vâng |
| Oracle JDK | Không | Vâng | Không ** | Vâng | Không |
| Oracle OpenJDK | Vâng | Vâng | Không | Không | Vâng |
| ojdkbuild | Vâng | Vâng | Không | Không | Vâng |
| Đỏ | Vâng | Vâng | Vâng | Vâng | Vâng |
| SapMachine | Vâng | Vâng | Vâng | Vâng | Vâng |
-------------------------------------------------- --------------------------------------

Bản dựng miễn phí từ nguồn - mã nguồn phân phối có sẵn công khai và người ta có thể tự lắp ráp bản dựng của mình

Phân phối nhị phân miễn phí - các nhị phân phân phối được công khai để tải xuống và sử dụng

Cập nhật mở rộng - còn gọi là LTS (hỗ trợ dài hạn) - Cập nhật công khai ngoài vòng đời phát hành 6 tháng

Hỗ trợ thương mại - một số nhà cung cấp cung cấp các cập nhật mở rộng và hỗ trợ khách hàng cho khách hàng trả tiền, ví dụ: Oracle JDK ( chi tiết hỗ trợ )

Giấy phép cho phép - giấy phép phân phối không bảo vệ, ví dụ: Apache 2.0


Tôi nên sử dụng phân phối Java nào?

Vào thời của Sun / Oracle, thường là Sun / Oracle sản xuất các bản phân phối JDK xuôi dòng độc quyền dựa trên các nguồn OpenJDK. Gần đây, Oracle đã quyết định thực hiện các bản dựng độc quyền của riêng họ chỉ với sự hỗ trợ thương mại kèm theo. Họ cũng xuất bản các bản dựng OpenJDK trên trang https://jdk.java.net/ của họ .

Điều đang xảy ra khi bắt đầu JDK 11 là sự chuyển đổi từ tư duy của một nhà cung cấp (Oracle) sang tư duy nơi bạn chọn một nhà cung cấp cung cấp cho bạn phân phối cho sản phẩm, theo các điều kiện bạn thích: nền tảng họ xây dựng, tần suất và sự nhanh chóng của các bản phát hành , cách hỗ trợ được cấu trúc, v.v. Nếu bạn không tin tưởng bất kỳ nhà cung cấp hiện có nào, bạn thậm chí có thể tự xây dựng OpenJDK.

Mỗi bản dựng của OpenJDK thường được tạo từ cùng một kho lưu trữ nguồn ngược dòng gốc (OpenJDK xóa dự án). Tuy nhiên, mỗi bản dựng khá độc đáo - $ miễn phí hoặc thương mại, có thương hiệu hoặc không có thương hiệu, thuần túy hoặc được đóng gói (ví dụ: BellSoft Liberica JDK cung cấp JavaFX đi kèm, đã bị xóa khỏi các bản dựng của Oracle bắt đầu JDK 11).

Nếu không có môi trường (ví dụ: Linux) và / hoặc yêu cầu giấy phép xác định phân phối cụ thể và nếu bạn muốn xây dựng JDK tiêu chuẩn nhất , thì có lẽ tùy chọn tốt nhất là sử dụng OpenJDK của Oracle hoặc AdoptOpenJDK.


Thông tin thêm

Đã đến lúc nhìn xa hơn JDK của Oracle bởi Stephen Colebourne

Java vẫn miễn phí bởi cộng đồng Java Champions (xuất bản vào ngày 17 tháng 9 năm 2018)

Java vẫn miễn phí 2.0.0 bởi cộng đồng Java Champions (xuất bản vào ngày 3 tháng 3 năm 2019)

Đây là cuộc phỏng vấn cập nhật JDK của Opsian (xuất bản vào ngày 27 tháng 6 năm 2019)


8
Bạn có thể thêm một đề cập rằng các nhà cung cấp khác cung cấp các triển khai Java dựa trên OpenJDK, chẳng hạn như các sản phẩm ZuluZing từ Azul Systems . Một cái khác là dự án OpenJ9 của Eclipse .
Basil Bourque


1
@MikhailKholodkov Không chính xác về cấp phép Apache. Liên kết của bạn đến AdoptOpenJDK bằng Apache License 2.0 chỉ áp dụng cho các tập lệnh xây dựng mà họ là tác giả để giúp tạo ra các tệp nhị phân của họ. Các tệp nhị phân được xây dựng từ mã nguồn thu được từ dự án OpenJDK bằng GPL với giấy phép ngoại lệ liên kết.
Basil Bourque

2
@GarrettWilson AdoptOpenJDK chỉ thực hiện 2 điều: (a) Xây dựng nhị phân & trình cài đặt sử dụng mã nguồn do OpenJDK cung cấp và (b) Chạy thử nghiệm trên các nhị phân đó. AdoptOpenJDK không duy trì kho lưu trữ mã nguồn để triển khai nền tảng Java. Vì vậy: OpenJDK chỉ là mã nguồn, AdoptOpenJDK chỉ là nhị phân + trình cài đặt. Các tác giả AdoptOpenJDK chỉ viết mã cho các công cụ xây dựng & bộ thử nghiệm của họ. Bên cạnh AdoptOpenJDK, một số công ty khác cũng cung cấp các bản dựng dựa trên mã nguồn được cung cấp bởi dự án OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP, v.v.
Basil Bourque

1
@GarretWilson Tôi nên thêm rằng AdoptOpenJDK thực hiện điều thứ ba: (c) Tạo và duy trì công cụ để hỗ trợ xây dựng & thử nghiệm được đề cập trong nhận xét trước đây của tôi.
Basil Bourque

62

Cập nhật: AdoptOpenJDK đã đổi tên thành Adoptium , như là một phần của việc chuyển sang Quỹ Eclipse .


OpenJDK code mã nguồn
Adoptium / AdoptOpenJDK ➙ bản dựng

Sự khác biệt giữa OpenJDK và AdoptOpenJDK

Cái đầu tiên cung cấp mã nguồn , cái còn lại cung cấp các bản dựng của mã nguồn đó.

Một số nhà cung cấp Java & OpenJDK

Adoptium của Quỹ Eclipse , trước đây gọi là AdoptOpenJDK , chỉ là một trong một số nhà cung cấp phân phối các triển khai của nền tảng Java. Bao gồm các:

  • Quỹ Eclipse (Adoptium / AdoptOpenJDK)
  • Hệ thống Azul
  • Oracle
  • Mũ Đỏ / IBM
  • BellSoft
  • nhựa cây
  • AWS của Amazon
  • … và hơn thế nữa

Xem sơ đồ này của tôi để giúp hướng dẫn bạn chọn nhà cung cấp để triển khai nền tảng Java. Nhấn / chạm để phóng to.

Lưu đồ hướng dẫn bạn trong việc chọn nhà cung cấp để triển khai Java 11

Một tài nguyên khác: Ma trận so sánh này của Azul Systems rất hữu ích và có vẻ đúng và công bằng với tôi.

Dưới đây là danh sách các cân nhắc và động lực để xem xét trong việc lựa chọn một nhà cung cấp và thực hiện.

Động lực trong việc chọn nhà cung cấp cho Java

Một số nhà cung cấp cho bạn lựa chọn công nghệ JIT .

Sơ đồ hiển thị lịch sử hợp nhất HotSpot & JRockit và OpenJ9 đều có sẵn trong AdoptOpenJDK

Để hiểu thêm về hệ sinh thái Java này, hãy đọc Java vẫn miễn phí


1
Nếu 'OpenJDK' đề cập đến nguồn, thì sự khác biệt giữa hub.docker.com/_/openjdkhub.docker.com/_/adoptopenjdk là gì?
bcoughlan

1
@bcoughlan Bạn sẽ phải hỏi nhà xuất bản của hai sản phẩm đó: Docker, Inc. Các trang web được liên kết của bạn cho rằng thứ hai được duy trì bởi dự án AdoptOpenJDK, trong khi sản phẩm đầu tiên được duy trì bởi "Cộng đồng Docker". Cái đầu tiên là sai lệch trong việc sử dụng logo và đặt tên vì nó có thể mang lại cho bạn ấn tượng rằng dự án OpenJDK đã tạo ra nó, không phải vậy. Đầu tiên thậm chí có thể vi phạm mục số 2 của thông báo nhãn hiệu do OpenJDK đưa ra , nhưng tôi không phải là luật sư.
Basil Bourque

1
@SanderVerhagen Bạn có thể cung cấp một liên kết đến trang tải xuống đó tại trang OpenJDK không? Tôi thấy không có đề nghị như vậy. Tôi tìm thấy một liên kết đến các tệp nhị phân OpenJDK JDK của Oracle cho Windows, macOS và Linux trên một trang web khác: jdk.java.net . Trang web đó và các bản tải xuống nhị phân của nó được cung cấp như một phép lịch sự cho cộng đồng bởi Oracle, chứ không phải bởi dự án OpenJDK. Như trang chủ nói: Java Development Kit được xây dựng, từ Oracle . Tôi hiển thị sản phẩm này như bong bóng thứ hai trong thùng màu xanh của sơ đồ của tôi, góc trên bên phải.
Basil Bourque

1
@SanderVerhagen Liên kết của bạn dẫn đến một trang web khác , như tôi nghi ngờ, bên ngoài OpenJDK . Trang web jdk.java.net/14 không phải là một phần của trang web OpenJDK, cũng không phải là một phần của dự án OpenJDK. Nói cách khác, openjdk.java.net không phải là jdk.java.net . Một lần nữa, hãy nhìn vào hai bong bóng trên đỉnh của cái thùng màu xanh trong sơ đồ của tôi. Sản phẩm Oracle ở phía trên bên trái là sản phẩm thương mại của họ. Sản phẩm của Oracle ở phía trên bên phải là bản dựng miễn phí được cấp phép GPL của họ - liên kết của bạn dẫn đến sản phẩm cụ thể này.
Basil Bourque

1
@SanderVerhagen Tôi nghi ngờ bạn đang bị nhầm lẫn bởi cách đặt tên sản phẩm. Từ ngữ Java Java được đăng ký nhãn hiệu bởi Oracle và chỉ có thể được sử dụng với sự cho phép của họ. Do đó, hầu hết các nhà cung cấp không sử dụng nhãn hiệu đó. Thay vào đó, hầu hết các nhà cung cấp đang sử dụng thuật ngữ này, OpenJDK, là một phần trong cách đặt tên của họ, chứ không phải là Java Java. Các nhà cung cấp này đang thực hiện các bản dựng của họ từ mã nguồn thu được từ dự án OpenJDK . Các OpenJDK dự án chỉ cung cấp mã nguồn , không xây dựng, không phải cài đặt. Đối với bản dựng / trình cài đặt, bạn phải tự tạo hoặc lấy từ nhà cung cấp. Tôi đề nghị đọc Java vẫn miễn phí .
Basil Bourque
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.