Was waren die "Kern" -API-Pakete von Java 1.0?

38

Als ich über den Fall Google v Oracle las, stieß ich auf diese Fragen (anscheinend vom Vorsitzenden Richter)

...
Ist man sich einig, dass zumindest ab 1996 Folgendes zutrifft?

Die folgenden waren die Hauptschnittstelle für die Java-Anwendungsprogrammierung: java.lang, java.util und java.io.

Bezieht sich die Java-Programmiersprache auf eine Methode, Klasse oder ein Paket außerhalb der drei oben genannten?
...

Quelle: Groklaw

Es gibt offensichtlich viele rechtliche Konsequenzen, Google und Oracle sind sich in einigen Punkten wahrscheinlich nicht einig, und es ist mir egal . Überlassen Sie das Gesetz den Anwälten.

Ich vermute jedoch, dass es hier ein interessantes Stück Geschichte gibt.

Meine Frage ist (als jemand, der zum ersten Mal eine Java-Codierung um 2001 in Version 1.3 durchgeführt hat), ob in Version 1.0 von Java irgendetwas außerhalb von erforderlich java.langwar java.util, und java.ioum ein gültiges Java-Programm zu kompilieren?

Als Beispiel (unter Verwendung von C # 5.0) ist das awaitSchlüsselwort (unter anderem) abhängig von . Der Compiler könnte ohne diese Klasse nicht funktionieren.Task<T> GetAwaiter()

Gab es auch Kernfunktionen zur Laufzeit (wie ClassLoader *), die von anderen Paketen abhängig waren?

Ich gebe zu, ich frage aus Neugier, was genau für ein Minimum an Java (die Sprache, die alle rechtlichen Aspekte ignoriert) von Interesse ist.

* Ich gehe davon aus, dass ClassLoader sogar ein Feature in Java 1.0 war, es ist Teil der Spezifikation in 7.0 und vermutlich in vielen früheren Versionen.

Kevin Montrose
quelle
3
Damals war Java eine einfache Sprache ...
Jens Schauder
7
Zurück in den Tagen, als Java
Sara Chipps
2
Zu Ihrer Information, das awaitSchlüsselwort hängt nicht davon ab Task<T>. Die TaskKlasse passiert einfach , die Dinge zu überzeugen , dass das awaitSchlüsselwort nicht davon ab , (eine Methode namens GetAwaiter()usw.).
Matt Hamilton
2
@Matt - korrigiert, sollte mit yieldund IEnumerator oder so gegangen sein ; einfach so aufgeregt await.
Kevin Montrose
Sie möchten also im Grunde wissen, von welchen Klassen java.lang.Object in JDK 1 tatsächlich abhing, oder?
scarfridge

Antworten:

55

Per Wikipedia war die erste offiziell veröffentlichte Version von Java 1.0.2 am 23. Januar 1996.

Die erste stabile Version war das JDK 1.0.2. heißt Java 1

Es gibt ein Archiv von Java 1.0.2 und alle zugehörigen Dokumentationen hier :

  • JDK 1.0.2 API-Referenz (Buchformat)
  • JDK 1.0.2 API-Referenz (Javadoc-Format)
  • Java-Tutorial
  • Java-Sprachspezifikation (Link unterbrochen, hier zurückgesetzt )
  • Java Virtual Machine-Spezifikation

Hier scheint es einen Download der JDK 1.0.2-Bits zu geben

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

Es funktioniert bei mir zum Zeitpunkt des Schreibens.

Java 1.0.2 unter Windows 7 x64

BEACHTEN SIE DIE ROHE UNBEFEHLTE KRAFT VON JAVA 1.0.2


In der Sprachspezifikation wird auf die folgenden Klassen verwiesen (Einzelzitate, keine erschöpfenden Zitate):

  • Klasse (Abschnitt 4.3.1)
  • String (Abschnitt 4.3.1)
  • Objekt (Abschnitt 4.3.2)
  • Zufällig (Abschnitt 4.4)
  • Thread (Abschnitt 17.2)
  • ThreadGroup (Abschnitt 17.2)
  • Werfbar (Abschnitt 11)
  • Fehler (Abschnitt 11.2)
  • viele und viele Fehler, alles unter java.lang (Abschnitt 11.5.2.1 - 11.5.2.2)
  • RuntimeException (Abschnitt 11.2.1)
  • die "Array-Klassen" [Iusw. (Abschnitt 10.8 )

... an welcher Stelle ich aufgehört suchen , weil, technisch , [Iet. al. ist nicht in den java.lang, java.utiloder java.ioPaketen.

Beispiel:

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());
  }
}

Ausgänge

Bildbeschreibung hier eingeben

Das Verhalten ist konsistent zwischen modern und 1.0.2

Bildbeschreibung hier eingeben

Jeff Atwood
quelle
Schon wieder Gold für Google-Fu.
Kevin Montrose
@YannisRizos Du und ich beide. Das war mein erster Webbrowser.
Ingenieur Welt
@WorldEngineer: Ich gebe dir Mosaik .
sbi
2

Es gab weniger als ein Dutzend Pakete im ursprünglichen JDK - diese plus Applet, awt, awt.peer. Das könnte es gewesen sein! Es ist absolut wahrscheinlich - zu 99% sicher -, dass diese drei Pakete alle Klassen enthielten, die der zentralen JVM selbst explizit bekannt waren, und dass es keine Klassen außerhalb dieser Pakete gab, die in der Sprachspezifikation erwähnt wurden.

Ernest Friedman-Hill
quelle
1

java.net gehörte auch zu den ersten verfügbaren Paketen und war von Anfang an großartig, insbesondere mit der Threading-Funktion (jetzt scheint das Thread-Modell veraltet zu sein, verglichen mit dem, was Sie in neueren Sprachen haben, aber es war großartig).

Ich erinnere mich, dass ich einen Webbrowser codiert hatte (sehr unvollständig, selbst im Vergleich zu dem, was zu der Zeit existierte), um den frisch veröffentlichten 1.02 und kurz darauf einen kompletten Webanwendungsserver (der noch in der Industrie verwendet wird) zu erlernen. Das war lange bevor die Servlet-API und alle davon überzeugt waren, dass Sie schwere Frameworks verwenden müssen, um schnelle und zuverlässige http-Anwendungen in Java zu erstellen.

Mit java.net (und dem GC und Threads und Exceptions und java.util) war Java zwangsläufig eine wichtige Technologieserverseite (auf der anderen Seite war java.applet seit dem ersten Tag schmerzhaft ...).

Denys Séguret
quelle
0

Java 1.0 hatte genau sechs Pakete der obersten Ebene: java.applet, java.awt (mit den Unterpaketen java.awt.image und java.awt.peer), java.io, java.lang, java.net und java.util. Das ist es. Quelle: Patrick Chan, Java-Entwickler-Almanach 1998

mrzzmr
quelle