Una no tan breve historia de Java

Hace unos días la gente de Sun liberó la nueva versión de su producto estrella, Java 1.5. Con motivo de esto, os dejo una pequeña entrada sobre su historia, basada sobre todo en la versión de Patrick Naughton y un par de conferencias de James Gosling, y que si tengo tiempo y ganas podría ser el comienzo de un tutorial de Java.

Prehistoria

En Diciembre de 1990 un ingeniero de Sun Microsystems llamado Patrick Naughton enviaba un correo electrónico a Scott McNealy, CEO de Sun Microsystems, explicándole las razones de su marcha para trabajar en NeXT, una empresa fundada por Steve Jobs después de “renunciar” en Apple, cuyo objetivo era crear el computador perfecto, y que mas tarde sería comprada por Apple junto con el sistema operativo desarrollado, NeXT Step, para crear su nuevo sistema operativo.

Naughton era jefe de proyecto de la sección gráfica en un grupo dedicado a unir NeWS (Networked/extensible Window System), un sistema de ventanas de Sun inventado por James Gosling y basado en PostScript, con X11 (X window System versión 11), lo cual significaba que tenían que soportar “tres toolkits, tres sistemas de ventanas, tres arquitecturas hardware diferentes, dos interfaces de usuario y dos versiones de sistemas operativos diferentes”.

Como respuesta, Bill Joy le ofrece continuar en Sun trabajando en algo nuevo, uniéndose a un nuevo grupo para desarrollar una nueva tecnología. Un grupo con total autonomía respecto de la línea directiva de Sun y completamente secreto. Así nace el llamado Proyecto Stealth.

El 15 de Enero de 1991 Bill Joy, Andy Bechtolsheim, Wayne Rosing, Mike Sheridan, James Gosling y Patrick Naughton se reunen en Aspen, Colorado. El grupo quiere anticipar hacia donde se dirijirá la computación. Discuten sobre que les gusta y que no les gusta de varias tecnologias y al final llegan a la conclusión de que al menos una de las tendencias futuras será el acercamiento de sistemas digitales y electrónica de consumo. Se marcan como objetivo desarrollar un entorno único que pudiera ser utilizado por todos los dispositivos de electrónica de consumo.

Con el objetivo marcado, los miembros del Proyecto Stealth, que mas tarde se pasaría a llamar Proyecto Green, comienzan a trabajar el 1 de Febrero de 1991 en una pequeña oficina de Sand Hill Road en Menlo Park. Se divide el trabajo con Naughton dedicado al sistema gráfico “Aspen”, Gosling dedicado a identificar el lenguaje de programación a utilizar en el proyecto y Sheridan dedicado al desarrollo de negocio.

En un principio se considera C++ como lenguaje a utilizar, pero tanto Gosling como Bill Joy lo encontraron inadecuado. Gosling intentó primero extender y modificar C++ resultando el lenguaje C++ ++ — (++ — porque se añadían y eliminaban características a C++), pero lo abandonó para crear un nuevo lenguaje desde cero al que llamo Oak (Roble), según la versión mas aceptada, por el roble que veía através de la ventana de su despacho.

Oak debía ser independiente de la plataforma, dado el gran número de modelos en el mercado, por lo cual se optó por un lenguaje interpretado. Además el nuevo lenguaje debía ser robusto y a la vez sencillo para evitar errores por parte del programador que pudieran llevar al cuelgue del sistema. Esto motivó que se eliminaran las características que hacían el código mas propenso a errores, como la herencia múltiple.

El resultado fue un lenguaje que tenía similitudes con C, C++ y Objective C y que no estaba ligado a un tipo de CPU concreta. Mas tarde se le cambiaría el nombre de Oak a Java, por cuestiones de propiedad intelectual, al existir ya un lenguaje con el nombre Oak. Se supone que le pusieron ese nombre mientras tomaban café (Java es también el nombre de un tipo de café, originario del este de Asia, de la isla del mismo nombre), aunque hay algunos que afirman que el nombre deriva de las siglas de James Gosling, Arthur Van Hoff, y Andy Bechtolsheim.

FirstPerson

En Agosto del 91 Oak ya corría sus primeros programas. El equipo trabajaba en un prototipo llamado Star7 (*7), un dispositivo parecido a una PDA, cuyo nombre venía de la combinación de teclas del teléfono de la oficina del Proyecto Green que permitía a los usuarios responder al teléfono desde cualquier lugar.

Después de mostrar a Scott McNealy y Bill Joy los prototipos de bajo nivel del sistema, continúan con el desarrollo, incluyendo su sistema operativo, Green OS; el lenguaje Oak, las librerias, alguna aplicación básica y el hardware, hasta que el 3 de Septiembre de 1992 se termina el desarrollo y con ello el Proyecto Green.

En la demostración para McNealy y Joy, aparecía un personaje creado por Joe Palrang que terminaría por convertirse en la mascota de Java, Duke.

