Quels étaient les packages API «principaux» de Java 1.0?


38

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.utilet java.iode compiler un programme Java valide?

Par exemple (en utilisant C # 5.0), le awaitmot-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.


3
à l'époque où java était un langage simple ...
Jens Schauder

7
à l'époque où java
Sara Chipps

2
Pour votre information, le awaitmot-clé ne dépend pas Task<T>. La Taskclasse arrive juste pour satisfaire les choses que le awaitmot - clé ne dépend (une méthode appelée GetAwaiter()etc.).
Matt Hamilton

2
@Matt - corrigé, aurait dû aller avec yieldet IEnumerator ou quelque chose; tellement excité pour await.
Kevin Montrose

Donc, vous voulez essentiellement savoir à quelles classes java.lang.Object dépend en réalité dans le JDK 1, n'est-ce pas?
Scarfridge

Réponses:


55

Selon Wikipedia , la première version officiellement publiée de Java était la 1.0.2, le 23 janvier 1996.

La première version stable était le JDK 1.0.2. s'appelle Java 1

Il y a une archive de Java 1.0.2 et toute la documentation associée ici :

  • Référence de l'API JDK 1.0.2 (format livre)
  • Référence de l'API JDK 1.0.2 (format javadoc)
  • Tutoriel Java
  • Spécification du langage Java (lien brisé, wayback'd ici )
  • Spécification de la machine virtuelle Java

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.

Java 1.0.2 sur Windows 7 x64

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):

  • Classe (section 4.3.1)
  • String (section 4.3.1)
  • Objet (section 4.3.2)
  • Aléatoire (section 4.4)
  • Fil (section 17.2)
  • ThreadGroup (section 17.2)
  • Jetable (section 11)
  • Erreur (section 11.2)
  • charges et charges d'erreurs, toutes sous java.lang (sections 11.5.2.1 - 11.5.2.2)
  • RuntimeException (section 11.2.1)
  • les "classes de tableaux", [Ietc. (section 10.8 )

... à quel point je me suis arrêté à la recherche parce que, techniquement , [I, et. Al. ne sont pas dans les java.lang, java.utilou les java.iopaquets.

Exemple:

class Test {
  // Compare namespaces of built-ins object and int[]
  public static void main(String[] args){
    int[] arr = new int[0];
    Object obj = new Object();

    Class arrClass = arr.getClass();
    Class objClass = obj.getClass();

    Class arrSuper = arrClass.getSuperclass();

    System.out.println("plain jane Object - " + objClass.getName());
    System.out.println();
    System.out.println("int[] - "+arrClass.getName());
    System.out.println("super of int[] - "+arrSuper.getName());
  }
}

Les sorties

entrez la description de l'image ici

Le comportement est cohérent entre moderne et 1.0.2

entrez la description de l'image ici


Gold Google-fu encore une fois.
Kevin Montrose


@ YannisRizos Vous et moi les deux. C'était mon premier navigateur web.
Ingénieur du monde

@WorldEngineer: Je vous donne la mosaïque .
sbi


2

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.


1

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 ...)


0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.