¿Cuáles eran los paquetes de API "core" de Java 1.0?

38

Al leer sobre el caso Google v Oracle, encontré estas preguntas (aparentemente del juez que las preside)

  

...
  ¿Se acuerda que lo siguiente es cierto, al menos a partir de 1996?

     

Los siguientes fueron la interfaz de programación de aplicaciones Java: java.lang, java.util y java.io.

     

¿El lenguaje de programación Java se refiere o requiere algún método, clase o paquete fuera de los tres anteriores?
  ...

fuente: Groklaw

Obviamente hay muchas ramificaciones legales, Google y Oracle probablemente no estén de acuerdo en algunos puntos, y no me importa . Dejar la ley a los abogados.

Sin embargo, sospecho que hay un poco de historia interesante aquí.

Mi pregunta es (como alguien que hizo primero una codificación Java alrededor de 2001 en la versión 1.3), en la versión 1.0 de Java se requería algo fuera de java.lang , java.util y java.io para compilar un programa Java válido ?

Como ejemplo (usando C # 5.0), await la palabra clave depende de Task<T> GetAwaiter() (entre otras cosas). El compilador no podría funcionar a especificación sin esa clase.

De manera equivalente, hubo funciones de tiempo de ejecución principales (como ClassLoader *) que dependían de otros paquetes?

Admito que pregunto por curiosidad, exactamente lo que es necesario para una Java con un mínimo de viabilidad (el lenguaje, ignorando todos los bits legales que la rodean) es interesante.

* Supongo que ClassLoader era incluso una característica en Java 1.0, es parte de especificación en 7.0 y probablemente muchas versiones anteriores.

    
pregunta Kevin Montrose 04.05.2012 - 06:57

4 respuestas

55

Según Wikipedia , la primera versión oficial de Java fue 1.0.2, el 23 de enero de 1996.

  

La primera versión estable fue la JDK 1.0.2. se llama Java 1

Hay un archivo de Java 1.0.2 y toda la documentación relacionada aquí :

  
  • JDK 1.0.2 referencia de API (formato de libro)
  •   
  • JDK 1.0.2 referencia de API (formato javadoc)
  •   
  • tutorial de Java
  •   
  • especificación del lenguaje Java (enlace roto, wayback'd aquí )
  •   
  • especificación de la máquina virtual de Java
  •   

Aparece como una descarga de los bits JDK 1.0.2 aquí

enlace

Funciona para mí en el momento de escribir.

OBSERVAELPODERRATIZADOYUNMITIGADODEJAVA1.0.2

Enlaespecificacióndeidioma,sehacereferenciaalassiguientesclases(citaúnica,nocitasexhaustivas):

  • Clase(sección4.3.1)
  • Cadena(sección4.3.1)
  • Objeto(sección4.3.2)
  • Aleatorio(sección4.4)
  • Hilo(sección17.2)
  • ThreadGroup(sección17.2)
  • Tirable(sección11)
  • Error(sección11.2)
  • cargasycargasdeerrores,todobajojava.lang(sección11.5.2.1-11.5.2.2)
  • RuntimeException(sección11.2.1)
  • las"clases de matrices", [I , etc. (sección 10.8 )

... en qué punto dejé de buscar porque, técnicamente , [I , et. Alabama. no están en los paquetes java.lang , java.util o java.io .

Ejemplo:

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

Salidas

Elcomportamientoesconsistenteentremodernoy1.0.2

    
respondido por el Jeff Atwood 04.05.2012 - 07:50
2

Había menos de una docena de paquetes en el JDK original: estos applet más, awt, awt.peer. ¡Eso puede haber sido! Es absolutamente probable, con un 99% de certeza, que estos tres paquetes incluyeran todas las clases que la JVM central conocía explícitamente y que no haya clases fuera de estos paquetes mencionadas en la especificación de idioma.

    
respondido por el Ernest Friedman-Hill 04.05.2012 - 07:06
1

java.net también estuvo entre los primeros paquetes disponibles y fue excelente desde el principio, especialmente con la función de subprocesos (ahora el modelo Thread parece estar desactualizado en comparación con lo que tienes en idiomas más recientes, pero fue genial entonces). / p>

Recuerdo haber codificado un navegador web (muy incompleto, incluso en comparación con lo que existía en ese momento) para aprender el 1.02 recién publicado y, justo después, un servidor de aplicaciones web completo (todavía utilizado en la industria). Eso fue mucho antes de que la API del servlet y todos estuvieran convencidos de que tenía que usar frameworks pesados para hacer aplicaciones http rápidas y confiables en java.

Con java.net (y el GC, y Subprocesos, y excepciones y java.util) java estaba destinado a ser un importante servidor de tecnología (en el lado opuesto, java.applet fue doloroso desde el primer día ... )

    
respondido por el Denys Séguret 04.05.2012 - 09:29
0

Java 1.0 tenía exactamente seis paquetes de nivel superior: java.applet, java.awt (con subpaquetes java.awt.image y java.awt.peer), java.io, java.lang, java.net y java .util. Eso es. Fuente: Patrick Chan, Java Developers Almanac 1998

    
respondido por el mrzzmr 15.06.2015 - 21:46

Lea otras preguntas en las etiquetas