web-dev-qa-db-fra.com

Quels étaient les packages d'API "de base" de Java 1.0?

En lisant l'affaire Google v Oracle, je suis tombé sur ces questions (apparemment du juge président)

...
Est-il convenu que ce qui suit est vrai, au moins depuis 1996?

Les éléments suivants étaient le noyau Java Interface de programmation d'application: Java.lang, Java.util et Java.io.

Le langage de programmation Java fait-il référence à ou requiert-il une méthode, une classe ou un package en dehors des trois ci-dessus?
...

source: Groklaw

Il y a évidemment beaucoup de ramifications juridiques, Google et Oracle sont probablement en désaccord sur certains points, et Je m'en fiche . 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 fait tout d'abord Java codage vers 2001 dans la version 1.3), dans la version 1.0 de Java était quelque chose de nécessaire en dehors de Java.lang, Java.util Et Java.io Pour compiler un programme Java Java?

Par exemple (en utilisant C # 5.0), le mot clé await dépend de Task<T> GetAwaiter() (entre autres). Le compilateur ne pouvait pas fonctionner selon les spécifications sans cette classe.

De manière équivalente, y avait-il des fonctionnalités d'exécution de base (comme ClassLoader *) qui dépendaient d'autres packages?

J'avoue que je demande par curiosité, exactement ce qui est nécessaire pour un minimum viable Java (le langage, en ignorant tous les éléments juridiques qui l'entourent) est intéressant.

* Je suppose que ClassLoader était même une fonctionnalité dans Java 1.0, il fait partie de la spécification dans 7. et probablement de nombreuses versions antérieures.

38
Kevin Montrose

Per Wikipedia , la première version officiellement publiée de Java était 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 connexe 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 rompu, retour ici )
  • Spécification de la machine virtuelle Java

Il apparaît pour télécharger ici les bits JDK 1.0.2

http://www.Pascal-man.com/download/download-jdk.shtml

Cela fonctionne pour moi au moment de la rédaction.

Java 1.0.2 on Windows 7 x64

VOYEZ LA PUISSANCE BRUTE NON MINIMÉE DE Java 1.0.2


Dans la spécification linguistique, les classes suivantes sont mentionnées (citation unique, citations non exhaustives):

  • Classe (section 4.3.1)
  • Chaîne (section 4.3.1)
  • Objet (section 4.3.2)
  • Aléatoire (section 4.4)
  • Fil (section 17.2)
  • ThreadGroup (section 17.2)
  • Jetable (article 11)
  • Erreur (section 11.2)
  • charges et charges d'erreurs, toutes sous Java.lang (section 11.5.2.1 - 11.5.2.2)
  • RuntimeException (section 11.2.1)
  • les "classes de tableaux", [I, etc. (section 10.8 )

... à quel point j'ai arrêté de chercher parce que, techniquement , [I, et. Al. ne sont pas dans le Java.lang, Java.util, ou Java.io paquets.

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

enter image description here

Le comportement est cohérent entre moderne et 1.0.2

enter image description here

55
Jeff Atwood

Il y avait moins d'une douzaine de packages dans le JDK d'origine - ces applets plus, awt, awt.peer. C'est peut-être ça! Il est absolument probable - certain à 99% - que ces trois packages incluaient toutes les classes qui étaient explicitement connues de la JVM principale elle-même, et qu'aucune classe en dehors de ces packages n'était mentionnée dans la spécification de langage.

Java.net a également été parmi les premiers packages disponibles et c'était génial depuis le début, en particulier avec la fonction de threading (maintenant le modèle Thread semble obsolète par rapport à ce que vous avez dans les langages plus récents, mais c'était super alors).

Je me souviens d'avoir codé un navigateur web (très incomplet, même par rapport à ce qui existait à l'époque) afin d'apprendre le 1.02 fraîchement publié et, juste après, un serveur d'applications web complet (toujours utilisé dans l'industrie). C'était bien avant l'api du servlet et tout le monde était persuadé que vous devez utiliser des frameworks lourds pour créer des applications http rapides et fiables en Java.

Avec Java.net (et le GC, et Threads, et exceptions et Java.util) Java était forcément un côté serveur technologique majeur (à l'opposé, Java.applet était douloureux car le premier jour...)

1
Denys Séguret

Java 1.0 avait exactement six packages de premier niveau: 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, Java Developers Almanac 1998

0
mrzzmr