Developing Java applications is often slowed down by being forced to restart a Virtual Machine (VM) after each modification of the code in order to test it. There is no way to explicitly unload single classes or small interdependent groups of classes, instead of unloading everything (by shutting down the VM).
In this project (which is part of an ongoing PhD thesis work) we try to keep one single VM running all the time, so that start-up delay will occur only once. From within the single "application manager" application, we start and stop other applications and allow explicit unloading of classes. All applications that are executing within this environment share all loaded classes entirely, i.e. all code and data is loaded only once and then reused (shared).
This not only reduces the class loading effort Java) unique way of interaction and cooperation between different applications, because they
can all see and modify each others' state.