Пакетирование OpenJDK с проприетарным приложением, разрешенным GPL?

16

В настоящее время я делаю видеоигру на Java, которая, скорее всего, будет распространяться через Steam. Конечно, у многих пользователей Steam в этом случае Java уже не установлена. Если это произойдет, у меня может быть небольшой собственный модуль запуска, который показывает информативный диалог, сообщающий пользователю, что ему нужно установить Java, или просто связываю мою собственную среду выполнения Java (в частности, OpenJDK 8) с моей игрой. Моя игра будет с закрытым исходным кодом, однако она основана на игровом движке с открытым исходным кодом (по лицензии BSD).

Я посмотрел лицензию OpenJDK. Это проект GPL, что означает, что все, что с ним связано, также должно быть GPL. Тем не менее, они также имеют исключение classpath. Я не уверен, применима ли часть ссылки, потому что мой код не ссылается на нее больше, чем с или без связывания. Насколько я знаю, исключение classpath не охватывает этот вариант использования.

Существует аналогичный вопрос о переполнении стека , однако он относится к ситуации, когда приложение разрабатывается с помощью OpenJDK, я имею в виду распространение с помощью OpenJDK.

john01dav
источник
4
Вы читали лицензию OpenJDK или искали похожие вопросы ? Этот вопрос является тематическим, потому что он касается лицензирования вашего собственного программного обеспечения: однако, если вы поделитесь своими исследованиями, вы получите лучшие ответы.
Да, у меня есть. Я отредактировал вопрос, чтобы отразить это.
john01dav
Я прочитал этот вопрос, и это ответы. Я не уверен, как это действительно относится к этому вопросу, кроме как на похожую тему.
john01dav
Это должен быть OpenJDK? Некоторые другие среды выполнения Java могут разрешать распространение их двоичной среды выполнения без добавления условий GPL в ваш дистрибутив. См., Например, java.com/en/download/faq/distribution.xml
Brandin

Ответы:

5

Это важный вопрос, особенно если учесть тот факт, что Oracle изменила свои лицензионные и дистрибьюторские соглашения, начиная с Java 9, 10 и 11.

JDK -> Java Development Kit.

JDK - это не дистрибутив «времени выполнения» - JDK - это дистрибутив разработчика, который содержит среду выполнения как часть пакета. JDK не являются «свободно распространяемыми» разработчиком, они лицензируются для разработчика. Если вы прочитаете лицензионное соглашение для своего JDK, вы увидите, что оно имеет ограничения по перераспределению.

JRE -> Java Runtime Engine.

Среда выполнения (почти всегда) бесплатна для загрузки и распространения при условии, что вы придерживаетесь лицензионного соглашения для JRE.

JDK и JRE лицензируются и распространяются отдельно и независимо друг от друга.

Наконец, вам нужно знать, что вам, как правило, запрещено распространять «части» или компоненты JDK - это означает, что вы не должны извлекать JRE из установленного JDK и распространять или связывать его отдельно.

Рекомендуется отделять разработку от развертывания.

  • Вы разрабатываете на JDK и развертываете проект
  • Развертывание зависит от JRE
Грег Патнуде
источник
-1

Из того, что я прочитал в лицензии, вы можете свободно распространять программу, даже платить за ее распространение.

Но поскольку у меня есть личный опыт с выпуском Java-игры (хотя и не платной), я считаю, что лучше просто сказать пользователю, что среда выполнения Java требуется либо в источнике дистрибутива (дать им ссылку на загрузку Java), либо в приложении. дать пользователю ошибку.

Деметрий
источник
2
Можете ли вы привести некоторые причины того, почему загрузка пользователей может быть лучше?
Ziggystar
3
Ну, у меня уже есть (несколько) JRE; иметь каждый пакет приложений 150+ МБ «на всякий случай» мне кажется довольно бессмысленным. Кроме того, наличие JRE для конкретного приложения приводит к таким проблемам: «У моего JRE есть эти настройки, почему он не работает в ВАШЕМ приложении?» stackoverflow.com/a/21417887/19746
Писквор покинул здание