Load balancing and fault tolerance in dynamic systems require the technical ability to migrate threads at runtime and to create and restore checkpoints as a basic precondition; a prominent example of such a big dynamic system is the web computing library PUB-Web. The Paderborn Thread Migration and Checkpointing (PadMig) library provides support for thread migration and checkpointing for the Java programming language.
PadMig includes a source-to-source compiler which transforms properly annotated Java source code into migratable Java code. Using these special annotations, the Java programming language definition is not modified, i.e., developers can keep using their favorite IDEs without any drawbacks; furthermore, there is no need to maintain two versions of the source code: if you like to have a non-migratable version of your code, simply skip the intermediate compilation step with the PadMig compiler. As the PadMig compiler is written in Java itself, it is available for all important platforms.
PadMig is based on the same basic idea as JavaGo, which has been developed by Tatsurou Sekiguchi at the University of Tokyo. However, PadMig differs from JavaGo in two major points: PadMig does not modify the Java language definition, and PadMig is intended and suitable for production use; a promiment example of its application is the web computing library PUB-Web.