Использует ли eclipse API Java Instrumentation для замены Hot Code

Недавно у меня была задача, когда мне пришлось использовать функцию замены горячего кода. Таким образом, я сделал это с использованием Java Instrumentation API, доступного в tools.jar.

Использует ли eclipse какую-то другую логику для горячей замены новых файлов классов или использует тот же Java API? Я пытался читать из некоторых мест, но не был ясен:

Отладчик Eclipse Java передает новые файлы классов по отладке канал к другому JVM

Эта строка в Eclipse Hot Code Replace была неясной.

Ответы

Ответ 1

Я считаю, что eclipse использует ту же логику, оба они полагаются на собственный интерфейс JVMTI. JVMTI предоставляет инструменты для проверки состояния и управления выполнением приложений, работающих на виртуальной машине Java.

В реализации инструментария Java есть агент JVMTI. Агент разговаривает с vm и выполняет определенные задачи. он также имеет метод redefineClasses.

Отладчик Java Eclipse или другие инструменты используют JPDA (архитектура отладки Java-платформы), а JPDA состоит из трех частей (JVMTI, JDWP, JDI). JVMTI действует как debuggee, JDI действует как отладчик, а JDWP выступает в качестве канала связи между ними.

В конце концов, все они разговаривают с JVMTI и используют ту же логику.