Принципы в заметке общие для почти любого языка программирования и системы исполнения, но акцент будет на jvm. Рассмотрим два основных подхода по модификации программы:
* манипуляции с исполняемым кодом программы после компиляции или во время загрузки кода;
* изменение исходного кода перед компиляцией.
![][1] [Читать дальше →][2]
[1]:
https://habrastorage.org/files/b41/afe/133/b41afe133ab646b48568f7b25d0f875c.jpg
[2]:
http://habrahabr.ru/post/269037/#habracut