Ява вільна / з відкритим кодом чи ні?


33

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

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

  • Чому досі є люди, які кажуть, що Java не є відкритим кодом або вільним, як у вільній мові?
  • Я щось пропускаю?
  • Ява все ще є власником?


Я точно не знаю, чи захищено лише реалізацію JVM Sun або навіть технологію (байт-код), але всі основні контури (java.xy) безкоштовні. Отже, якщо хтось створить різні специфікації байт-коду та VM, він повинен використовувати існуючі лібри безкоштовно. На жаль, 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
Також тестовим набором є платформа Java Platform TCK (є й інші TCK для технологій, пов’язаних з Java).
Йоахім Зауер

4
Крім того, якщо ви будуєте успішний JVM, Oracle може подати позов до вас за порушення авторських прав та порушення патенту . Наче вони подали до суду на Google через Android.
MarkJ

2
Чи є іменовим закон відповідним для виклику чогось відкритого джерела? Я не можу створити власний веб-переглядач і називати його firefox. Я думаю, що для питання перше, що потрібно зрозуміти ... що розуміється під терміном "Java", мовна специфікація, реалізація jvm, ... і хто називає це невідкритим ...
johannes

@johannes - ласкаво просимо до дому з відкритими джерелами педантів та анітропиків! Для багатьох із спільноти з відкритим кодом ці відмінності є важливими. Свідк Апач відмовився від проекту "Гармонія". Для інших більш практичних схилень із середовищем Java Like, яка працює "досить добре", як Dalvik VM в основі всіх пристроїв Android.
Джеймс Андерсон

15

Ви повинні прочитати цю відповідь, перш ніж її видалили, яку саме використовувати. Основна відповідь зазначала:

Щодо Java 7, зауважте, що JDK7 та OpenJDK7 матимуть ( майже ) ідентичну базу коду.

Зауважте, що я майже підкреслив.

З статті, пов'язаної з цією відповіддю:

[…] Але є якийсь код, де є заміни з відкритим кодом, де ми все ще використовуємо старий закритий вихідний код. Це в першу чергу у шрифтовій та графічній растеризації. Старий код растеризації із закритим кодом, хоча він був обтяжений, мав 10+ років виправлення помилок та тонкої настройки тощо. Для будь-якої заміни з відкритим кодом для витіснення цього коду в продуктованих побудовах JDK він повинен був бути таким же швидким та стабільним і хороша якість як існуючий закритий код.

Також з FAQ на Java :

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

Отже, не з відкритим кодом . Просто майже.

Крім того, навіть якби це було повністю відкритим кодом, модель розвитку та управління не були б. Однак це не є проблемою ліцензування.


1
"безкоштовно завантажити та використовувати, але не перерозподіляти" означає, що це програмне забезпечення "не безкоштовне програмне забезпечення", але воно все ще може бути "відкритим кодом". Відкритий код просто означає, що у вас є доступ до вихідного коду. Вільне програмне забезпечення (як визначено ФСФ та іншими) вимагає також права на перерозподіл.
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 є стандартом defacto. Однак існують альтернативні реалізації, такі як 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.