JReloader

Reloader is a tool that enables class reloading while the JVM is still running. JReloader is a must-have tool for developers that need to change small pieces of code on-the-fly without the burden of restarting the application.
With JReloader it's even possible to reload classes with instances actively invoked by one or more threads. Current invocations will see the old code until they return. New invocations will always see the new code. Most of the time everything works fine. This all is made possible by JVMTI, an API available since Java 1.5.
Limitations
Only changes in method bodies can be reloaded. Changes in class signature are not allowed.