Java cumple hoy 20 años. El 23 de Mayo de 1995 vió la luz de forma pública, durante la conferencia SunWorld ¡Qué tiempos! La compañía Sun Microsystems presentó el lenguaje en el que había estado trabajando durante más de cinco años de forma interna el equipo de James Gosling (el padre de la criatura). Un auténtico lenguaje moderno concebido para funcionar en cualquier dispositivo, esa fue la idea.
Para acompañar el anuncio de esa fecha, el pelotazo fue que se integraría con el navegador Netscape, el nacimiento de los Applets de Java. La web empezaba a asomar su potencial e hizo virar el rumbo del lenguaje. Dándole popularidad y cierta omnipresencia en cualquier navegador y sistema operativo.
Java, sin duda, es uno de los lenguajes más populares de la actualidad. Desde 2010 es propiedad de Oracle, el gigante tecnologico que aglutina toda su tecnología. Su influencia es tremenda en distintos ámbitos de programación. Representa una pieza fundamental en el negocio de muchas compañías, debido a su fuerte presencia gracias a sus numerosas herramientas empresariales, tanto en la cara más front de web, de aplicaciones en el cliente o en el servidor.
Es el principal lenguaje en el que ha desarrollado su carrera profesional muchos programadores. Seguro que tú estás entre ellos. Así que tenemos mucho que agradecerle, aunque alguna vez nos cabree.
Y como usuario, no creas que no te toca tu parte: Java ha sido ese componente presente en muchos navegadores hasta hace bien poco. Los applets que comentamos eran “la moda” y muchas páginas web de su tiempo te exigían instalarlo para ejecutar cierta funcionalidad. Hasta entonces imposibles de otro modo. Y, por supuesto, infinidad de aplicaciones de escritorio que necesita la JRE (el entorno de ejecución de Java para funcionar), casi todos como usuarios nos ha tocado instalar para ejecutar alguno de esos programas. También fue fundamental para posibilitar las primeras aplicaciones en esos móviles que admitían J2ME. Y por supuesto, es la pieza fundamental sobre el se sustenta Android, aunque algunos quieran matarlo de forma precipitada.
Un nacimiento lleno de anécdotas, incluso en el nombre
En 1991, Sun Microsystem decidió invertir en la creación de un nuevo lenguaje que bebiera de lo mejor de cada uno de los existentes hasta la fecha. Llegó para cubrir una necesidad: poder se ejecutado en cualquier plataforma, introduciendo el concepto de máquina virtual.
El equipo de Jame Gosling, conocido como Green Team, trabajó 18 meses en las oficinas de Menlo Park (California) en crear lo que aún sin nombre se conocía como The Green Project. Más tarde pasó a llamarse Oak, aunque se descartó al ser una marca registrada. Finalmente llegó el nombre definitivo: Java.
Hay distintas anécdotas sobre la elección de este nombre. Las más extravagantes cuenta que es el acrónimo surgido del nombre de sus principales creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros, incluso se limitan a definirlo como un acrónimo inventado: Just Another Vague Acronym("sólo otro acrónimo ambiguo más"). Pero el que más fuerza toma, simplemente lo justifica por el tipo de café disponible en la cafetería más cercana dónde trabajaban sus creadores. De hecho, es uno de los símbolos más reconocidos de Java en muchas aplicaciones y plataformas.
Write Once, Run Anywhere ("Escríbelo una vez, ejecútalo en cualquier lugar")
Este era el principal leitmotiv que tenía en la cabeza James Gosling. Cualquier aplicación escrita en Java podría ejecutarse de la misma forma en cualquier hardware, independientemente de la plataforma.
En ocasiones, 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 evitar caer 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.
¿Dónde funciona Java?
La parte de servidor de aplicaciones, quizá sea una de las partes más populares. Numerosos desarrolladores se dedican a esta faceta. Sin entrar en aspectos muy técnicos, su base está sustentado por la especificación de Servlets y JSP.
Las tecnologías en el servidor han servido para popularizar distintos framework como Struts o Spring Framework, en esta última además a crear un auténtico ecosistema de plataformas bajo el sustento de Pivotal. Pero sin duda, la Apache Foundation ha sido uno de los mayores contribuidores. Y no podemos olvidar a contenedores de aplicaciones como Tomcat, JBoss o Jetty que han dado el sustento necesario para poder ejecutar en servidor aplicaciones web. Podemos decir que Java está presente en infinidad de tecnologías de servidor.
Aplicaciones de escritorio. Existen a día de hoy infinidad de aplicaciones creadas utilizando el JRE (el entorno de ejecución necesario). JAVA aportó, además de la propia plataformas, librerías como Swing o AWT para la creaciones de interfaces gráficas
En el navegador web, aunque cada vez menos. Sobretodo desde que los navegadores se pusieran serios a la hora de permitir la ejecución de Applets sobre plugin obsoletos con innumerables fallos de seguridad. Aún así existe aún complementos en los distintos navegadores para usarlos. Desde sus inicios, aunque alcanzó una gran popularidad, no llegaron a ser algo realmente eficiente debido a sus limitaciones de velocidad y su gran tamaño en una época en la que el ancho de banda de las conexiones era limitado.
Aplicaciones móviles tanto las primeras aplicaciones J2ME, como las actuales aplicaciones desarrolladas para Android. Java es el lenguaje principal de uno de los sistemas operativos más numerosos en smartphones. Gran parte de su ejecución se basa en Java y componentes de su máquina virtual.
¿Cómo ha cambiado la forma de programar Java en estos 20 años?
Recordar cómo era el mundo de la programación en 1995 no es tarea fácil. La programación orientada a objetos existía, pero raramente era usada en las aplicaciones que conocíamos. Pero lo más llamativo era el tema de tener que recompilar y empaquetar la aplicación que estamos casi para cualquier arquitectura, distintas versiones del sistema operativo, por ejemplo el caso de UNIX, generar el código máquina particular, etc.. Java llegó con su máquina virtual prácticamente portable sin problemas a cualquier configuración, y sobretodo, sin tener que hacer modificaciones en nuestro código.
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.
Pero donde, sin duda, Java es popular es la parte del servidor dónde ha creado un amplio ecosistema de programación basado en Servlet y JSP. Basado en Java Entreprise Edition ha construido un gran número de herramientas: framework como Spring o Struts, servidores como Tomcat, el uso de bases de datos Hibernate, JPA, etc.. Toda una interfaz de conexión de red, porque Sun siempre tuvo la idea de que “The Network is The Computer”.
También tenemos que dar gracias, que sobre Java se crearon las primeras herramientas para hacer test unitarios como JUnit de la mano de Kent Beck y Eric Gamma. TDD nació de allí.
Una generación de nuevos lenguajes han crecido bajo su JVM como Groovy o Scala y muchos más. Muchos de ellos completando lo que le faltaba a Java. Siendo sinceros, han pasado 20 años y evidentemente hay cosas que han quedado obsoletas y llenas de burocracia sintáctica.
Sun Microsystems fue la creadora del lenguaje pero realmente no fue la que mayor beneficio sacó de él economicamente. Hay que remarcar su influencia en el mundo de la programación también fue vista en el negocio del software. Compañías como IBM u Oracle han crecido sacando proyecto de él. Esta última acabó comprando Sun y llevándose Java y el resto de tecnologías Open Source (como MySQL anteriormente compradas).
Las críticas a Java
El rendimiento ha sido siempre mirado con lupa. La máquina virtual de Java fue pensada para abstraer del hardware, sin dar acceso directo a los recursos y generar los bytecodes independientes de la plataforma. Todo ello sumaba latencia, aunque esta JVM ha sido afinada y en un tiempo adecuado de “calentamiento” de recursos puede alcanzar valores realmente eficaces, Java siempe ha llevado consigo la etiqueta de lenguaje lento.
Quizás lo más preocupante ha sido el famoso Day-Zero de seguridad que llevó a una alarma social de la necesidad de tener instalado Java en el navegador con la gran cantidad de software malintencionado que podría atacar los applets con versiones comprometidas de Java. Siempre ha sido recomendable disponer de la última versión parcheada, evitando que usuario no muy expertos en programación dieran excesivos permisos a un software firmado por alguien sospechoso.
El lenguaje en sí ha ido quedando obsoleto con el tiempo. El salto de funcionalidad entre versiones no ha sido tan generoso como nos gustaría. Problemas de compatibilidad aún hacen que muchos sigan programando en Java 7, en lugar de su última versión como Java 8. Agrietado por el tiempo que paso entre una versión y otra, casi 8 años.
Un futuro marcado por el rendimiento y su verdadera vocación multiplataforma
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 noSQL, 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 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.
Foto | Flickr
Ver todos los comentarios en https://www.xataka.com
VER 74 Comentarios