Making Java applications mobile or persistent

  • Authors:
  • Sara Bouchenak

  • Affiliations:
  • INPG (Institut National Polytechnique de Grenoble) and SIRAC Laboratory (INPG-INRIA-UJF), INRIA Rhône-Alpes, Montbonnot St Martin, France

  • Venue:
  • COOTS'01 Proceedings of the 6th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 6
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.