2014-07-25 17 views
5

Ho programmato in Java e mi piace molto la funzionalità di Netbeans e altri IDE che consente di apportare modifiche al programma durante il debug senza doverlo riavviare. Sto scrivendo un'applicazione in Java che sarebbe utile se potessi aggiornarlo al volo senza doverlo riavviare. Ho avuto l'idea di avere un secondo jar che potrei eseguire quando aggiornato, che sarebbe in grado di fare la stessa cosa che fanno gli IDE, ma non ho idea di come si scambiano il codice. Qualcuno può illuminarmi? Grazie!Funzionamento del codice hot swapping

+0

mi piacerebbe prendere in considerazione la lettura di [questo] (http://stackoverflow.com/questions/7989135/is -E-possibile-di-programmazione-compilazione-java-sorgente-codice in memoria di sola). In ogni caso, la risposta accettata probabilmente si adatta alle tue esigenze. – ChiefTwoPencils

+1

Dai un'occhiata a JDWP e in particolare a [JDI] (http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html#jdi). –

risposta

3

IDE come Eclipse, quando il debug utilizza la JDI (interfaccia di debug Java). Si tratta di una raccolta di API Java che consentono di creare/collegare su Java Virtual Machines esterne. Questo può essere utilizzato in combinazione con un agente Java che può essere utilizzato per ridefinire le classi nella macchina virtuale. Che cosa fa Eclipse durante la modalità di debug è creare una nuova macchina virtuale con il codice in esecuzione al suo interno. Quando esegui una modifica e ricomponi; eclipse quindi dice alla JVM di ridefinire le classi che sono state cambiate, inviando il nuovo byte-code.

È possibile leggere il JDI documentation e dare un'occhiata allo Java instrument class in particolare per configurare un trasformatore di classe. Ecco una domanda correlata su setting up a JDI launcher (avvio di una nuova JVM).