¿Cómo depurar / cambiar el código Java mientras el programa se está ejecutando?

14

Acabo de ver un video que muestra cómo Notch (de Minecraft) está depurando y cambiando a Minecraft mientras está corriendo. Pausa el juego, cambia algo en el código y luego reanuda el juego donde el cambio tiene efecto inmediato sin necesidad de reiniciar el programa.

¿Cómo funciona esto? ¿Qué tipo de técnica se utiliza para lograr esto?

    
pregunta RoToRa 16.02.2012 - 09:45

2 respuestas

4

Java puede hacer un intercambio en caliente fuera de la caja. Si utiliza un IDE como Eclipse, funcionará para cambiar los cuerpos de los métodos. Si desea aplicar otros cambios de código, es posible que desee utilizar una herramienta. JRebel es un producto que admite más casos.

No quiero hacer marketing para ese producto, pero personalmente no conozco ninguna otra alternativa. En el sitio web de JRebel hay una bonita comparación de características .

Espero que ayude.

    
respondido por el Regular John 16.02.2012 - 10:37
3

Se llama hot code replace y permite que un IDE cambie el código de ejecución en vivo a través de la interfaz de depuración. Ha sido soportado por Sun JVM desde Java 1.4.1

Sin embargo, a menos que use la extensión JRebel JVM (comercial), se limita a los cambios dentro de los cuerpos de los métodos. Si agrega / elimina métodos o clases, o cambia las firmas, debe reiniciar la JVM.

    
respondido por el Michael Borgwardt 16.02.2012 - 10:50

Lea otras preguntas en las etiquetas