Java è gratuito / open source o no?


33

Il 13 novembre 2006, Sun ha rilasciato gran parte di Java come software gratuito e open source (FOSS), secondo i termini della GNU General Public License (GPL). L'8 maggio 2007, Sun ha terminato il processo, rendendo tutto il codice principale di Java disponibile in termini di distribuzione di software libero / open-source , a parte una piccola porzione di codice su cui Sun non deteneva il copyright.

OpenJDK (Open Java Development Kit) è un'implementazione gratuita e open source del linguaggio di programmazione Java. È il risultato di uno sforzo iniziato da Sun Microsystems nel 2006. L'implementazione è sotto licenza GNU General Public License (GNU GPL) con un'eccezione di collegamento.

  • Perché ci sono ancora persone che affermano che Java non è open source o libero come nella libertà di parola?
  • Mi sto perdendo qualcosa?
  • Java è ancora proprietario?


Non so esattamente se solo l'implementazione di Sun JVM o anche la tecnologia (bytecode) sia protetta, ma tutte le librerie principali (java.xy) sono gratuite. Quindi, se qualcuno crea un bytecode e una VM con codice diverso, dovrebbe usare gratuitamente le librerie esistenti. Spiacenti, Google l'ha fatto con Dalvik!
ern0

Risposte:


37

Il problema è che per chiamare qualcosa "Java" è necessario ottenere la certificazione conforme alle specifiche Java.

Uno dei prerequisiti per ottenere questa certificazione è l'esecuzione di JVM attraverso una suite di test - Java Technology Compatibility Kit (TCK) . Questa suite di test NON è open source.

Quindi puoi costruire una JVM che si comporta in modo molto simile a Java ed essere completamente open source, ma, se vuoi chiamarla "JVM Java", devi acquistare la suite di certificazione con una licenza non open source. Per molti sostenitori dell'open source questo è un completo non avviatore.


7
Questo è uno dei motivi per cui Apache Harmony (che era un'implementazione JVM abbastanza completa e indipendente) è stata interrotta . È davvero un peccato che Sun / Oracle abbiano agito in questo modo (e ancora agiscano in questo modo). Ciò che Google ha fatto ("quasi copiare" Java) è probabilmente anche un risultato diretto di questo.
Joachim Sauer,

1
Inoltre, la suite di test è la piattaforma Java TCK (esistono anche altri TCK per le tecnologie correlate a Java).
Joachim Sauer,

4
Inoltre, se costruisci una JVM di successo, Oracle potrebbe farti causa per violazione del copyright e violazione dei brevetti . Come se avessero fatto causa a Google su Android.
MarkJ,

2
La legge sulla denominazione è rilevante per chiamare qualcosa di opensource? Non riesco a creare il mio browser e nemmeno a chiamarlo Firefox. Penso che per la domanda la prima cosa sia capirlo ... cosa si intende con il termine "Java" la specifica del linguaggio, l'implementazione jvm, ... e chi lo chiama non aperto ...
johannes

@johannes - benvenuti nella casa open source di pedanti e nitpicker! Per molti nella comunità open source queste distinzioni sono importanti. Testimone Apache che abbandonano il progetto Harmony. Per gli altri di una piega più pratica con un ambiente Java Like che funziona è "abbastanza buono" come la VM Dalvik nel cuore di tutti i dispositivi Android.
James Anderson,

15

Avresti dovuto leggere questa risposta prima che fosse rimossa su quale usare. La risposta principale affermava:

A proposito di Java 7, nota che JDK7 e OpenJDK7 avranno una base di codice ( quasi ) identica.

Si noti il quasi che ho evidenziato.

Dall'articolo collegato da quella risposta:

[…] Ma esiste un codice in cui esistono sostituzioni open source in cui utilizziamo ancora il vecchio codice sorgente chiuso. Questo è principalmente nella rasterizzazione di font e grafica. Il vecchio codice di rasterizzazione a codice chiuso, pur essendo gravato da ingombri, ha avuto più di 10 anni di correzione di bug e messa a punto, ecc. E, affinché qualsiasi sostituzione open source sostituisca quel codice in build JDK prodotte, dovrebbe essere dimostrabilmente veloce e stabile e buona qualità come il codice chiuso esistente.

Inoltre, dalle domande frequenti su Java :

Il Java Development Kit (JDK) è scaricabile e utilizzabile gratuitamente per la programmazione commerciale, ma non da ridistribuire .

Quindi, non open source . Quasi.

Inoltre, anche se fosse completamente open source, il modello di sviluppo e la governance no. Questo non è un problema di licenza, però.


1
"gratuito da scaricare e utilizzare ma non ridistribuire" significa che il software non è "software libero", ma può comunque essere "open source". L'open source implica semplicemente che hai accesso al codice sorgente. Anche il software libero (come definito da FSF e altri) richiede il diritto di ridistribuire.
un CVn

6
@ MichaelKjörling La definizione OSI richiede certamente diritti di ridistribuzione.
luiscubal,

1

Nel 1997, Sun Microsystems si avvicinò all'ECMA per formalizzare Java ma presto si ritirò dal processo. Lo standard Java è attualmente controllato tramite Java Community Process .

Sebbene nel 2006, la maggior parte di Java sia stata rilasciata da Sun Microsystems secondo i termini di GPL, ma l'attuale implementazione ufficiale è di proprietà di Oracle.

Poiché Java non ha alcuna standardizzazione formale riconosciuta da ECMA, ISO / IEC, ANSI o altre organizzazioni di standard di terze parti, l'implementazione Oracle è lo standard defacto. Tuttavia, ci sono implementazioni alternative come GNU Compiler per Java, GNU Classpath, IcedTea-Web, ecc.


7
-1: da Java 7, l'implementazione ufficiale di riferimento è OpenJDK della GPL.
Michael Borgwardt,

2
Parlando di Java, otterrai -1 :( OpenJDK è open source ma l'implementazione su Java.com è BCL, come menzionato sopra e qui . In primo luogo, non vi è alcuna modifica alla nostra politica rispetto ad Apache Harmony. OCTLA è un programma che consente gratuitamente l'accesso al TCK per implementazioni derivate da OpenJDK concesse in licenza in base a GPL ed è destinato esclusivamente a tale scopo. In secondo luogo, l'implementazione Oracle (che trovi su java.com o java.oracle.com) rimarrà sotto la licenza BCL. Infine, per essere completamente chiari, il codice sorgente OpenJDK rimane sotto licenza GPL
Sajad Deyargaroo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.