Quali erano i pacchetti API "core" di Java 1.0?


38

Leggendo il caso Google v Oracle, mi sono imbattuto in queste domande (apparentemente dal giudice presiedente)

...
È concordato che quanto segue sia vero, almeno a partire dal 1996?

Quelli che seguono erano l'interfaccia di programmazione dell'applicazione Java principale: java.lang, java.util e java.io.

Il linguaggio di programmazione Java fa riferimento o richiede alcun metodo, classe o pacchetto al di fuori dei tre precedenti?
...

fonte: Groklaw

Ci sono ovviamente molte conseguenze legali, Google e Oracle probabilmente non sono d'accordo su alcuni punti, e non mi interessa . Lascia la legge agli avvocati.

Tuttavia, sospetto che ci sia un po 'di storia interessante qui.

La mia domanda è (come qualcuno che per primo ha fatto qualsiasi Java codifica intorno al 2001 nella versione 1.3), nella versione 1.0 di Java è stato qualcosa di necessario al di fuori di java.lang, java.utile java.ioper compilare un programma Java valida?

Ad esempio (usando C # 5.0), la awaitparola chiave dipende (tra le altre cose). Il compilatore non potrebbe funzionare secondo le specifiche senza quella classe.Task<T> GetAwaiter()

Equivalentemente, c'erano delle funzionalità di runtime di base (come ClassLoader *) che dipendevano da altri pacchetti?

Devo ammettere che chiedo per curiosità, esattamente cosa è necessario per Java minimamente praticabile (il linguaggio, ignorando tutti i bit legali che lo circondano) è interessante.

* Suppongo che ClassLoader fosse persino una funzionalità di Java 1.0, fa parte delle specifiche in 7.0 e presumibilmente molte versioni precedenti.


3
ai tempi in cui java era un linguaggio semplice ...
Jens Schauder,

7
ai tempi in cui java
Sara Chipps

2
Cordiali saluti, la awaitparola chiave non dipende Task<T>. La Taskclasse succede solo a soddisfare le cose che la awaitparola chiave non dipende (un metodo chiamato GetAwaiter(), ecc).
Matt Hamilton,

2
@Matt - corretto, avrebbe dovuto andare con yieldIEnumerator o qualcosa del genere; così eccitato per await.
Kevin Montrose

Quindi sostanzialmente vuoi sapere su quali classi java.lang.Object dipendeva effettivamente da JDK 1, giusto?
scarfridge,

Risposte:


55

Per Wikipedia , la prima versione formalmente rilasciata di Java era la 1.0.2, il 23 gennaio 1996.

La prima versione stabile è stata la JDK 1.0.2. si chiama Java 1

C'è un archivio di Java 1.0.2 e tutta la documentazione relativa qui :

  • Riferimento API JDK 1.0.2 (formato libro)
  • Riferimento API JDK 1.0.2 (formato javadoc)
  • Tutorial Java
  • Specifica del linguaggio Java (collegamento interrotto, percorso qui )
  • Specifiche della macchina virtuale Java

Sembra che ci sia un download dei bit JDK 1.0.2 qui

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

Funziona per me al momento della scrittura.

Java 1.0.2 su Windows 7 x64

DIVENTATO IL POTERE IMMEDIATO GREZZO DI JAVA 1.0.2


Nelle specifiche della lingua, si fa riferimento alle seguenti classi (citazione singola, citazioni non esaustive):

  • Classe (sezione 4.3.1)
  • String (sezione 4.3.1)
  • Oggetto (sezione 4.3.2)
  • Casuale (sezione 4.4)
  • Discussione (sezione 17.2)
  • ThreadGroup (sezione 17.2)
  • Gettabile (sezione 11)
  • Errore (sezione 11.2)
  • un sacco di errori, tutto sotto java.lang (sezione 11.5.2.1 - 11.5.2.2)
  • RuntimeException (sezione 11.2.1)
  • le "classi di array" [Ie così via (sezione 10.8 )

... a quel punto ho smesso di guardare, perché, tecnicamente , [I, et. al. Non sono nelle java.lang, java.utilo java.iopacchetti.

Esempio:

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

Uscite

inserisci qui la descrizione dell'immagine

Il comportamento è coerente tra moderno e 1.0.2

inserisci qui la descrizione dell'immagine


Google-fu d'oro ancora una volta.
Kevin Montrose


@YannisRizos Io e te entrambi. Quello è stato il mio primo browser web.
Ingegnere mondiale

@WorldEngineer: ti do Mosaic .
sbi,


2

C'erano meno di una dozzina di pacchetti nel JDK originale - questi più applet, awt, awt.peer. Potrebbe essere stato! È assolutamente probabile - il 99% certo - che questi tre pacchetti includessero tutte le classi che erano esplicitamente conosciute dal core JVM stesso e che non c'erano classi al di fuori di questi pacchetti menzionate nelle specifiche del linguaggio.


1

java.net è stato anche tra i primi pacchetti disponibili ed è stato fantastico sin dall'inizio, soprattutto con la funzione di threading (ora il modello di thread sembra obsoleto rispetto a quello che hai nelle lingue più recenti ma è stato fantastico allora).

Ricordo di aver codificato un browser web (molto incompleto, anche rispetto a quello che esisteva al momento) per apprendere la 1.02 appena pubblicata e, subito dopo, un server di applicazioni web completo (ancora usato nell'industria). Questo è accaduto molto tempo prima che il servlet api e tutti venissero persuasi che è necessario utilizzare framework pesanti per creare applicazioni http veloci e affidabili in Java.

Con java.net (e il GC, i thread, le eccezioni e java.util) java era destinato a diventare un importante server tecnologico (dal lato opposto, java.applet era doloroso dal primo giorno ...)


0

Java 1.0 aveva esattamente sei pacchetti di livello superiore: java.applet, java.awt (con i pacchetti secondari java.awt.image e java.awt.peer), java.io, java.lang, java.net e java.util. Questo è tutto. Fonte: Patrick Chan, Java Developers Almanac 1998

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.