Java est-il libre / open source ou non?

33

Le 13 novembre 2006, Sun a publié une grande partie de Java en tant que logiciel libre et à code source libre (FOSS), sous les termes de la licence GNU General Public License (GPL). Le 8 mai 2007, Sun a terminé le processus en rendant tout le code principal de Java disponible sous les conditions de distribution de logiciel libre / source ouverte , à l'exception d'une petite partie du code sur laquelle Sun ne détenait pas le droit d'auteur.

OpenJDK (Open Java Development Kit) est une implémentation libre et open source du langage de programmation Java. C'est le résultat d'un effort entrepris par Sun Microsystems en 2006. L'implémentation est sous licence GNU GPL (GNU General Public License) avec une exception de liaison.

  • Pourquoi y a-t-il encore des gens qui disent que Java n'est pas open source ou libre comme dans le cas de la liberté d'expression?
  • Est-ce que je manque quelque chose?
  • Java est-il toujours propriétaire?
Tulains Córdova
la source
Je ne sais pas exactement si seule la mise en œuvre Sun JVM ou même la technologie (bytecode) est protégée, mais toutes les bibliothèques principales (java.xy) sont gratuites. Ainsi, si quelqu'un crée des spécifications de bytecode et une machine virtuelle différentes, il doit utiliser les bibliothèques existantes gratuitement. Oups, Google l'a fait avec Dalvik!
ern0

Réponses:

37

Le problème est que pour appeler quelque chose "Java", vous devez le faire certifier conforme aux spécifications Java.

L’une des conditions préalables à l’obtention de cette certification est l’exécution de votre machine virtuelle Java via une suite de tests - le kit de compatibilité de la technologie Java (TCK) . Cette suite de tests n'est PAS une source ouverte.

Vous pouvez donc construire une machine virtuelle Java qui se comporte de manière très Java et être entièrement open source, mais si vous souhaitez l'appeler une "machine virtuelle Java", vous devez acheter la suite de certification sous une licence non open source. Pour beaucoup de partisans de l'open source, c'est un non-débutant.

James Anderson
la source
7
C'est l'une des raisons pour lesquelles Apache Harmony (implémentation relativement complète et indépendante de la machine virtuelle Java) a été arrêté . C'est vraiment dommage que Sun / Oracle ait agi de la sorte (et agisse toujours de cette façon). Ce que Google a fait ("presque copier" Java) en est probablement aussi une conséquence directe.
Joachim Sauer
1
En outre, la suite de tests est la plate-forme Java TCK (il existe d'autres TCK pour les technologies associées à Java).
Joachim Sauer
4
De plus, si vous construisez une machine virtuelle Java avec succès, Oracle peut vous poursuivre en justice pour violation du droit d'auteur et du brevet . Comme ils ont poursuivi Google sur Android.
MarkJ
2
La loi sur les noms est-elle pertinente pour appeler quelque chose open source? Je ne peux pas créer mon propre navigateur et l'appeler firefox non plus. Je pense que pour la question, la première chose à faire est de comprendre ... que signifie le terme "Java", la spécification du langage, l'implémentation de JVM, ... et qui l'appelle non-ouvert ...
johannes
@johannes - bienvenue dans le monde open source de pédants et de nitpickers! Pour beaucoup dans la communauté open source, ces distinctions sont importantes. Témoin Apaches abandonnant le projet Harmony. Pour les autres, plus orientés sur la pratique, avoir un environnement Java Like qui fonctionne est "assez bon" comme le Dalvik VM au cœur de tous les appareils Android.
James Anderson
15

Vous auriez dû lire cette réponse avant qu'elle ne soit supprimée. La réponse principale a déclaré:

À propos de Java 7, notez que JDK7 et OpenJDK7 auront une base de code ( presque ) identique.

Remarquez le presque j'ai mis en évidence.

De l'article lié à cette réponse:

[…] Mais il existe un code dans lequel il existe des remplacements open source dans lesquels nous utilisons encore l'ancien code source fermé. Ceci concerne principalement la pixellisation des polices et des graphiques. L'ancien code de rastérisation à source fermée, bien qu'encombré, a plus de 10 ans de résolution de bogues et de mise au point, etc. bonne qualité que le code fermé existant.

En outre, à partir de la FAQ Java :

Le kit de développement Java (JDK) est gratuit à télécharger et à utiliser pour la programmation commerciale, mais pas à redistribuer .

Donc, pas open source . Juste presque.

En outre, même s'il était complètement open source, le modèle de développement et la gouvernance ne le seraient pas. Ce n'est pas un problème de licence, cependant.

Gallaecio
la source
1
"gratuit à télécharger et à utiliser mais pas à redistribuer" signifie que le logiciel n'est "pas un logiciel libre", mais qu'il peut toujours être "open source". Open source implique simplement que vous avez accès au code source. Le logiciel libre (tel que défini par la FSF et d’autres) nécessite également le droit de redistribuer.
un CVn
6
@ MichaelKjörling La définition OSI nécessite certainement des droits de redistribution.
luiscubal
1

En 1997, Sun Microsystems a contacté l'ECMA pour formaliser Java, mais celui-ci s'est rapidement retiré du processus. Le standard Java est contrôlé par Java Community Process .

Bien qu'en 2006, la plus grande partie de Java ait été publiée par Sun Microsystems aux termes de la GPL, mais la mise en œuvre officielle actuelle appartient à Oracle.

Comme Java ne dispose d'aucune normalisation officielle reconnue par l'ECMA, l'ISO / CEI, l'ANSI ou toute autre organisation de normalisation tierce, l'implémentation Oracle est la norme de facto. Cependant, il existe d'autres implémentations telles que GNU Compiler for Java, GNU Classpath, IcedTea-Web, etc.

Sajad Deyargaroo
la source
7
-1: Depuis Java 7, l'implémentation de référence officielle est OpenJDK de la GPL.
Michael Borgwardt
2
Parlez de Java, vous obtiendrez -1 :( OpenJDK est open source, mais la mise en oeuvre sur Java.com est BCL, comme mentionné ci-dessus et ici . Premièrement, notre politique vis-à-vis de Apache Harmony n’a pas changé. OCTLA est un programme qui permet de L'accès aux implémentations dérivées de TCK pour OpenJDK sous licence GPL est uniquement destiné à cet usage. Deuxièmement, l'implémentation Oracle (ce que vous trouvez sur java.com ou java.oracle.com) restera sous licence BCL uniquement. pour être complètement clair, le code source OpenJDK reste sous GPL
Sajad Deyargaroo 11/12