Como depurar / alterar o código Java enquanto o programa está sendo executado?


15

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?


1
E assim é a extensão do processo de QA do Notch.
DeadMG

1
De acordo com um Q & A mais velha no Stack Overflow , isso poderia ser feito com ACDP característica que faz "HotSwap" Classe do Arquivo de Substituição
mosquito

Lol, também veio aqui depois desse vídeo.
Ciro Santilli publicou em 6/04/16

Respostas:


4

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.


+1 O JRebel é ótimo para "hot coding" fora de um IDE como o Eclipse.
Jalayn

4

É 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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.