Promises: linguistic support for efficient asynchronous procedure calls in distributed systems
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Reducing cross domain call overhead using batched futures
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Compositional pointer and escape analysis for Java programs
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java Language Specification
The Java Language Specification
Efficient Object Caching for Distributed Java RMI Applications
Middleware '01 Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Principles for Optimizing CORBA Internet Inter-ORB Protocol Performance
HICSS '98 Proceedings of the Thirty-First Annual Hawaii International Conference on System Sciences-Volume 7 - Volume 7
Java Examples in a Nutshell, 3rd Edition
Java Examples in a Nutshell, 3rd Edition
Efficient implementations of java remote method invocation (RMI)
COOTS'98 Proceedings of the 4th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 4
Overcoming barriers to restructuring in a modular visualisation environment
LCR '04 Proceedings of the 7th workshop on Workshop on languages, compilers, and run-time support for scalable systems
Adapting Java RMI for grid computing
Future Generation Computer Systems - Special issue: Parallel computing technologies
Formalising Java RMI with explicit code mobility
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Re-scheduling invocations of services for RPC grids
Computer Languages, Systems and Structures
Efficient execution of composite Web services exchanging intensional data
Information Sciences: an International Journal
Formalising Java RMI with explicit code mobility
Theoretical Computer Science
Language design for distributed objects
Proceedings of the 1st International Workshop on Distributed Objects for the 21st Century
Remote Batch Invocation for Compositional Object Services
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Adapting Java RMI for grid computing
Future Generation Computer Systems - Special issue: Parallel computing technologies
A declarative framework for analysis and optimization
CC'07 Proceedings of the 16th international conference on Compiler construction
A domain-specific interpreter for parallelizing a large mixed-language visualisation application
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Efficient session type guided distributed interaction
COORDINATION'10 Proceedings of the 12th international conference on Coordination Models and Languages
Science of Computer Programming
Hi-index | 0.00 |
We present an automated run-time optimisation framework that can improve the performance of distributed applications written using Java RMI whilst preserving its semantics. Java classes are modified at load-time in order to intercept RMI calls as they occur. RMI calls are not executed immediately, but are delayed for as long as possible. When a dependence forces execution of the delayed calls, the aggregated calls are sent over to the remote server to be executed in one step. This reduces network overhead and the quantity of data sent, since data can be shared between calls. The sequence of calls may be cached on the server side along with any known constants in order to speed up future calls. A remote server may also make RMI calls to another remote server on behalf of the client if necessary. Our results show that the techniques can speed up distributed programs significantly, especially when operating across slower networks. We also discuss some of the challenges involved in maintaining program semantics, and show how the approach can be used for more ambitious optimisations in the future.