human
Quelle est la différence entre le langage Java, les API Java et les bibliothèques de classes Java, et comment s'articulent-ils tous ? Cette question a été inspirée par la débâcle Oracle/Google. Explique comme si j'avais cinq ans.
gpt
Le langage Java est un langage de programmation informatique et je pense que les autres réponses l'ont assez bien compris. Aucune licence n'est requise pour développer quelque chose en Java. L'API Java en ce qui concerne votre question signifie l'environnement d'exécution Java (JRE). Il s'agit de l'ensemble de bibliothèques de base auquel toute personne qui programme en langage Java est censée avoir accès. Il s'agit essentiellement de tout ce qui est décrit dans [ cette page Javadoc ] ( URL_0 ) . Lorsque vous téléchargez Java à partir d'Oracle, c'est ce que vous obtenez. N'importe qui est libre d'écrire son propre JRE mais ce n'est pas une mince affaire. Sun (et maintenant Oracle) a toujours été le JRE standard, mais d'autres fournisseurs ont créé le leur, notamment BEA et IBM. Microsoft en avait un il y a quelque temps. Lorsque vous téléchargez le JRE, développez une application avec celui-ci et distribuez votre application avec une copie de ce JRE afin qu'elle puisse s'exécuter, vous êtes lié par les conditions de licence de la société qui a créé le JRE. C'est le problème que rencontre Google. Les bibliothèques de classes Java sont simplement des fichiers JAR (qui sont une archive de fichiers .class compilés et d'autres choses). Ils peuvent être écrits par n'importe qui. Le JRE est composé de bibliothèques de classes. Tout logiciel que je développe en Java est composé de bibliothèques de classes. Lorsque les gens parlent de bibliothèque, ils se réfèrent * généralement * à une distribution utile de code qui peut être importée dans divers projets pour faciliter les tâches de routine, comme avec l'API Apache Commons. Cependant , la bibliothèque est un terme vague et n'a pas à correspondre à ce sens . Donc, en ce qui concerne votre question, Google pourrait écrire ses propres bibliothèques de classes, mais ils ont toujours besoin que le JRE soit présent pour fonctionner.