Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por Sun Microsystems.Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo esta la que en última instancia convierte de código bytecode a código nativo del dispositivo final.La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje, de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas, y, así, un programa .class escrito en Windows puede ser interpretado en un entorno Linux.De ahí el famoso axioma que sigue a Java: "escríbelo una vez, ejecútalo en cualquier parte" ("Write once, run anywhere").Las especificaciones para la JVM están publicadas en lo que se conoce como "el libro azul".[3] Así reza el prefacio: Esperamos que esta especificación documente suficientemente la Máquina Virtual de Java para hacer posibles implementaciones desde cero.Esta última opción convierte el bytecode a código nativo de la plataforma destino, lo que permite una ejecución mucho más rápida.Para cada dispositivo debe haber una JVM específica, ya sea un teléfono móvil, un PC con Windows XP o un microondas.La JVM tiene instrucciones para los siguientes grupos de tareas: La clave es la compatibilidad binaria.Estas JVM interpretan el bytecode semánticamente de la misma manera, pero la implementación actual puede variar.