Después de la demostración se decide crear una nueva empresa filial de Sun, FirstPerson, con sede en Palo Alto, para comercializar la nueva tecnología. Wayne Rosing, ex-jefe de Naughton en el grupo de trabajo de NeWs se une al proyecto desde SunLabs, asumiendo la dirección del equipo y de la nueva empresa.

Ahora que ya habían creado *7, quedaba la cuestión de qué hacer con él. El que había sido el mercado objetivo durante la concepción de *7, la electrónica de consumo, resultó no querer saber nada del nuevo producto porque disparaba los precios de los nuevos dispositivos. FirstPerson pasa de un desastre a otro sin encontrar un verdadero plan de negocio. El 15 de Marzo de 1993 Time Warner lanza un RFP (Request for Proposal) buscando una tecnologia para televisión por cable interactiva. FirstPerson se fija como nuevo objetivo el desarrollo de un sistema operativo para Time-Warner, pero cuando llega la hora de la verdad Time-Warner se decantanta por GDI, aún reconociendo que la tecnología de Sun era superior.

Tras el varapalo de Time-Warner se intenta vender *7 a 3DO pero después de meses de reuniones las negociaciones no llegan a buen puerto al exigir 3DO los derechos exclusivos de la tecnología. Como último recurso se presenta como alternativa a los ejecutivos de Sun el desarrollo de una plataforma de CD-ROMs multimedia basada en Oak pero la respuesta de estos no es favorable y se desmantela FirstPerson.

El nacimiento de Java

Mientras tanto, NCSA (National Center for Supercomputing Applications) liberaba Mosaic, una aplicación que permitía a los usuarios acceder a Internet de forma gráfica, pudiendo acceder a cientos de sitios de Internet en la World Wide Web. El número de sitios web crecía día a día e Internet comenzaba a convertirse en un fenómeno.

En Junio de 94 Joy comienza el proyecto “Live Oak” con el objetivo de usar Oak para construir un “pequeño gran sistema operativo” y estudiar las posibilidades de negocio de Internet. Mientras Arthur van Hoff implementa el compilador de Oak en lenguaje Oak, reemplazando la versión de Gosling que se había escrito en C, Naughton y Jonathon Payne comienzan a escribir un navegador web similar a Mosaic escrito en Java, “WebRunner” (por la película Blade Runner) al que después se llamaría “HotJava”.

El 29 de Septiembre de 1994 se termina el desarrollo del prototipo de HotJava. Cuando se hace la demostración a los ejecutivos de Sun, esta vez, se reconoce el potencial de Java y se acepta el proyecto.

El 23 Mayo de 1995, en la conferencia SunWorld ’95, John Gage, de Sun Microsystems, y Marc Andreessen, cofundador y vicepresidente de Netscape, anunciaban la versión alpha de Java, que en ese momento solo corría en Solaris, y el hecho de que Java iba a ser incorporado en Netscape Navigator, el navegador mas utilizado de Internet.

Con la segunda alpha de Java en Julio, se añade el soporte para Windows NT y en la tercera, en Agosto, para Windows 95. En Enero de 1996, Sun crea JavaSoft para desarrollar la nueva tecnología y ese mismo mes aparece la versión 1.0 del JDK.

El resto, es historia.

Versiones de Java

  • Java 1

    • Java 1.0 (Enero 1996) – 8 paquetes, 212 clases – Primera versión pública. La presión hizo que se hiciera pública demasiado pronto, lo cual significa que el diseño del lenguaje no es demasiado bueno y hay montones de errores. Respecto a seguridad, es restrictivo por defecto, no dejando hacer demasiado al código no fiable.
    • Java 1.1 (Marzo 1997) – 23 paquetes, 504 clases – mejoras de rendimiento en la JVM, nuevo modelo de eventos en AWT, clases anidadas, serialización de objetos, API de JavaBeans, archivos jar, internacionalización, API Reflection (Reflexión), JDBC (Java Data base Connectivity), RMI (Remote Method Invocation). Se añade la firma del código y la autentificación. Es la primera versión lo suficientemente estable y robusta.
  • Java 2
    • Java 1.2 (Diciembre 1998 ) – 59 paquetes, 1520 clases – JFC (Swing), Drag and Drop, Java2D, Corba, API Collections. Se producen notables mejoras a todos los niveles. Para enfatizar esto Sun lo renombra como “Java 2”. El JDK (Java Development Kit) se renombra como SDK (Software Development Kit). Se divide en J2SE, J2EE y J2ME.
    • Java 1.3 (Abril 2000) – 77 paquetes, 1595 clases – Orientada sobre todo a la resolución de errores y a la mejora del rendimiento; se producen algunos cambios menores como la inclusión de JNDI (Java Naming and Directory Interface) y la API Java Sound. También incluye un nuevo compilador de alto rendimiento JIT (Just In Time).
    • Java 1.4 (2002) – 103 paquetes, 2175 clases – También conocido como Merlin, es la versión actual. Mejora notablemente el rendimiento y añade entre otros soporte de expresiones regulares, una nueva API de entrada/salida de bajo nivel (NIO, New I/O), clases para el trabajo con Collections, procesado de XML; y mejoras de seguridad como el soporte para la criptografía mediante las Java Cryptography Extension (JCE), la inclusión de la Java Secure Socket Extension (JSSE) y el Java Authentication and Authorization Service (JAAS).
    • Java 1.5 (Octubre 2004) – 131 paquetes, 2656 clases – También conocido como Tiger, renombrado por motivos de marketing como Java 5.0. Incluye como principales novedades:
      • tipos genéricos (generics)
      • autoboxing/unboxing conversiones impliticas entre tipos primitivos y los wrappers correspondientes.
      • Enumerados
      • Bucles simplificados
      • printf
      • Funciones con número de parámetros variable
      • Metadatos en clases y métodos.

