Acabei de ver um vídeo mostrando como o Notch (da fama do Minecraft) está depurando e alterando o Minecraft enquanto está em execução. Ele pausa o jogo, altera algo no código e depois pausa o jogo, onde a alteração entra em vigor imediatamente sem a necessidade de reiniciar o programa.
Como é que isso funciona? Que tipo de técnica é usada para conseguir isso?
Respostas:
Java pode fazer hot-swap fora da caixa. Se você usar um IDE como o Eclipse, ele funcionará para alterar os corpos dos métodos. Se você deseja aplicar outras alterações de código, poderá usar uma ferramenta. JRebel é um produto que suporta mais casos.
Não quero fazer marketing para esse produto, mas pessoalmente não conheço nenhuma outra alternativa. No site da JRebel, há uma boa comparação de recursos .
Espero que ajude.
fonte
É chamado de substituição de código quente e permite que um IDE altere o código em execução ao vivo por meio da interface de depuração. É suportado pela Sun JVM desde o Java 1.4.1
No entanto, a menos que você use a extensão JRebel JVM (comercial), ela estará limitada a alterações dentro dos corpos do método. Se você adicionar / remover métodos ou classes ou alterar assinaturas, precisará reiniciar a JVM.
fonte