Czy Java jest darmowa / open source, czy nie?

33

W dniu 13 listopada 2006 r. Firma Sun wydała znaczną część oprogramowania Java jako bezpłatnego oprogramowania typu open source (FOSS) na warunkach licencji GNU General Public License (GPL). W dniu 8 maja 2007 r. Firma Sun zakończyła proces, udostępniając cały podstawowy kod Java na warunkach bezpłatnego oprogramowania / dystrybucji open source , oprócz niewielkiej części kodu, do którego Sun nie posiadał praw autorskich.

OpenJDK (Open Java Development Kit) to darmowa i otwarta implementacja języka programowania Java. Jest to wynik wysiłków firmy Sun Microsystems rozpoczętych w 2006 roku. Implementacja jest licencjonowana na podstawie Powszechnej Licencji Publicznej GNU (GNU GPL) z wyjątkiem linkowania.

  • Dlaczego wciąż są ludzie, którzy twierdzą, że Java nie jest oprogramowaniem typu open source ani wolnym jak w mowie wolnej?
  • Czy coś brakuje?
  • Czy Java jest nadal zastrzeżona?
Tulains Córdova
źródło
Nie wiem dokładnie, czy tylko implementacja Sun JVM, czy nawet technologia (bytecode) jest chroniona, ale wszystkie podstawowe biblioteki lib (java.xy) są darmowe. Jeśli więc ktoś utworzy inną specyfikację kodu bajtowego i maszynę wirtualną, powinien bezpłatnie skorzystać z istniejących bibliotek. Ups, Google zrobiło to z Dalvik!
ern0

Odpowiedzi:

37

Problem polega na tym, że aby nazwać coś „Java”, musisz uzyskać certyfikat zgodności ze specyfikacją Java.

Jednym z warunków wstępnych uzyskania tego certyfikatu jest uruchomienie JVM przez pakiet testowy - Java Technology Compatibility Kit (TCK) . Ten pakiet testowy NIE jest udostępniany na zasadach otwartych.

Możesz więc zbudować maszynę JVM, która zachowuje się bardzo podobnie do języka Java i być całkowicie otwartym oprogramowaniem, ale jeśli chcesz nazwać ją „Java JVM”, musisz kupić pakiet certyfikacyjny na licencji innej niż open source. Dla wielu zwolenników otwartego oprogramowania jest to kompletny program niezakończający.

James Anderson
źródło
7
To jeden z powodów, dla których Apache Harmony (która była dość kompletną, niezależną implementacją JVM) została zatrzymana . Szkoda, że ​​Sun / Oracle działało w ten sposób (i nadal działa w ten sposób). To, co zrobił Google („prawie skopiuj” Javę), jest prawdopodobnie bezpośrednim skutkiem tego.
Joachim Sauer
1
Ponadto pakietem testowym jest Java Platform TCK (istnieją również inne TCK dla technologii związanych z Javą).
Joachim Sauer
4
Ponadto, jeśli zbudujesz udaną maszynę JVM, Oracle może pozwać cię za naruszenie praw autorskich i patentowych . Jakby pozywali Google na Androida.
MarkJ
2
Czy prawo nazewnictwa jest odpowiednie do wywoływania czegoś typu open source? Nie mogę też stworzyć własnej przeglądarki i nazwać jej Firefox. Myślę, że w przypadku pytania pierwszą rzeczą jest zrozumienie ... co oznacza termin "Java" specyfikacja języka, implementacja jvm, ... i kto nazywa to non-open ...
johannes
@ johannes - witaj w otwartym domu pedantów i nitpickerów! Dla wielu członków społeczności open source te rozróżnienia są ważne. Świadek Apache porzuca projekt Harmony. Dla innych osób bardziej praktyczne jest posiadanie środowiska Java Like, które działa „wystarczająco dobrze”, jak Dalvik VM w sercu wszystkich urządzeń z Androidem.
James Anderson
15

Powinieneś przeczytać tę odpowiedź, zanim została usunięta, o której użyć. Główna odpowiedź brzmiała:

Jeśli chodzi o Javę 7, zauważ, że JDK7 i OpenJDK7 będą miały ( prawie ) identyczną bazę kodu.

Zwróć uwagę na prawie wyróżnione.

Z artykułu połączonego z tą odpowiedzią:

[…] Ale istnieje kod, w którym są zamienniki open source, w których nadal używamy starego zamkniętego kodu źródłowego. Dotyczy to przede wszystkim rasteryzacji czcionek i grafiki. Stary kod rasteryzacji z zamkniętym kodem źródłowym, mimo że jest obciążony, ma ponad 10 lat poprawiania błędów i dostrajania itp., A aby każda wymiana oprogramowania typu open source mogła zastąpić ten kod w produkowanych kompilacjach JDK, musiałaby być możliwa do udowodnienia, tak szybka i stabilna oraz dobra jakość jak istniejący kod zamknięty.

Również z FAQ Java :

Java Development Kit (JDK) można bezpłatnie pobrać i używać do programowania komercyjnego, ale nie do ponownej dystrybucji .

Więc nie jest open source . Właśnie prawie.

Ponadto, nawet gdyby był to całkowicie open source, model rozwoju i zarządzanie nim nie. Nie dotyczy to jednak kwestii licencjonowania.

Gallaecio
źródło
1
„bezpłatne pobieranie i używanie, ale nie rozpowszechnianie” oznacza, że ​​oprogramowanie nie jest „wolnym oprogramowaniem”, ale nadal może być „open source”. Otwarte źródło oznacza po prostu, że masz dostęp do kodu źródłowego. Wolne oprogramowanie (zgodnie z definicją FSF i innych) wymaga również prawa do redystrybucji.
CVn
6
@ MichaelKjörling Definicja OSI z pewnością wymaga praw do redystrybucji.
luiscubal
1

W 1997 r. Sun Microsystems zwrócił się do ECMA o sformalizowanie Javy, ale wkrótce wycofała się z procesu. Standard Java jest faktycznie kontrolowany przez proces Java Community Process .

Chociaż w 2006 r. Większość oprogramowania Java została wydana przez Sun Microsystems na warunkach GPL, ale obecne oficjalne wdrożenie jest własnością Oracle.

Ponieważ Java nie ma żadnej formalnej standaryzacji uznanej przez ECMA, ISO / IEC, ANSI lub inną organizację normalizującą strony trzecie, wdrożenie Oracle jest standardem defacto. Istnieją jednak alternatywne implementacje, takie jak GNU Compiler for Java, GNU Classpath, IcedTea-Web itp.

Sajad Deyargaroo
źródło
7
-1: Od wersji Java 7 oficjalną implementacją referencyjną jest OpenJDK GPL.
Michael Borgwardt,
2
Mówiąc o Javie, dostaniesz -1 :( OpenJDK jest open source, ale implementacją na Java.com jest BCL, jak wspomniano powyżej i tutaj . Po pierwsze, nie ma zmian w naszych zasadach w stosunku do Apache Harmony. OCTLA to program, który pozwala na darmowe dostęp do TCK dla implementacji OpenJDK licencjonowanych na licencji GPL i jest przeznaczony tylko do tego celu. Po drugie, implementacja Oracle (to, co znajdziesz na java.com lub java.oracle.com) pozostanie tylko na licencji BCL. Wreszcie, dla pełnego wyjaśnienia, kod źródłowy OpenJDK pozostaje na licencji GPL.
Sajad Deyargaroo,