Как отлаживать / изменять код Java во время работы программы?

15

Я только что видел видео, показывающее, как Notch (из Minecraft славы) отлаживает и меняет Minecraft во время его работы. Он приостанавливает игру, что-то меняет в коде, а затем останавливает игру, где изменения вступают в силу немедленно, без необходимости перезапуска программы.

Как это работает? Какой вид техники используется для достижения этой цели?

Rotora
источник
1
И, таким образом, степень процесса контроля качества Notch.
DeadMG
1
В соответствии с более ранними вопросами и ответами в Stack Overflow , это можно сделать с помощью функции JPDA, которая выполняет замену файла класса «HotSwap»
gnat
Lol, также пришел сюда после этого видео.
Сиро Сантилли 新疆 新疆 中心 法轮功 六四 事件

Ответы:

4

Java может делать горячую замену из коробки. Если вы используете IDE, такую ​​как Eclipse, она будет работать для смены тел методов. Если вы хотите применить другие изменения кода, вы можете использовать инструмент. JRebel - это продукт, который поддерживает больше случаев.

Я не хочу заниматься маркетингом этого продукта, но лично я не знаю другой альтернативы. На сайте JRebel есть отличное сравнение функций .

Надеюсь, это поможет.

Обычный Джон
источник
+1 JRebel отлично подходит для «горячего кодирования» вне среды IDE, такой как Eclipse.
Джалайн
4

Это называется горячей заменой кода и позволяет среде IDE изменять работающий код через интерфейс отладки. Он поддерживается Sun JVM начиная с Java 1.4.1

Однако, если вы не используете (коммерческое) расширение JRebel JReM, оно ограничено изменениями внутри тел методов. Если вы добавляете / удаляете методы или классы или меняете подписи, вам нужно перезапустить JVM.

Майкл Боргвардт
источник
Правильная ссылка сейчас: wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Пьер