Theo blog oracle, Oracle JDK phát hành cho Java 11 trở về sau
Bắt đầu với Java 11, Oracle sẽ cung cấp các bản phát hành JDK theo Giấy phép công cộng GNU mã nguồn mở v2, với Classpath Exception (GPLv2 + CPE) và theo giấy phép thương mại cho những người sử dụng Oracle JDK như một phần của sản phẩm hoặc dịch vụ của Oracle, hoặc những người không muốn sử dụng phần mềm nguồn mở. Sự kết hợp giữa việc sử dụng giấy phép nguồn mở và giấy phép thương mại này thay thế cho giấy phép BC BCL lịch sử , có sự kết hợp giữa các điều khoản thương mại miễn phí và trả phí.
Các bản dựng khác nhau sẽ được cung cấp cho mỗi giấy phép, nhưng các bản dựng này giống nhau về mặt chức năng ngoài một số khác biệt về mỹ phẩm và bao bì, được mô tả chi tiết bên dưới.
Từ BCL đến GPL
Các Giấy phép Binary Mã cho công nghệ Oracle Java SE ( “BCL”) đã được cấp giấy phép chính cho công nghệ Oracle Java SE trong hơn một thập kỷ. BCL cho phép sử dụng mà không có phí giấy phép trong các điều kiện nhất định. Để đơn giản hóa mọi thứ trong tương lai, Oracle đã bắt đầu cung cấp các bản dựng OpenJDK được cấp phép nguồn mở kể từ Java 9, sử dụng cùng một mô hình giấy phép như nền tảng Linux. Nếu bạn đã quen với việc nhận các nhị phân Oracle Java SE miễn phí, bạn chỉ cần tiếp tục làm như vậy với các bản dựng OpenJDK của Oracle có sẵn tại jdk.java.net . Nếu bạn đã quen với việc nhận các nhị phân Oracle Java SE như một phần của sản phẩm hoặc dịch vụ thương mại từ Oracle, thì bạn có thể tiếp tục nhận các bản phát hành JDK của Oracle thông qua Hỗ trợ Oracle của tôi (MOS) và các địa điểm khác.
Chức năng giống hệt nhau và có thể hoán đổi cho nhau ...
Các tính năng thương mại JDK được cấp phép BCL của Oracle có chứa các tính năng thương mại trong lịch sử mà không có sẵn trong các bản dựng OpenJDK. Tuy nhiên, như đã hứa , trong năm qua, Oracle đã đóng góp các tính năng này cho Cộng đồng OpenJDK, bao gồm:
Do đó, từ Java 11 trở đi, các bản dựng Oracle JDK và các bản dựng OpenJDK về cơ bản sẽ giống hệt nhau.
... nhưng với một số khác biệt về mỹ phẩm và bao bì
Vẫn còn một số ít sự khác biệt, một số chủ ý và mỹ phẩm, và một số đơn giản chỉ vì có thêm thời gian để thảo luận với những người đóng góp OpenJDK được bảo hành.
- Oracle JDK 11 phát ra cảnh báo khi sử dụng tùy chọn -XX: + UnlockCommIALFeatures, trong khi trong OpenJDK xây dựng tùy chọn này dẫn đến lỗi. Tùy chọn này không bao giờ là một phần của OpenJDK và sẽ không có ý nghĩa khi thêm nó ngay bây giờ, vì không có tính năng thương mại nào trong OpenJDK. Sự khác biệt này vẫn còn để giúp người dùng Oracle JDK 10 và các bản phát hành trước đó dễ dàng chuyển sang Oracle JDK 11 trở lên.
- Oracle JDK 11 có thể được cấu hình để cung cấp dữ liệu nhật ký sử dụng cho công cụ Bảng điều khiển Advanced Advanced Console Console , là một sản phẩm thương mại riêng biệt của Oracle. Chúng tôi sẽ làm việc với những người đóng góp OpenJDK khác để thảo luận về cách dữ liệu sử dụng như vậy có thể hữu ích trong OpenJDK trong các bản phát hành trong tương lai, nếu có. Sự khác biệt này chủ yếu vẫn là cung cấp trải nghiệm nhất quán cho khách hàng của Oracle cho đến khi các quyết định đó được đưa ra.
- Lệnh javac --release hoạt động khác nhau đối với các mục tiêu Java 9 và Java 10, vì trong các bản phát hành đó, Oracle JDK chứa một số mô-đun bổ sung không phải là một phần của các bản phát hành OpenJDK tương ứng:
- javafx.base
- javafx.controls
- javafx.fxml
- javafx.gogics
- javafx.media
- javafx.web
- java.jnlp
- jdk.jfr
- jdk.man Quản lý.cmm
- jdk.man Quản lý.jfr
- jdk.man Quản lý.resource
- jdk.packager.service
- jdk.snmp
Sự khác biệt này vẫn còn để cung cấp trải nghiệm nhất quán cho các loại sử dụng di sản cụ thể. Các mô-đun này hiện có sẵn một cách riêng biệt như một phần của OpenJFX , hiện có trong cả OpenJDK và Oracle JDK vì chúng là các tính năng thương mại mà Oracle đã đóng góp cho OpenJDK (ví dụ: Trình ghi chuyến bay) hoặc đã bị xóa khỏi Oracle JDK 11 (ví dụ: JNLP) .
- Đầu ra của các lệnh java --version và java -fullversion sẽ phân biệt các bản dựng JDK của Oracle với các bản dựng OpenJDK, để các nhóm hỗ trợ có thể chẩn đoán bất kỳ vấn đề nào có thể tồn tại. Cụ thể, chạy java --version với bản dựng Oracle JDK 11 cho kết quả:
java 11 2018-09-25
Môi trường thời gian chạy Java (TM) SE 18.9 (bản dựng 11 + 28)
Máy chủ 64-bit Java HotSpot (TM) VM 18.9 (bản dựng 11 + 28, chế độ hỗn hợp)
Và đối với bản dựng OpenJDK 11:
phiên bản openjdk "11" 2018-09-25
Môi trường thời gian chạy OpenJDK 18.9 (bản dựng 11 + 28)
OpenJDK 64-Bit Server VM 18.9 (bản dựng 11 + 28, chế độ hỗn hợp)
- Oracle JDK luôn yêu cầu các nhà cung cấp mật mã của bên thứ ba phải được ký bởi một chứng chỉ đã biết. Khung mật mã trong OpenJDK có giao diện mã hóa mở, nghĩa là nó không hạn chế nhà cung cấp nào có thể được sử dụng. Oracle JDK 11 sẽ tiếp tục yêu cầu chữ ký hợp lệ và các bản dựng Oracle OpenJDK sẽ tiếp tục cho phép sử dụng chữ ký hợp lệ hoặc nhà cung cấp tiền điện tử của bên thứ ba không dấu.
- Oracle JDK 11 sẽ tiếp tục bao gồm các trình cài đặt, nhãn hiệu và bao bì JRE cho trải nghiệm phù hợp với việc sử dụng máy tính để bàn cũ. Các bản dựng Oracle OpenJDK hiện có sẵn dưới dạng tệp zip và tar.gz, trong khi các định dạng phân phối thay thế đang được xem xét.