Использует ли 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 и используют ту же логику.
Ответ 2
Нет, отладчики обычно используют JDI.
com.sun.jdi.VirtualMachine # redefineClasses
Подробнее см. следующую ссылку.
http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html