COOTS 2001 Abstract
Making Java Applications Mobile or Persistent
Sara Bouchenak, SIRAC Laboratory (INPG-INRIA-UJF)
Today, mobility and persistence are important aspects of distributed applications.
They have many fields of use such as load balancing, fault tolerance and
dynamic reconfiguration of applications. In this context, the Java virtual
machine provides many useful services such as dynamic class loading and
object serialization which allow Java code and objects to be mobile or
persistent. However, Java does not provide any service for the mobility
or the persistence of control flows (threads), the execution state of a
Java program remains inaccessible.
We designed and implemented new services that make Java threads mobile
or persistent. With these services, a running Java thread can, at an arbitrary
state of its execution, migrate to a remote machine or be checkpointed
on disk for a possible subsequent recovery.
Therefore migrating a Java thread is simply performed by the call of
our go primitive, by the thread itself or by an external thread. In other
words, the migration or the checkpointing of a thread can be initiated
by the thread itself or by another thread.
We integrated these services into the JVM, so they provide reasonable
and competitive performance figures without inducing an overhead on JVM
performance. Finally, we experimented a dynamic reconfiguration tool based
on our mobility service and applied to a running distributed application.
- View the full text of this paper in
HTML form, and
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.