Para saber mas sobre las novedades de Java 5.0 se puede consultar las release notes o el documento J2SE 5.0 in a Nutshell

Comentarios
  1. Solo una cosa, si Sun ha decidido ponerle la version 5.0, debemos respetarlo y nosotros tb ponerlo 😉

    Saludos.

    Responder

  2. no, sun no ha decidido ponerle la version 5.0. se le llama tanto java 5.0 como java 2 sdk 1.5
    de hecho, prueba a escribir java -version te va a devolver un bonito: java version 1.5.0, no java 5.0. o mira a ver en que directorio se instalar por defecto. jdk1.5.0, no jdk5.0. o prueba a leer alguna bitacora de desarrolladores de sun, que muchos lo llaman 1.5

    el nombre de java 5.0 no es mas que marketing que ademas confunde a la gente que acaba de llegar a java, asi que la nueva numeracion la terminaran usando la seccion de marketing de sun y algun que otro novato los 2 primeros dias que use java

    Sun said:

    Starting with Tiger, each version has two version numbers: an internal number, such as 1.5.0, and an external number, such as 5.0.

    traducido al castellano: vamos a ponerle un numerito grande como numero de version para que los managers vean que robusta, fiable y cool es nuestra plataforma. pero esto es similar a la tonteria de llamar java 2 a las versiones posteriores a java 1.1. puro marketing.

    Responder

  3. :OO
    Ok, ok…

    Responder

  4. mmm, me estoy releyendo y no se si he sonado un poco borde, pero en todo caso, no era esa mi intencion :uch:

    Responder

  5. Muy interesante, Zootropo. ¿Te importaría que publicase este texto como una noticia en javaHispano? Si lo prefieres puedes ahcerlo tu mismo.

    Responder

  6. que va, no me molesta, lo que quieras abraham. de hecho el blog estaba bajo una licencia creative commons bastante permisiva, lo que pasa es que hice una carniceria con todos los enlaces que tenia en el menu y se me paso volver a ponerlo :uch:

    Responder

  7. Si tiene el tono un poquitin borde xD pero se sabe que no lo hiciste con esa intencion (generalmente, no se hace con esa intencion).

    Responder

  8. Pues ya está en jH . Saludos y gracias por el deleite.

    Responder

  9. Mario

    Hola a todos, una pregunta, sabeis si la nueva version de java tambien tiene JAAS, es que he leido algo al respecto, pero todas las referencias que encuentro de JAAS es respecto a la 1.4, y estoy temiendo que en la 1.5 no este.

    gracias y saludos,

    Responder

  10. Dragon

    ¿Qué significa el icono de java?

    Responder

  11. Hey, siempre quise saber sobre la historia de Java, tu información es la más completa que vi, de dónde la sacaste?

    Responder

  12. Margarito Sánchez Laparra

    Muy bueno

    Responder

  13. yoyo

    alguien sabe sobre la historia del icono de JAVA? un poco mas detallada?.

    dicen que era por que se reunian en un cafe, lol.

    otros dicen que por que tomaban mucho cafe.

    otros dicen que pueden ponerle el icono que quieran.

    otros dicen que taza de cafe, por que decian mucho. aqui se rompio una taza y cada quien para su casa.

    porfa

    Responder

  14. […] Java hace tiempo o si solo lo tocaste muy por encima es el nuevo for mejorado que se introdujo en Java 5 (Tiger) que facilita recorrer las colecciones y que funciona de forma similar a los bucles for in […]

    Responder

  15. luis

    yoyo, creo que porque hay un lugar en el planeta llamado asi java donde se hace un buen cafe

    Responder

  16. […] Visto en | MundoGeek […]

    Responder

  17. […] Gosling abandona Oracle. ¿No te suena su nombre? Echa un vistazo a nuestra no tan breve historia de Java Etiquetas: Java, oracle, programacion […]

    Responder

  18. […] También puede entretenerse con una no tan breve historia de Java. […]

    Responder

  19. […] Por otro lado, también puede entretenerse con una no tan breve historia de Java. […]

    Responder

Deja un comentario