The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
IEEE Transactions on Software Engineering
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Persistent execution state of a Java virtual machine
Proceedings of the ACM 2000 conference on Java Grande
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java Virtual Machine Specification
Java Virtual Machine Specification
Distributed Systems: Principles and Paradigms
Distributed Systems: Principles and Paradigms
Transparent Migration of Java-Based Mobile Agents
MA '98 Proceedings of the Second International Workshop on Mobile Agents
Bytecode Transformation for Portable Thread Migration in Java
ASA/MA 2000 Proceedings of the Second International Symposium on Agent Systems and Applications and Fourth International Symposium on Mobile Agents
Portable Support for Transparent Thread Migration in Java
ASA/MA 2000 Proceedings of the Second International Symposium on Agent Systems and Applications and Fourth International Symposium on Mobile Agents
Sumatra: A Language for Resource-Aware Mobile Programs
MOS '96 Selected Presentations and Invited Papers Second International Workshop on Mobile Object Systems - Towards the Programmable Internet
Design, implementation and evaluation of adaptive recompilation with on-stack replacement
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
JESSICA2: A Distributed Java Virtual Machine with Transparent Thread Migration Support
CLUSTER '02 Proceedings of the IEEE International Conference on Cluster Computing
Efficient Java thread serialization
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
IBM Systems Journal
Experiences implementing efficient Java thread serialization, mobility and persistence
Software—Practice & Experience - Research Articles
Strong agent mobility for aglets based on the IBM JikesRVM
Proceedings of the 2006 ACM symposium on Applied computing
Wireless hotspots: current challenges and future directions
Mobile Networks and Applications - Special issue: Wireless mobile wireless applications and services on WLAN hotspots
A framework for unified resource management in Java
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
The PIM: an innovative robot coordination model based on Java thread migration
Proceedings of the 6th international symposium on Principles and practice of programming in Java
A framework for response-awaiting-service migration in Ubiquitous Computing
Proceedings of the Second International Conference on Computational Science, Engineering and Information Technology
Static analysis for dynamic updates
Proceedings of the 9th Central & Eastern European Software Engineering Conference in Russia
Hi-index | 0.00 |
Today's complex applications must face the distribution of data and code among different network nodes. Computation in distributed contexts is demanding increasingly powerful languages and execution environments, able to provide programmers with appropriate abstractions and tools. Java is a wide-spread language that allows developers to build complex software, even distributed, but it cannot handle the migration of computations (i.e. threads), due to intrinsic limitations of many traditional JVMs. After analyzing the approaches in the literature, this paper presents our thread migration framework (called Mobile JikesRVM), implemented on top of the IBM Jikes Research Virtual Machine (RVM): exploiting some of the innovative techniques in the JikesRVM, we implemented an extension of its scheduler that allows applications to easily capture the state of a running thread and makes it possible to restore it elsewhere (i.e. on a different hardware architecture or operating system), but still with a version of the framework installed). Our thread serialization mechanism provides support for both proactive and reactive migration, available also for multi-threaded Java applications, and tools to deal with the problems of resource relocation management. With respect to previous approaches, we implemented Mobile JikesRVM without recompiling its JVM (Java Virtual Machine) source code, but simply extending JikesRVM functionalities with a full Java package to be imported when thread migration is needed.