An efficient implementation of Java's remote method invocation

  • Authors:
  • Jason Maassen;Rob van Nieuwpoort;Ronald Veldema;Henri E. Bal;Aske Plaat

  • Affiliations:
  • Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, The Netherlands;Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, The Netherlands;Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, The Netherlands;Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, The Netherlands;Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, The Netherlands

  • Venue:
  • Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
  • Year:
  • 1999

Quantified Score

Hi-index 0.03

Visualization

Abstract

Java offers interesting opportunities for parallel computing. In particular, Java Remote Method Invocation provides an unusually flexible kind of Remote Procedure Call. Unlike RPC, RMI supports polymorphism, which requires the system to be able to download remote classes into a running application. Sun's RMI implementation achieves this kind of flexibility by passing around object type information and processing it at run time, which causes a major run time overhead. Using Sun's JDK 1.1.4 on a Pentium Pro/Myri.net cluster, for example, the latency for a null RMI (without parameters or a return value) is 1228 μsec, which is about a factor of 40 higher than that of a user-level RPC. In this paper, we study an alternative approach for implementing RMI, based on native compilation. This approach allows for better optimization, eliminates the need for processing of type information at run time, and makes a light weight communication protocol possible. We have built a Java system based on a native compiler, which supports both compile time and run time generation of marshallers. We find that almost all of the run time overhead of RMI can be pushed to compile time. With this approach, the latency of a null RMI is reduced to 34 μsec, while still supporting polymorphic RMIs (and allowing interoperability with other JVMs).