JV2M
JV2M es un juego para conocer la estructura de la máquina virtual de Java (JVM) y aprender las ideas básicas de la compilación de lenguajes orientados a objetos. Se supone que los jugadores (estudiantes de Informática) ya saben programar en un lenguaje orientado a objetos como Java
El juego se desarrolla en una representación metafórica de la JVM, ambientada en una nave espacial. Cada elemento de la JVM tiene una correspondencia con objetos de la nave. A continuación presentamos un ejemplo de sesión del juego.
|
Al principio de la sesión, el estudiante se identifica como "Guru". Al principio del nivel el jugador se encuentra en una habitación que representa el frame actual, el registro de activación del método que se está ejecutando. El jugador se pasea por el nivel y prueba los dos modos de cámara disponibles. El jugador va luego a un terminal, donde se muestra que está ejecutando el método "main" de la clase "main". |
||
|
El jugador sigue recorriendo el nivel y llega a una puerta. Con la visión de rayos X descubre que la puerta está bloqueada y no permite acceder a otros frames. La puerta se abrirá cuando se ejecute la invocación a un método. A continuación el jugador se dirige a un teletransportador que le llevará a la habitación donde se encuentra el código del método a ejecutar. |
|
|
|
|
Usando el teletransportador, el jugador llega a la habitación con
el código del método. Para salir de la habitación es necesario
volver a utilizar el teletransportador. A través del terminal de
esta habitación, el jugador descubre el código que debe compilar:
Que en el ensamblador (bytecodes) de la JVM se traduce a:
|
|
|
Usando el teletransportador, el jugador vuelve a la sala del frame. Delante del terminal, activa la consola y escribe la primera instrucción a ejecutar: "bipush 5". El terminal le informa de que para ejecutar esa instrucción necesitamos conseguir el recurso "5" del entorno |
|
|
|
|
Para conseguir los recursos, es necesario utilizar un arma y cazar unos cuantos bichos que se mueven por la nave. Estos bichos esconden los recursos que buscamos, que, una vez adquiridos, nos permitirán ejecutar los bytecodes que los usan |
|
|
El estudiante abre la consola y escribe "bipush 5". La instrucción se ejecuta correctamente, con lo que aparece una caja marcada con la letra "I" (de integer) en la cima de la pila de operandos a un lado del terminal. La vista de rayos X nos permite comprobar que la caja contiene un 5. El jugador escribe entonces "bipush 3" y aparece una nueva caja. Por último, la instrucción "imul" ejecuta la multiplicación de los dos operandos, desapilándolos primero y colocando el resultado en la cima de la pila, una caja con el número 15 |
|
|
|
|
La última instrucción es "istore_1", que desapila el entero de la cima de la pila de operandos y lo almacena en la primera variable local del frame, que aparece al otro lado del terminal. La vista de rayos X confirma que la caja contiene el número 15 |
|