Java ha trascendido a Sun
José Manuel Estrada, arquitecto Java de Sun Microsystems, habla con vnunet.es de lo que se ha convertido en una verdadera revolución: Java.
Amplia presencia
José Manuel Estrada, arquitecto Java de Sun Microsystem lleva más de 20 años trabajando en el sector informático desempeñando diferentes cargos en empresas como SOFT, Microsoft y Powersoft. Desde 1999 ha trabajado en las primeras iniciativas de Java en telefonía móvil. Su experiencia en este terreno, por tanto, es única. Con él hemos querido hablar de Java, de sus comienzos, de sus características más destacadas, del futuro… de un lenguaje y una arquitectura que, desarrollada por Sun Microsystem, ha trascendido a la propia compañía, como ha señalado José Manuel Estrada.
A finales de la década de los 80 Sun Microsystems inicia un proyecto de investigación encabezado por James Gosling con el propósito de desarrollar un lenguaje de programación para dispositivos electrónicos como tostadoras, hornos microondas y asistentes digitales personales. Aunque no es hasta 1995 cuando Java aparece en el mercado a través del navegador Netscape, casi diez años después este lenguaje está presente en más de 250 millones de teléfonos móviles y está presente en la mayoría de los servidores de aplicaciones del mercado, lo que supone una evolución sin parangón.
Los inicios de una revolución
Pregunta: ¿Cuáles son los comienzos de Java?
Respuesta: Java tuvo éxito después de dos fracasos, a la tercera va la vencida. Nació un como pequeño proyecto dentro de Sun, muy separado de la compañía con la idea de que pudiesen crear cosas que no estuvieran basadas en tecnología que en aquel momento tenía la compañía. Se piensa primero en una plataforma que permita controlar distintos dispositivos, una especie de mando a distancia universal muy sofisticado que pudiera configurarse con nueva funcionalidades. Pero aquello no cuaja, seguramente porque se adelanta mucho a su tiempo.
Como segundo paso después de que aquello no funcionara se reconvierte para televisión interactiva a la televisión digital. Se habían montado muchas empresas en torno a la televisión interactiva, pero esto falló; de nuevo no acertamos con el mercado o con el momento. Y finalmente se reconvierte a la web y Java se presenta en mayo del 95.
P:¿De qué viene el nombre de Java?
R: Java era uno de los tipos de café que servían en una cafetería cercana a las oficinas donde trabajaban Bill Joy y James Gosling. Se había pensado otro nombre inicialmente, Oak, roble en inglés, porque se veía uno desde las ventanas de Sun, pero estaba registrado.
P: Después de don intentos, ya se veía a Internet como una posibilidad para Java?
R: Sun estaba trabajando en Internet desde el principio, desde los 80, y lo que se anuncia y se enseña en mayo del 95 es un prototipo de un navegador de Netscape sobre el que está funcionando Java. Aquello es el boom.
P:¿Cuál es la grandeza de Java? ¿por qué ese boom?
R: Cuando se escribe un programa, sea en Windows, Linux, Macintosh, etc., ese programa está sujeto y sólo va a poder funcionar cuando se den una serie de cincunstancias: que la CPU, el hardware, sea el adecuado y el sistema operativo el adecuado. Java lo que hace es, por encima del sistema operativo, situar una máquina virtual, la Java Virtual Machine (JVM), que de alguna manera actúa como una CPU en software.
Por lo tanto, para que Java funcione en un ordenador necesito tener la JVM, que va instalada por encima de la CPU, por encima del sistema operativo. De esta forma, cualquier programa Java que instalo localmente o descargo a través de Internet va a funcionar en cualquier combinación de SO y CPU siempre que esté la JVM.
Evolución de su presencia
P: Pero al principio nadie tenía la JVM, no venía preinstalada en los PCs, como pasa ahora.
R: El primer paso, y es como nace Java, es sobre el navegador de Netscape. Lo que se hizo fue colocar la JVM como un añadido a ese navegador que permitía que cuando descargaba una página que incluía un applet, el navegador ya sabía cómo manejarlo. Con esto Java sólo nos permite hacer aplicaciones que sean descargables desde web al navegador, pero Java ya empieza a tener mucha presencia en los medios de comunicación y Microsoft decide que lo quiere, por lo que .o licencia y lo incorpora a su navegador. Con lo cual empezaba ya a estar prácticamente en cualquier máquina.
Esto era en máquinas de sobremesa, en máquinas cliente, pero a partir de aquí empieza a evolucionar y en el año 97 se produce nuestro pleito con Microsoft.
P:¿Qué pasó exactamente?
R: Aquí lo que ocurrió fue que en las condiciones de licencia se establecen las especificaciones de Java y el licenciatario lo que hace es crear o portar el código a su plataforma; pero hay unas especificaciones muy cerradas en cuanto a lo que debe ser el funcionamiento de esa máquina virtual para mantener la compatibilidad. Microsoft lo que hace es empezar a hacer modificaciones de forma que programas Java desarrollados con sus herramientas sólo funcionan en Windows.
Yo diría que la principal característica de Java es que es multiplataforma, debe funcionar en cualquiera. Lógicamente a Microsoft le interesa más preservar su plataforma Windows y que ese mismo programa no corra ni en Mac ni en Linux ni en ninguna otra plataforma, pero no lo puede hacer utilizando Java porque se sale de las especificaciones. Se intentó que Microsoft dejase de hacer añadidos específicos sólo para Windows porque va contra toda la filosofía de Java y como no hubo acuerdo se presentó la demanda.
Cuando finalmente hay sentencia lo que se hace es rescindir la licencia de Java, aunque, por proteger intereses de los usuarios se les ofreció un periodo para que siguieran utilizando su máquina virtual modificada.
Características y versiones
P:¿Cuáles son las principales características de Java?
R: Yo diría que la primera característica de Java y una de las razones de su éxito ha sido precisamente la capacidad multiplataforma que independiza una aplicación Java de lo que hay por debajo. Puede ir sobre cualquier plataforma. Esto en máquinas cliente tiene importancia, pero tiene mucha más importancia en servidores donde no existe una plataforma con un alto porcentaje como tiene Windows en máquinas de sobremesa. En el mercado de servidores la variedad de sistemas operativos, arquitecturas, CPUs es enorme y es por lo que es tan fuerte.
Y esta características también ha sido muy importante en entornos donde esa dispersión de CPUs y sistemas operativos es aún mayor, como en telefonía móvil, donde cada fabricante utiliza CPUs distintas, arquitecturas distintas y donde hablamos de decenas de compañías con una cuota de mercado significativa, con aparatos cada vez más potentes, cada vez más próximos a un ordenador.
P:¿Cuántas versiones hay de la JVM?
R: Podemos decir que JVM es un microprocesador, una emulación de una CPU en software, un microprocesador universal, por encima de la que hay una serie de librerías que manejan todo el interfaz de usuario, las comunicaciones de red, librerías que manejan las entradas/salidas… cuando esto se pone en la máquina de sobremesa la parte de interfaz gráfico, interfaz de usuario está presente y cuando está en un servidor se añaden una serie de funcionalidades específicas para una aplicación de back end y que en una de sobremesa no tiene sentido.
En una máquina de sobremesa está lo que hoy llamamos J2SE. En un servidor lo que tenemos es J2EE, que es lo mismo que tenemos en una máquina de sobremesa pero además en el servidor se añaden algunas cosas y unas librerías más específicas para el servidor.
Y luego, cuando nos vamos hacia dispositivos parece J2ME. Aquí ya empezamos a tener una dispersión muy grande, sistemas de televisión interactiva, consolas de juegos, PDAs, móviles, etc. Algunos de estos aparatos tienen tanta potencia o más que un PC o, por el contrario, tienen una fracción mínima de la potencia de un PC. El problema que tuvimos es que la JVM es muy grande para un teléfono móvil y se creo una versión específica más compacta, la KVM (K de kilobite). Aquí nos encontramos con diferencias notables de potencia del dispositivo y de interfaz. Prácticamente en ninguno de ellos tenemos lo que tenemos en un PC como un teclado, una pantalla de alta resolución donde pueda tener desplegadas múltiples ventanas, un dispositivo apuntador como el ratón con bastante precisión. Con lo cual la máquina virtual no sólo debe responder a la potencia sino que se han creado librerías específicas hay librerías específicas para salvar esas diferencias. Por ejemplo cuando se crea el perfil para el teléfono móvil, además de la funcionalidad estándar se añaden otras relacionadas con las comunicaciones, pero que no se incluyen la gestión multiventanas, por ejemplo, porque no tengo capacidad para ello.
P:¿Por qué los virus no afectan a Java?
R: No hay virus ni gusanos que afecten a Java, a la JVM. Lo que puede haber, y de hecho se han detectado cuatro a cinco, son vulnerabilidades, que además no se han detectado en Java como tal, sino en alguna implementación específica de Java que hayan dejado abierto algún agujero y que pueda echar abajo la máquina virtual. Pero un virus como tal no, porque el código binario que yo descargo al entorno no es código Intel o Power PC o código para cualquier otro microprocesador. Ese código no se va a ejecutar directamente sino que la máquina virtual siempre va a estar entre la CPU y ese código.
La JVM siempre va a estar entre los dos. Cuando descargo la aplicación directamente a la CPU, ésta toma el control en ese momento y lo que haga la aplicación ya no lo puedo frenar, lo único que puedo hacer es filtrar antes que esa aplicación no haga algo indebido, pero con las técnicas que usan los virus de hacer código que se modifica y este tipo de cosas, a veces es muy difícil. Por muy bueno que sea un antivirus, si no tengo la huella exacta, ese virus va a entrar y no hay nadie que supervise lo que está haciendo porque se está ejecutando directamente en la CPU. En Java siempre hay un estado de salvaguarda a través de la máquina virtual porque todo lo que pase por debajo de la máquina virtual lo va a filtrar ésta. El programa, la aplicación, le dice a la máquina virtual lo que quiere hacer y quien lo lleva a cabo es la máquina virtual y puede negarse a hacerlo.
Java, un visión de futuro
P: Java nace a principios de los ’80, se presenta en el 95, cuando la telefonía móvil estaba en sus albores, ya se ha adaptado perfectamente. ¿Qué visión tendrían los desarrolladores de lo que iba a pasar 20 años después para que Java siga siendo tan válida?
R: Sí, la verdad es que tuvieron una visión, una previsión increíble. Se juntaron en su momento una persona que creó el lenguaje de programación Java y toda la estructura binaria que un programa Java debe tener y la máquina virtual, James Gosling, y otra persona, Bill Joy, que hizo la primera implementación pública de TCP/IP, el protocolo base de Internet. A finales de los 70 y principios de los 80 Joy ya trabajaba en cosas que íbamos a ver muchísimos años después.
P:¿Qué fue del navegador HotJava que creó Sun?
R: Habíamos empezado a trabajar en nuestro propio navegador; la web todavía no despuntaba, no tenía visibilidad pero ya se habían establecido los principios, al menos sobre el papel, de la web, que eran HTML como lenguaje de descripción de páginas y http como protocolo de comunicación por encima de TCP/IP. Queríamos probar que aquello era viable e hicimos un navegador en Java y que a su vez soportaba Java. No sé realmente las razones por las que se abandonó pero en aquel momento Netscape tenía una posición muy fuerte en el mercado y también se produjo la entrada de Microsoft poco después con un peso cada vez mayor. Y realmente, el soporte, el apoyo a Java, que era lo que realmente le interesaba a Sun, ya estaba cubierto, por eso creo que se dejó de lado HotJav y no hay planes de que se vaya a recuperar.
Objetivo cumplido
P: IBM ha propuesto que Java sea de código abierto, ¿qué opina? ¿por qué cree que IBM ha dado este paso?
R: Está muy claro el apoyo de IBM a Java y la utilización de Java en todas sus plataformas, desde la más pequeña al mayor de los mainframes. Quizá lo que no le gusta es trabajar con una tecnología propietario de una compañía con la que además de ser partners en algunas áreas somos competidores en otras. Supongo que preferiría que Java estuviera en código abierto y que nadie tuviera el control sobre ello.
Es muy legítimo ese deseo, pero la postura de Sun no es la misma y fundamentalmente por una razón: con todas las ventajas que iniciativas de código abierto como Linux tiene, también tiene inconvenientes. Cualquier usuario de Linux se ha enfrentado a los inconvenientes de múltiples distribuciones de Linux, cada una con funcionalidades específicas y aplicaciones que funcionan para una distribución pero no con otras y tienes que compliar y empaquetar continuamente la aplicación porque está hecha para RedHat o para SuSE. Creo que realmente es uno de los frenos de Linux, que además tiene dos entornos gráficos muy extendidos que son completamente diferentes (Gnome o KDE) y las aplicaciones que funcionan en uno no funcionan en otro. Y eso es lo que queremos evitar, la fragmentación de Java en ese sentido.
P:¿Se han cumplido los objetivos de Java?
R: Java ha llegado muchísimo más lejos de lo que se podía pensar en el año 95, cuando sale al mercado; infinitamente más lejos. En algunas áreas, como la de telefonía móvil, con una presencia fundamental, con más de 250 millones de teléfonos Java en el mercado. Algunas firmas de investigación de mercado, como ARC Group prevén, para marcos de tiempo de 2007 o 2008, en torno a mil millones de teléfonos Java, lo que vendrá a suponer en ese momento en torno al 80-90 por ciento de todos los teléfonos móviles del mundo. El negocio de descargas de juegos Java supera ya los 3.000 millones de dólares y se habla de 15.000 millones para el año 2007-2008.
Java va mucho más allá de Sun, trasciende a Sun