2013-01-19 17 views
15

Recentemente ho avuto un compito in cui dovevo utilizzare la funzionalità di sostituzione del codice a caldo. Così l'ho fatto usando la Java Instrumentation API disponibile in tools.jar.eclipse utilizza l'API di strumentazione Java per la sostituzione del codice a caldo

eclipse utilizza una logica diversa per la sostituzione a caldo di nuovi file di classe o utilizza la stessa API Java? Ho provato a leggere da alcuni posti, ma non sono stato chiaro:

debugger Eclipse Java trasmette i nuovi file di classe oltre il canale di debug ad un'altra JVM

Questa linea in Eclipse Hot Code Replace non era chiara.

+0

Il tuo link è rotto, prova questo - http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F. – Perception

+0

@Perception L'ho cambiato nw funziona –

+0

Eclipse è open source - perché non * guardi *? Puoi avere un vantaggio su come guardarlo qui: http://www.vogella.com/articles/EclipseCodeAccess/article.html. INOLTRE: se la tua soluzione ha "funzionato", allora cosa ti interessa * come fa Eclipse? – paulsm4

risposta

7

Credo che Eclipse usi la stessa logica, entrambi si affidano a un'interfaccia nativa chiamata JVMTI. JVMTI fornisce strumenti per ispezionare lo stato e controllare l'esecuzione delle applicazioni in esecuzione nella Java virtual machine.

C'è un agente di JVMTI nell'implementazione di strumentazione Java. L'agente di parlare con VM ed eseguire determinate attività. ha anche il metodo redefineClasses.

Eclipse Java debugger o altri strumenti utilizzano JPDA (Java Platform Debugger Architecture) e la JPDA ha principalmente tre parti (JVMTI, JDWP, JDI). JVMTI funge da debuggee, JDI funge da debugger e JDWP funge da canale di comunicazione tra di loro.

Alla fine, tutti parlano con JVMTI e utilizzano la stessa logica.

+0

Ottima risposta a una domanda povera :) – paulsm4

Problemi correlati