En lisant l'affaire Google v Oracle, je suis tombé sur ces questions (apparemment du juge qui présidait)
...
Est-il convenu que ce qui suit est vrai, au moins à partir de 1996?Les éléments suivants constituaient l’interface de programmation d’application Java principale: java.lang, java.util et java.io.
Le langage de programmation Java fait-il référence ou nécessite-t-il une méthode, une classe ou un package en dehors des trois précédents?
...
source: Groklaw
Il y a évidemment beaucoup de ramifications juridiques, Google et Oracle sont probablement en désaccord sur certains points, et cela m'est égal . Laissez la loi aux avocats.
Cependant, je soupçonne qu'il y a un peu d'histoire intéressante ici.
Ma question est (comme quelqu'un qui a d' abord fait une Java de codage vers 2001 dans la version 1.3), dans la version 1.0 de Java a été quelque chose nécessaire en dehors de java.lang
, java.util
et java.io
de compiler un programme Java valide?
Par exemple (en utilisant C # 5.0), le await
mot-clé dépend (entre autres). Le compilateur ne pourrait pas fonctionner sans cette classe.Task<T>
GetAwaiter()
De manière équivalente, y a-t-il des fonctionnalités d'exécution principales (telles que ClassLoader *) qui dépendent d'autres packages?
J'admets que je demande par curiosité ce qui est nécessaire pour que Java soit viable au minimum (le langage, ignorant tous les éléments légaux qui l'entourent) est intéressant.
* Je suppose que ClassLoader était même une fonctionnalité de Java 1.0, qu'elle faisait partie des spécifications de la version 7.0 et probablement de nombreuses versions antérieures.
await
mot-clé ne dépend pasTask<T>
. LaTask
classe arrive juste pour satisfaire les choses que leawait
mot - clé ne dépend (une méthode appeléeGetAwaiter()
etc.).yield
et IEnumerator ou quelque chose; tellement excité pourawait
.Réponses:
Selon Wikipedia , la première version officiellement publiée de Java était la 1.0.2, le 23 janvier 1996.
Il y a une archive de Java 1.0.2 et toute la documentation associée ici :
Il semble y avoir un téléchargement des bits JDK 1.0.2 ici
http://www.pascal-man.com/download/download-jdk.shtml
Cela fonctionne pour moi au moment de l'écriture.
VOICI LA PUISSANCE BRUTE ET MINIMITÉE DE JAVA 1.0.2
Dans la spécification de langue, il est fait référence aux classes suivantes (citation simple, citations non exhaustives):
[I
etc. (section 10.8 )... à quel point je me suis arrêté à la recherche parce que, techniquement ,
[I
, et. Al. ne sont pas dans lesjava.lang
,java.util
ou lesjava.io
paquets.Exemple:
Les sorties
Le comportement est cohérent entre moderne et 1.0.2
la source
Il y avait moins d'une douzaine de paquets dans le JDK d'origine - plus l'applet, awt, awt.peer. C'est peut-être ça! Il est tout à fait probable - à 99% - que ces trois packages incluent toutes les classes explicitement connues de la machine virtuelle Java principale, et qu'aucune classe en dehors de ces packages ne soit mentionnée dans les spécifications de langue.
la source
java.net figurait également parmi les premiers packages disponibles et il était excellent dès le départ, en particulier avec la fonction de threading (le modèle Thread semble désormais obsolète par rapport à ce que vous avez dans les langues plus récentes, mais il était excellent à ce moment-là).
Je me souviens d’avoir codé un navigateur Web (très incomplet, même par rapport à ce qui existait à l’époque) pour apprendre la version 1.02 récemment publiée et, juste après, un serveur d’applications Web complet (toujours utilisé dans l’industrie). C'était bien avant l'API Servlet et tout le monde était persuadé qu'il fallait utiliser de lourds frameworks pour créer des applications http rapides et fiables en Java.
Avec java.net (et le catalogue général, ainsi que Threads, et exceptions et java.util), java était forcément un serveur technologique majeur (à l'opposé, java.applet était pénible depuis le premier jour ...)
la source
Java 1.0 comportait exactement six packages de niveau supérieur: java.applet, java.awt (avec les sous-packages java.awt.image et java.awt.peer), java.io, java.lang, java.net et java.util. C'est ça. Source: Patrick Chan, Almanach des développeurs Java 1998
la source