Come eseguire il debug / modificare il codice Java mentre il programma è in esecuzione?


15

Ho appena visto un video che mostra come Notch (di fama di Minecraft) stia eseguendo il debug e cambiando Minecraft mentre è in esecuzione. Mette in pausa il gioco, modifica qualcosa nel codice e quindi interrompe il gioco in cui la modifica ha effetto immediato senza la necessità di riavviare il programma.

Come funziona? Quale tipo di tecnica viene utilizzata per raggiungere questo obiettivo?


1
E così è l'estensione del processo di controllo qualità di Notch.
DeadMG

1
Secondo una precedente domanda e risposta a Stack Overflow , questo potrebbe essere fatto con la funzione JPDA che esegue la sostituzione di file di classe "HotSwap"
moscerino

Lol, è venuto anche qui dopo quel video.
Ciro Santilli 6 改造 中心 法轮功 六四 事件

Risposte:


4

Java può eseguire hot-swap immediatamente. Se usi un IDE come Eclipse funzionerà per cambiare il metodo-corpi. Se si desidera applicare altre modifiche al codice, è possibile utilizzare uno strumento. JRebel è un prodotto che supporta più casi.

Non voglio fare marketing per quel prodotto, ma personalmente non conosco altre alternative. Sul sito Web di JRebel c'è un bel confronto delle funzionalità .

Spero possa aiutare.


+1 JRebel è ottimo per la "codifica a caldo" al di fuori di un IDE come Eclipse.
Jalayn,

4

Si chiama hot code sostitutivo e consente a un IDE di modificare il codice in esecuzione dal vivo tramite l'interfaccia di debug. È supportato da Sun JVM da Java 1.4.1

Tuttavia, a meno che non si utilizzi l'estensione JVM (commerciale) JRebel, è limitata alle modifiche all'interno dei corpi del metodo. Se aggiungi / rimuovi metodi o classi o modifichi le firme, devi riavviare JVM.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.