Является ли Java бесплатным / открытым исходным кодом или нет?

33

13 ноября 2006 года Sun выпустила большую часть Java как бесплатное программное обеспечение с открытым исходным кодом (FOSS) в соответствии с условиями GNU General Public License (GPL). 8 мая 2007 года Sun завершила процесс, сделав весь основной код Java доступным на условиях бесплатного программного обеспечения / распространения с открытым исходным кодом , за исключением небольшой части кода, на которую Sun не имела авторских прав.

OpenJDK (Open Java Development Kit) - это бесплатная реализация языка программирования Java с открытым исходным кодом. Это результат усилий Sun Microsystems, начатых в 2006 году. Реализация лицензирована под общедоступной лицензией GNU (GNU GPL) за исключением ссылок.

  • Почему все еще есть люди, которые говорят, что Java не является открытым исходным кодом или бесплатной, как в свободе слова?
  • Я что-то пропустил?
  • Является ли Java по-прежнему частной собственностью?
Тулаинс Кордова
источник
Я точно не знаю, защищена ли только реализация Sun JVM или даже технология (байт-код), но все основные библиотеки (java.xy) бесплатны. Таким образом, если кто-то создает разные спецификации байт-кода и виртуальную машину, следует использовать существующие библиотеки бесплатно. К сожалению, Google сделал это с Dalvik!
ern0

Ответы:

37

Проблема заключается в том, что для того, чтобы назвать что-то «Java», вам необходимо сертифицировать его как совместимое со спецификацией Java.

Одной из предпосылок получения этого сертификата является запуск вашей JVM с помощью набора тестов - Java Technology Compatibility Kit (TCK) . Этот набор тестов НЕ с открытым исходным кодом.

Таким образом, вы можете создать JVM, которая будет вести себя очень похожим на Java способом и быть полностью открытым исходным кодом, но, если вы хотите назвать его «Java JVM», вам необходимо купить комплект сертификации по лицензии без открытого источника. Для многих сторонников открытого кода это полный стартер.

Джеймс Андерсон
источник
7
Это одна из причин, по которой Apache Harmony (который был довольно полной, независимой реализацией JVM) был остановлен . Очень жаль, что Sun / Oracle действовали таким образом (и продолжают действовать так). То, что сделал Google («почти скопировал» Java), вероятно, является прямым результатом этого.
Йоахим Зауэр
1
Кроме того, набором тестов является TCK платформы Java (есть и другие TCK для технологий, связанных с Java).
Йоахим Зауэр
4
Кроме того, если вы создадите успешную JVM, Oracle может подать в суд на вас за нарушение авторских прав и нарушение патента . Как будто они подали в суд на Google по Android.
MarkJ
2
Актуален ли закон именования для вызова чего-либо с открытым исходным кодом? Я не могу создать свой собственный браузер и назвать его Firefox либо. Я думаю, что вопрос в первую очередь состоит в том, чтобы понять его ... что подразумевается под термином "Java" в спецификации языка, реализации jvm, ... и кто называет это не открытым ...
Йоханнес
@johannes - добро пожаловать в дом с открытым исходным кодом педантов и придурков! Для многих в сообществе open source эти различия важны. Свидетели апачи, отказавшиеся от проекта Гармония. Для других людей с более практичной склонностью иметь среду Java Like, которая работает «достаточно хорошо», как виртуальная машина Dalvik в основе всех устройств Android.
Джеймс Андерсон
15

Вы должны были прочитать этот ответ, прежде чем он был удален о том, какой использовать. Основной ответ гласил:

Что касается Java 7, обратите внимание, что JDK7 и OpenJDK7 будут иметь ( почти ) идентичную кодовую базу.

Обратите внимание на то, что я почти выделил.

Из статьи, связанной с этим ответом:

[…] Но есть некоторый код, где есть замены с открытым исходным кодом, где мы все еще используем старый закрытый исходный код. Это в первую очередь при растеризации шрифтов и графики. Старый код растрирования с закрытым исходным кодом, будучи обремененным, имеет более 10 лет исправления ошибок, тонкой настройки и т. Д., И для любой замены с открытым исходным кодом, чтобы сместить этот код в продуктивных сборках JDK, он должен быть доказуемо быстрым, стабильным и Хорошее качество как существующий закрытый код.

Также из FAQ по Java :

Java Development Kit (JDK) можно бесплатно загрузить и использовать для коммерческого программирования, но не для повторного распространения .

Итак, не с открытым исходным кодом . Просто почти.

Кроме того, даже если бы это был полностью открытый исходный код, модель развития и управления не будет. Это не проблема лицензирования, хотя.

Gallaecio
источник
1
«бесплатно загружать и использовать, но не распространять» означает, что программное обеспечение не является «свободным программным обеспечением», но все же может быть «открытым исходным кодом». Открытый исходный код просто подразумевает, что у вас есть доступ к исходному коду. Свободное программное обеспечение (как определено FSF и другими) также требует права на распространение.
CVn
6
@ MichaelKjörling Определение OSI, безусловно, требует права перераспределения.
luiscubal
1

В 1997 году Sun Microsystems обратилась к ECMA с просьбой формализовать Java, но вскоре она вышла из процесса. Стандарт Java фактически контролируется с помощью Java Community Process .

Хотя в 2006 году большая часть Java была выпущена Sun Microsystems на условиях GPL, но текущая официальная реализация принадлежит Oracle.

Поскольку в Java отсутствует какая-либо формальная стандартизация, признанная ECMA, ISO / IEC, ANSI или другой сторонней организацией по стандартизации, реализация Oracle является стандартом де-факто. Однако есть альтернативные реализации, такие как GNU Compiler для Java, GNU Classpath, IcedTea-Web и т. Д.

Саджад Деяргару
источник
7
-1: Начиная с Java 7, официальной справочной реализацией является OpenJDK GPL.
Майкл Боргвардт
2
Говоря о Java, вы получите -1 :( OpenJDK является открытым исходным кодом, но реализация на Java.com является BCL, как упоминалось выше и здесь . Во-первых, в нашей политике нет изменений по сравнению с Apache Harmony. OCTLA - это программа, которая позволяет бесплатно доступ к TCK для реализаций на основе OpenJDK, лицензированных по лицензии GPL и предназначенных только для этой цели. Во-вторых, реализация Oracle (которую вы найдете на java.com или java.oracle.com) останется только под лицензией BCL. чтобы быть полностью ясным, исходный код OpenJDK остается под GPL
Sajad Deyargaroo