El 23 de mayo de 1995 , Sun Microsystems junto con James Gosling dieron a luz a uno de los lenguajes más populares de la era Tecnológica. Hoy estamos a 20 años de que apareciera Java: el lenguaje de programación con el que la mayoría de los programadores aprendieron a comerse al mundo.
Write Once, Run Anywhere
(Escríbelo una vez, ejecútalo en cualquier lugar).
Una frase que cambió al mundo tecnológico, pero en realidad ¿qué es Java?.
Cualquier aplicación escrita en Java podría ejecutarse de la misma forma en cualquier hardware, independientemente de la plataforma.
En ocasiones es un quebradero de cabeza, debido a distintas razones: sobre todo por las implementaciones que ha sufrido esa máquina virtual JVM oficial y derivadas en los distintos sistemas operativos. Microsoft fue demandada por la propia Sun Microsystem debido a que no respetaba las implementaciones de compatibilidad de ciertos componentes en su implementación para Windows, causa que fue ganada y el gigante de Redmond tuvo que pagar 20 millones.
Sun desde el principio aportó su propia JVM, HotSpot, como referencia oficial de la especificación pero cualquiera era libre de implementar la suya. En teoría las plataformas debería ser compatibles y no lo son al 100%. De hecho, hasta la liberación del código de Java, la comunidad de software libre, encabezada por Richard Stallman abogaba por el uso de IcedTea como la plataforma libre para evitarcaer en la trampa de un lenguaje cuya plataforma y APIs no eran del todo libres.
Finalmente, Java fue re-licenciado en 2006 con una GPL que aseguraba que nadie era propietario del lenguaje. Cosa que Sun Microsystem apoyó desde el principio, aunque no fue hasta la fecha dónde fue ratificado. Oracle tuvo que asumirlo, muy a su pesar, en las diligencias abiertas en el juicio contra Google por el uso de ciertos componentes propios de librerías internas de Java.
En estos 20 años de historía, Java ha alcanzado una cifra de popularidad enorme entre la comunidad de desarrolladores. Desde hace ya unos años forma parte del Top TIOBE de los lenguajes más utilizados. Más de 9 millones de programadores lo utilizan a diario, según diversas estimaciones.
Sus referentes fueron: Smalltalk del que adquirió el carácter orientado a objetos, un recolector de memoria inspirado en Lisp, las interfaces múltiples y la herencia única de Objective-C, la documentación en línea de CWeb, los tipos primitivos y el control de estructuras de C, el tipado de objeto de Ada. De todos adquirió lo mejor y depuró algunas características.
Java introdujo características hasta ahora no vistas, como la comprobación de excepciones, el uso de Unicode. Pero sus piezas angulares fueron, sobre todo, la idea que cualquier programa estaba compuesto por clases y objetos reutilizables y la incorporación de un Garbage Collection que facilitaba la liberación de memoria hasta entonces realizada a niveles más bajos de programación.
Como comentábamos al principio, Java asomó la cabeza de forma inesperada y casi dando un giro a lo que se planteó inicialmente, en los primeros navegadores: Netscape fue su empujón con los Applet y el recién nacido mundo web. Paradójicamente nunca funcionaron bien, ni siquiera eran capaces de interactuar con el HTML o el JavaScript de la época, pero fueron necesarios para ciertas funcionalidades de las páginas web de la época.
El futuro de Java
El futuro obvio de Java es su próxima versión (Java 9) anunciada con fecha exacta para el 22 de septiembre de 2016. Con él llegarán características para hacerlo más flexible como la modularidad. A día de hoy Java es enorme, si queremos usar una de sus APIs necesitamos traernos todo.
También incorporará nuevos estándares integrando JSON Light Weight que muchos agradecerán al trabajar con bases de datos no SQL, también la incorporación del futuro estándar de HTTP2 -sobre todo en la faceta de lenguaje del servidor-. Y, finalmente, la optimización de la JVM tanto la caché de código como la del compilador.
Todas estas mejoras vienen empujadas por sus competidores en el terreno del rendimiento y modularidad. Y uno de los que está pegando fuerte es Node.js, creando un ecosistema parecido a Java entorno a JavaScript.
Java tiene una fuerte presencia en el mundo móvil con Android. Google tiene mucho que decir sobre ese tema. Ya se ha rumoreado recientemente su salida de Android a favor de otros lenguajes, aunque es muy pronto para matarlo: Go o Dart está verdes aún.
Su piedra en el camino es el rendimiento y la versatilidad. El futuro estará marcado por la Internet de las cosas; varios lenguajes ligeros se posicionan para situarse en ese paradigmático objetivo de ser multiplataforma, paradójicamente ese fue el enfoque por que nació Java, quizás lo consiga después de estos 20 años.