El mundo del software en muchos sentidos es paradójico particularmente por la flexibilidad de los lenguajes de computadora. Por ejemplo, hay compiladores que se compilan así mismos. ¿Cómo puede ser posible eso? Pues bien, una vez que uno ha entendido que esto es posible pareciera que cosas más sorprendentes no pueden existir. Sin embargo, el software siempre nos depara nuevas sorpresas.

Por ejemplo, ahora hay una máquina virtual de Java que fue escrita en JavaScript, asunto que parece realmente de locos. De hecho, esto es posible de escribir, pero si consideramos que Java está en la cima de la montaña y JavaScript en las faldas de la misma, como que las posiciones en jerarquía parecen haber cambiado.

Java es un lenguaje compilado, pero no genera código de máquina, sino algo llamado bytecode, que es el código de una máquina virtual, creada por los inventores de lenguaje (Sun Microsystems, hoy desaparecida cuando Oracle la compró). Esto es parecido al intérprete sweet16 que tenía la Apple, escrito por Steve Wozniak hace ya algunos años.

La idea de las máquinas virtuales es que la portabilidad entonces es posible. Lo que hay que hacer es escribir una máquina virtual para cada plataforma y el código del compilador, en este caos el bytecode, podrá entonces ejecutarse en esa máquina. Esta tarea parece ser más simple que escribir un compilador para cada plataforma.

Obviamente no hay nada que impida a un programador intrépido implementar en cualquier lenguaje que se deseé, otro lenguaje. El único problema realmente complicado de resolver muchas veces es que la implementación sea lo suficientemente rápida para que los programas se ejecuten a una velocidad razonable.

Hasta hace poco, implementar una máquina virtual de Java en JavaScript había sido difícil simplemente por los problemas de eficiencia, pero los últimos motores de JavaScript parecen haber solucionado el problema. Tan es así que un solo programador, Artur Ventura, implementó una buena parte del la máquina virtual de Java (JVM) usando JavaScript. En el blog del programador se explica lo que hizo.

Artur dice que en lugar de construir JavaScript dentro de los navegadores, deberían haber armado una máquina virtual, la cual podría haber usado cualquier lenguaje que se deseara. Parece que tienen mucho más sentido construir una JVM en el navegador pero al no hacerse, ¿por qué no emular la JVM en JavaScript? se pregunta el programador, el cual está construído en cada navegador.

Después de 6 meses de trabajo el resultado es BicaVM, el cual dice, corre 60% del bytecode. No ha sido optimizado, pero ya corre en el iPad e iPhone y soporta la interfaz JNI de DOM.

No está claro que esto tenga alguna utilidad. Sin embargo, es una prueba de que el navegador podría ser tratado como una máquina virtual por derecho propio. Aún así, pensar en que JavaScript puede correr programas de Java es como quizás pensar que el nuevo lenguaje ensamblador de la era de Internet es JavaScript.

Fuente: i-programmer

Enlaces Patrocinados
Comentarios