En el mundo de los lenguajes de programación existe una gran flexibilidad. Una vez que se acepta la idea de un compilador escrito en el mismo lenguaje que lo compila, no queda demasiado por pensar. Pero una Máquina Virtual de Java creada en JavaScript suena como otro nivel de locura.
No es una cosa imposible o inimaginable, pero usualmente parece ser una locura por el hecho de que Java se considera el lenguaje grande y JavaScript el lenguaje pequeño.
JavaScript es un lenguaje puramente interpretado que manejan los navegadores de Internet, mientras que Java se compila, no a lenguaje máquina, sino a algo llamado Byte code, el cual es interpretado por algo que funciona directamente en lenguaje máquina. Por esta razón JavaScript siempre ha sido mucho más lento que Java, y tratar de interpretar el código de Java en JavaScript no hubiera producido código que funcionara lo suficientemente rápido para ser usable.
Pero los recientes avances en la velocidad de ejecución de JavaScript en los navegadores han hecho posible esto. Artur Ventura lo hizo, y publicó el código en Github. De acuerdo a Artur, los navegadores no deberían traer un lenguaje de programación sino una máquina virtual para que cualquier programa hecho en cualquier lenguaje de programación funcionara en un navegador.
Fuentes:
www.i-programmer.info (en inglés)
Blog de Artur Ventura (en inglés)
El proyecto en Github