Подтвердить что ты не робот

Мне нужно открыть исходный код, если я использую OpenJDK как JVM?

В связи с тем, что Oracle заявляет о своем намерении взимать плату за версию JVM (или что-то другое, что вы называете), а IBM объявляет о своем намерении поддерживать OpenJDK, все становится довольно сложным для большого набора разработчиков Java. У нас большой объем работы на Java, и до сих пор у нас не возникало проблем с выбором наших лицензионных условий. Похоже, нам придется переключиться на OpenJDK, где IBM будет оказывать поддержку. Но OpenJDK - это GPL V2, и, насколько мне известно, любой код, связанный с GPL V2, должен быть GPL V2. У нас также есть код JNI, который будет еще больше. Учитывая эти факты, означает ли это, что если мы будем использовать OpenJDK для запуска нашего программного обеспечения, нам придется перейти на GPL для нашего лицензирования? Излишне говорить, что это сдуло бы всю нашу систему лицензирования и бизнес-модели.

4b9b3361

Ответ 1

Лицензия на OpenJDK не является "GPL v2", она "GPL v2 с исключением Classpath" . Цитата:

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

Ответ 2

Нужно ли открывать исходный код, если я использую OpenJDK в качестве JVM?

Точно нет.

Существует много коммерческих Java-приложений с закрытым исходным кодом, которые используют JVM на основе OpenJDK. "Исключение Classpath", о котором упоминает @Chris Lercher, делает это законным.

Кстати, "Исключение Classpath" было изобретено юристами FSF специально для того, чтобы позволить библиотекам GNU Classpath (переопределение чистых помещений библиотек Java SE) использоваться для запуска проприетарных/закрытых приложений. Отсюда и название...

Единственные случаи, когда вам нужно беспокоиться, это такие вещи, как:

  • JVM с закрытым исходным кодом, использующие кодовую базу OpenJDK.
  • Закрытые исходные приложения, которые содержат измененные копии классов OpenJDK без включения исходного кода для модификаций.
  • Приложения с закрытым исходным кодом, которые ссылаются на определенные классы OpenJDK GPLv2, которые не помечены как исключение Classpath.

В OpenJDK 11 последняя категория, по-видимому, состоит из большого количества "тестовых" классов, которые в любом случае не включены в дистрибутив OpenJDK, и внутренних классов, на которые вы не должны (и, вероятно, не можете) ссылаться в приложении. Эти классы легко определить. Поиск исходных файлов Java в исходном дереве OpenJDK, которые содержат слово "GNU", а не слово "Classpath"

Стоит отметить, что значительная часть базы Java-кода OpenJDK - это сторонний код с разрешительными лицензиями с открытым исходным кодом. Ссылки на эти классы разрешены.

Комплектация OpenJDK с закрытым исходным кодом не является проблемой. GPL позволяет вам распространять двоичные файлы для программного обеспечения GPL вместе с двоичными файлами для программного обеспечения с закрытым исходным кодом.

Ответ 3

Прочитайте строки в начале исключения класса. Исключение classpath не похоже на всю библиотеку.

Некоторые исходные файлы, распространяемые Sun Microsystems, Inc., подлежат следующему пояснению и специальному исключению для GPL, но только там, где Sun явно включил в конкретный заголовок исходного файла слова "Sun" обозначает этот конкретный файл как подлежащий исключение "Classpath", предоставленное Sun в файле LICENSE, который сопровождал этот код. "