Java Remote Method Invocation


Java Remote Method Invocation (RMI) is a Java API that allows an object to invoke methods on an object running in another JVM (Java Virtual Machine). Essentially, it enables objects to communicate and interact across different networked environments, facilitating distributed computing. It uses object serialization to pass and return objects, maintaining the state of these objects throughout.


The phonetics of the keyword: Java Remote Method Invocation are: Java: /ˈjɑːvə/Remote: /rɪˈmoʊt/Method: /ˈmɛθəd/Invocation: /ˌɪnvəˈkeɪʃən/

Key Takeaways

  1. Functionality: Java Remote Method Invocation (RMI) allows objects located in different Java Virtual Machines (JVMs) to invoke methods on each other. The JVMs could be located in different systems across a distributed network.
  2. Interface and Implementation: The RMI mechanism involves defining a remote interface and an implementing class. The remote interface outlines the methods that can be invoked remotely while the implementing class provides the actual code bodies for these methods.
  3. Registries and Stub/Skeleton Objects: RMI uses a Registry service to facilitate the linking between a client and server. It also utilizes stub and skeleton objects- the stub object sits on the client side acting as a gateway for any remote method calls, while the skeleton object lives on the server side, receiving method calls from the stub and invoking them on the real object.


Java Remote Method Invocation (RMI) is a critical technology term because it enables the creation of distributed applications in Java. Java RMI facilitates object-oriented communication between Java Virtual Machines (JVMs), allowing an object on one JVM to invoke the methods of an object on another JVM. This process can occur either on the same machine or across networked machines. This capability enables developers to design and implement complex, distributed systems that combine resources from different locations, enhancing the scalability and flexibility of the applications. Moreover, the use of Java RMI underscores the object-oriented nature of Java, leveraging encapsulation, polymorphism, and other object-oriented principles to foster development of robust, secure, and high-performance distributed applications.


Java Remote Method Invocation (RMI) is a technology effectively used in Java’s computing environment to activate or invoke methods across a network. It creates a distributed environment where interaction between JVMs (Java Virtual Machines) can occur regardless of their network locations. The primary use of RMI is to develop distributed applications; in other words, applications that operate on more than one system simultaneously.RMI exceeds boundaries of a single system memory allowing objects on JVM to invoke methods on an object even running on another JVM in a different machine. These interactions can lead to the execution of business logic, where the data from one system interacts with the methods on another system to produce the desired outcome. For example, RMI is crucial in developing systems like E-commerce where the user interface, database, and payment systems can exist on separate networks or systems, and the seamless communication between those elements is essential.


1. Distributed Applications: Java RMI is widely used in creating and managing distributed applications where objects on different systems can directly communicate with each other. It is popularly used in enterprise level applications, banking systems, and various other fields that need systems running on different servers to talk to each other reliably and effectively. 2. Multiplayer Online Games: Java RMI is used in many multiplayer online games. It allows multiple clients, i.e., the players on their respective devices, to invoke methods taking place on a server, such as changes in the game state or player movements. 3. Collaborative Systems: Applications like Google Docs, where multiple people can work on the same document simultaneously, often use Java RMI to handle the communication between the different users’ systems and the server where the document is held. This lets all users see real-time changes made by others.

Frequently Asked Questions(FAQ)

Q: What is Java Remote Method Invocation (RMI)?A: Java Remote Method Invocation (RMI) is a Java API that allows an object to invoke methods on an object running in another JVM (Java Virtual Machine). This allows for distributed computing or remote procedure calls.Q: How does Java RMI work? A: Java RMI works by creating remote objects, registering them in the registry and then allowing client applications to call methods of the remote objects.Q: What is a JVM and why is it important in RMI?A: A JVM or Java Virtual Machine is an abstract computing machine which allows a computer to run a Java program. It is critical in RMI because it enables objects to invoke methods on an object that exists in another JVM.Q: How secure is Java RMI?A: Java RMI offers several features that enhance security, like socket-based communications which are protected by the Java sandbox security policies. However, it is always important to implement additional security measures to ensure data integrity and confidentiality.Q: Is Java RMI only applicable for Java-based applications?A: Although Java RMI is a Java API, it can interact with programs written in languages that support Java-RMI-like (JVM-level) features. However, doing this might cause complications and may not be as straightforward as using it with Java-to-Java applications.Q: What is the role of a stub in Java RMI?A: A stub in Java RMI acts as a gateway for the client-side objects. The stub receives the invocation from the client, then forwards the request to the server-side object.Q: What is a “registry” in the context of Java RMI?A: The registry in Java RMI is like a directory where remote objects can be named and located. Clients use the registry to find and call remote objects.Q: Can Java RMI handle concurrent requests?A: Yes, Java RMI can handle concurrent requests. If multiple clients make method calls to the same remote object simultaneously, those calls will be handled concurrently.Q: Can Java RMI function through firewalls?A: It can be challenging for RMI to function through firewalls because of its requirement for direct socket connections. Users may need to configure their firewall settings for RMI to work correctly.Q: Where is Java RMI typically used?A: Java RMI is typically used in distributed systems, server-client systems, and multi-tier architectures where different software layers could be situated across separate machines.

Related Tech Terms

  • Stub and Skeleton Layer
  • Garbage Collection
  • Java Virtual Machine
  • Object Serialization
  • Distributed Garbage Collection

Sources for More Information


About The Authors

The DevX Technology Glossary is reviewed by technology experts and writers from our community. Terms and definitions continue to go under updates to stay relevant and up-to-date. These experts help us maintain the almost 10,000+ technology terms on DevX. Our reviewers have a strong technical background in software development, engineering, and startup businesses. They are experts with real-world experience working in the tech industry and academia.

See our full expert review panel.

These experts include:


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

More Technology Terms

Technology Glossary

Table of Contents