Al leer sobre el caso de Google v Oracle, me encontré con estas preguntas (aparentemente del juez presidente)
...
¿Está de acuerdo en que lo siguiente es cierto, al menos a partir de 1996?Las siguientes fueron las principales interfaces 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 . Deje la ley a los abogados.
Sin embargo, sospecho que hay un poco de historia interesante aquí.
Mi pregunta es (como alguien que primero hizo ninguna Java codificación de alrededor de 2001 en la versión 1.3), en la versión 1.0 de Java fue nada fuera necesario de java.lang
, java.util
y java.io
para compilar un programa Java válido?
Como ejemplo (usando C # 5.0), la await
palabra clave depende (entre otras cosas). El compilador no podría funcionar según las especificaciones sin esa clase.Task<T>
GetAwaiter()
De manera equivalente, ¿hubo alguna característica principal de tiempo de ejecución (como ClassLoader *) que dependiera de otros paquetes?
Admito que pregunto por curiosidad, lo que es exactamente necesario para Java mínimamente viable (el lenguaje, ignorando todas las partes legales que lo rodean) es interesante.
* Supongo que ClassLoader era incluso una característica en Java 1.0, es parte de la especificación en 7.0 y presumiblemente muchas versiones anteriores.
await
palabra clave no dependeTask<T>
. LaTask
clase simplemente satisface las cosas de las que depende laawait
palabra clave (un método llamado etc.).GetAwaiter()
yield
IEnumerator o algo así; tan excitado paraawait
.Respuestas:
Según Wikipedia , la primera versión de Java lanzada formalmente fue 1.0.2, el 23 de enero de 1996.
Hay un archivo de Java 1.0.2 y toda la documentación relacionada aquí :
No parece ser una descarga de los bits JDK 1.0.2 aquí
http://www.pascal-man.com/download/download-jdk.shtml
A mí me funciona al momento de escribir.
VEA EL PODER CRUDO INMITIGADO DE JAVA 1.0.2
En la especificación del lenguaje, se hace referencia a las siguientes clases (cita única, citas no exhaustivas):
[I
etc. (sección 10.8 )... y en ese momento dejé de mirar porque, técnicamente ,
[I
et. Alabama. No estamos en eljava.lang
,java.util
ojava.io
los paquetes.Ejemplo:
Salidas
El comportamiento es consistente entre moderno y 1.0.2
fuente
Había menos de una docena de paquetes en el JDK original: estos más applet, awt, awt.peer. Eso puede haber sido! Es absolutamente probable, 99% seguro, que estos tres paquetes incluyan todas las clases que la JVM central conocía explícitamente, y que no había clases fuera de estos paquetes mencionadas en la especificación del lenguaje.
fuente
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 de subprocesos parece anticuado en comparación con lo que tiene en los idiomas más recientes, pero fue genial entonces).
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 de servlet y todo el mundo fuera persuadido de que tienes que usar marcos pesados para hacer aplicaciones http rápidas y confiables en Java.
Con java.net (y el GC, y los subprocesos, y las excepciones y java.util) Java estaba destinado a ser un lado importante del servidor de tecnología (en el lado opuesto, java.applet fue doloroso desde el primer día ...)
fuente
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
fuente