Đóng gói OpenJDK với một ứng dụng độc quyền được GPL cho phép?


16

Tôi hiện đang làm một trò chơi video bằng Java rất có thể sẽ được phân phối thông qua Steam. Tất nhiên, nhiều người dùng Steam sẽ không cài đặt Java trong trường hợp này. Nếu điều này xảy ra, tôi có thể có một trình khởi chạy riêng nhỏ hiển thị một cuộc đối thoại thông tin cho người dùng biết họ cần cài đặt Java hoặc đơn giản là kết hợp môi trường thời gian chạy Java của riêng tôi (cụ thể là OpenJDK 8) với trò chơi của tôi. Trò chơi của tôi sẽ là nguồn đóng, tuy nhiên nó dựa trên một công cụ trò chơi nguồn mở (được cấp phép BSD).

Tôi đã nhìn qua giấy phép của OpenJDK. Đây là một dự án GPL có nghĩa là bất cứ điều gì liên kết đến nó cũng cần phải là GPL. Tuy nhiên, họ cũng có ngoại lệ classpath. Tôi không chắc chắn nếu phần liên kết được áp dụng bởi vì mã của tôi không liên kết với nó nhiều hơn nó sẽ có hoặc không kèm theo nó. Theo tôi biết, ngoại lệ classpath không bao gồm trường hợp sử dụng này.

Có một câu hỏi tương tự trên Stack Overflow , tuy nhiên đề cập đến tình huống ứng dụng được phát triển với OpenJDK, tôi đang đề cập đến việc phân phối với OpenJDK.


4
Bạn đã đọc giấy phép OpenJDK hoặc tìm kiếm các câu hỏi tương tự ? Câu hỏi này thuộc chủ đề vì đó là về việc cấp phép cho phần mềm của riêng bạn: tuy nhiên, chia sẻ nghiên cứu của bạn sẽ thu hút câu trả lời tốt hơn.

Vâng tôi có. Tôi đã chỉnh sửa câu hỏi để phản ánh điều này.
john01dav


Tôi đọc câu hỏi đó và nó trả lời. Tôi không chắc nó thực sự liên quan đến câu hỏi này như thế nào ngoài một chủ đề tương tự.
john01dav

Nó có phải là OpenJDK không? Một số thời gian chạy Java khác có thể cho phép phân phối thời gian chạy nhị phân của chúng mà không cần thêm các thuật ngữ GPL vào phân phối của bạn. Xem ví dụ java.com/en/doad/faq/distribution.xml
Brandin

Câu trả lời:


5

Đây là một câu hỏi quan trọng, đặc biệt khi bạn xem xét thực tế rằng Oracle đã thay đổi các thỏa thuận cấp phép và phân phối của họ bắt đầu với Java 9, 10, & 11.

JDK -> Bộ phát triển Java .

JDK không phải là bản phân phối 'thời gian chạy' - JDK là bản phân phối của nhà phát triển có chứa thời gian chạy như một phần của gói. Nhà phát triển của JDK không 'phân phối tự do' bởi nhà phát triển, họ được cấp phép cho nhà phát triển. Nếu bạn đọc EULA cho JDK của bạn, bạn sẽ thấy rằng nó đi kèm với các hạn chế về phân phối lại.

JRE -> Java Runtime Engine.

Thời gian chạy (hầu như luôn luôn) miễn phí để tải xuống và phân phối miễn là bạn tuân thủ EULA cho JRE.

JDK's và JRE được cấp phép và phân phối riêng biệt và độc lập với nhau.

Cuối cùng, bạn cần biết rằng bạn thường không được phép phân phối 'các bộ phận' hoặc các thành phần của JDK - điều này có nghĩa là bạn không cần phải trích xuất JRE từ JDK đã cài đặt của mình và phân phối hoặc gói riêng nó.

Thực tiễn tốt nhất là tách biệt phát triển khỏi triển khai.

  • Bạn phát triển trên JDK và triển khai dự án
  • Việc triển khai có sự phụ thuộc vào JRE

-1

Từ những gì tôi đọc được trong giấy phép, bạn có thể tự do phân phối lại chương trình, thậm chí tính phí để phân phối nó.

Nhưng khi tôi có kinh nghiệm cá nhân khi phát hành một trò chơi Java (mặc dù không phải trả tiền), tôi thấy tốt hơn là chỉ nói với người dùng rằng Môi trường chạy thi hành Java được yêu cầu hoặc trên nguồn phân phối (cung cấp cho họ liên kết để tải xuống Java) hoặc có ứng dụng cung cấp cho người dùng một lỗi.


2
Bạn có thể đưa ra một số lý do tại sao cho phép người dùng tải xuống có thể tốt hơn không?
ziggystar

3
Chà, tôi đã cài đặt (nhiều) JRE; có mỗi gói ứng dụng hơn 150 MB "chỉ trong trường hợp" dường như khá vô nghĩa đối với tôi. Ngoài ra, việc có JRE dành riêng cho ứng dụng dẫn đến các vấn đề như sau: "JRE của tôi có các tinh chỉnh này, tại sao nó không hoạt động trong ứng dụng CỦA BẠN?" stackoverflow.com/a/21417887/19746
Piskvor
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.