This project can be tailored to both Bachelor and Master level.
Java offers interesting approaches to obtain bytecode of currently running classes. By using easy tricks, this runtime bytecode can be decompiled – https://research.redhat.com/blog/theses/decompilation-of-restored-in-memory-class-fragments-in-running-jvm/
The goal of this thesis is to enable composition of in-memory dependence tree, and compile a freshly decompiled class back to a running JVM. The replacement of classes in a running JVM has its limitations, which can be overrun by using a different VM, a patching hotspot or by tricks similar to Byteman. The student will be taught how to do those tricks.