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

38

Leggendo del caso Google contro Oracle, mi sono imbattuto in queste domande (apparentemente dal Giudice presidenziale)

...
Is it agreed that the following is true, at least as of 1996?

The following were the core Java Application Programming Interface: java.lang, java.util and java.io.

Does the Java programming language refer to or require any method, class or package outside the above three?
...

fonte: Groklaw

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

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

La mia domanda è (come qualcuno che per prima ha fatto una codifica Java intorno al 2001 nella versione 1.3), nella versione 1.0 di Java era tutto richiesto al di fuori di java.lang , java.util e java.io per compilare un programma Java valido ?

Ad esempio (utilizzando C # 5.0), await la parola chiave dipende da Task<T> GetAwaiter() (tra le altre cose). Il compilatore non può funzionare con le specifiche senza quella classe.

Equivalentemente, esistevano funzionalità di runtime di base (come ClassLoader *) che dipendevano da altri pacchetti?

Devo ammettere che lo chiedo per curiosità, esattamente ciò che è necessario per Java minimo vitale (il linguaggio, ignorando tutti i bit legali che lo circondano) è interessante.

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

    
posta Kevin Montrose 04.05.2012 - 06:57
fonte

4 risposte

55

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

The first stable version was the JDK 1.0.2. is called Java 1

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

  • JDK 1.0.2 API reference (book format)
  • JDK 1.0.2 API reference (javadoc format)
  • Java tutorial
  • Java language specification (link broken, wayback'd here)
  • Java virtual machine specification

appare come download dei bit JDK 1.0.2 qui

link

Funziona per me al momento della scrittura.

ECCOILPOTERESENZAIDONEITÀDIJAVA1.0.2

Nellespecifichedellinguaggio,leseguenticlassisonoriferitea(citazionesingola,citazioninonesaustive):

  • Classe(sezione4.3.1)
  • Stringa(sezione4.3.1)
  • Oggetto(sezione4.3.2)
  • Casuale(sezione4.4)
  • Discussione(sezione17.2)
  • ThreadGroup(sezione17.2)
  • Throwable(sezione11)
  • Errore(sezione11.2)
  • carichiecarichidierrori,tuttosottojava.lang(sezione11.5.2.1-11.5.2.2)
  • RuntimeException(sezione11.2.1)
  • le"classi di array", [I e così via (sezione 10.8 )

... A quel punto ho smesso di cercare perché tecnicamente , [I , et. al. non sono nei pacchetti java.lang , java.util o java.io .

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

Ilcomportamentoècoerentetramodernoe1.0.2

    
risposta data 04.05.2012 - 07:50
fonte
2

C'erano meno di una dozzina di pacchetti nel JDK originale - questi più applet, awt, awt.peer. Potrebbe essere stato così! È assolutamente probabile - il 99% certo - che questi tre pacchetti includessero tutte le classi che erano esplicitamente note alla JVM stessa, e che non ci fossero classi al di fuori di questi pacchetti menzionati nelle specifiche del linguaggio.

    
risposta data 04.05.2012 - 07:06
fonte
1

java.net è stato anche tra i primi pacchetti disponibili ed è stato fantastico sin dall'inizio, specialmente con la funzione di threading (ora il modello Thread appare 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 in quel momento) per apprendere l'appena pubblicato 1.02 e, subito dopo, un server di applicazioni Web completo (ancora utilizzato nell'industria). È passato molto tempo prima che l'API servlet e tutti fossero persuasi che è necessario utilizzare framework pesanti per realizzare applicazioni http veloci e affidabili in java.

Con java.net (e GC, e Thread, ed eccezioni e java.util) java era destinato ad essere un lato importante del server tecnologico (sul lato opposto, java.applet era doloroso dal primo giorno ... )

    
risposta data 04.05.2012 - 09:29
fonte
0

Java 1.0 aveva esattamente sei pacchetti di primo livello: java.applet, java.awt (con sottopackages 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

    
risposta data 15.06.2015 - 21:46
fonte

Leggi altre domande sui tag