Differences Between RPC And RMI

In enterprise application there is likelihood that resources have to be access across multiple system to execute a business process. One of the Java's alternatives for distributed application is Far off Method Invocation (RMI).

Objective of the paper is understand how a RMI system works instantly scenarios and exactly how enterprise application can applied using java RMI API's. An enterprise allocated system is a couple of objects that isolates the consumers of services from the providers of services with a well-defined interface. In other words, clients are completely abstracted from the implementation of business method as data structure and executable code. This is how one can recognize with simple customer / server request with object structured distant invocation method model.

In the sent out enterprise thing model, a client sends a need message to a thing, which in turns analyzes the submission to decide what service to perform. This business entity service, selection could be performed by either the object or a broker.

Remote Method Invocation (RMI):

RMI is one of the possible ways to gain access to distributed business things from another JVM and RMI uses object serialization to marshal and unmarshal guidelines. If you want send objects over the wire, your class (object) need to implements Serializable interface.

Here is the RMI architecture and how RMI 's works internally.

RMI Transportation Layer







Client Process

Server Process


According to sunlight site "Java Remote control Method Invocation (Java RMI) enables the programmer to produce distributed Java technology-based to Java technology-based applications, in which the methods of remote Java items can be invoked from other Java exclusive machines*, possibly on different hosts. RMI uses thing serialization to marshal and unmarshal variables and will not truncate types, aiding true object-oriented polymorphism. "

When a venture server process would like to export some remote method invocation based mostly service to consumer, it can so by registering remote method invocation empowered objects with its local rmiregistry (Registry user interface). Every remote control object is registered with a name consumer may use to guide it. A consumer can buy a reference point of stub to the remote control object by asking for for the remote subject by name through the Naming interface.

The argument for Naming. lookup() method is name of any remote subject and locates the object on the network. The object's completely certified name can be composed with number name dock and the name of the thing look like url syntax for the naming source.

Few of the terminology you need to know about RMI are the following.

rmiregistry -- A executable program used to bind distant object to names and that provides a bootstrap naming service which is employed by servers on the server machine. JVMs on consumer and server machines may then look up distant items and make distant method invocations.

rmic: The rmic compiler tool produces stub, and skeleton category files for remote control things. These classes' documents are generated from the compiled Java words classes that contain remote thing implementations (applied java. rmi. Remote control software).

skeleton : A skeleton for a remote subject is a JRMP standard protocol server side business object that contains a way which dispatch cell phone calls to the genuine remote subject realization.

stub: A proxy thing for a remote subject which is in charge of delegating method on distant things to the server where implementation of the actual remote object resides. A consumer program mention of a remote subject, therefore, is actually a reference to a local stub.

Remote Software: The Far off interface serves to recognize interfaces whose methods may be invoked from a non-local exclusive machine. Any object that is a remote object must straight or indirectly put into action this user interface.

Difference between RPC and RMI

Remote treatment call (RPC) is a network communication process with server and consumer architecture and the idea behind RPC is to call executed code remotely as if we were just contacting a function. Really the only difference between RMI and RPC is in case of RPC functions are invoked by using a proxy function, and in case there is RMI we invoke methods by using a proxy thing.

RMI is java way to RPC, with connectivity to existing systems using native methods. RMI may take a natural, direct, and fully powered approach to give a enterprise distributed processing technology that allows us to include Java operation throughout the machine. To achieve the cross-platform portability that Java provides, RPC requires a lot more overheads than RMI. RPC must convert the arguments between architecture so that each computer can use its local data type.

Java-RMI is securely coupled with the Java terms. Whereas RPC is not specific to any sole language and you can execute RPC using different terminology.

Because RMI can executed using Java, its get all advantages like object oriented, parallel computing, design style, easy to write and re use, safe and secure, Write once and run anywhere. But in the truth of RPC, to accomplish any of these advantages you have to write implementation code.

Sample request:

To display RMI and allocated application instantly I have executed a Lottery system. The Lottery system is developed according to UK Lotto system. Let's assume that user before using this RMI client software already purchased the lottery ticket.

Lottery client system shows the welcome subject matter to customer.

Lottery system also shows the winning amount to the customer. The Lottery system is developed as per UK Lotto system. But simplifying system I have modified certain guidelines. Here how victor is chosen.

Jackpot, Match 6: Ј500, 000

Match 5 quantities: Ј1, 500

Match 4 volumes: Ј60

Match 3 quantities: Ј10.

System asks customer to type in positive integer number varying 1 to 49.

Once he enters all 6 figures Lottery system make 6 receiving non-repeating random amount between 1 to 49.

System checks the match between consumer entered number and server made number and estimate earning amount and display the result


Here is how I have put in place Lottery system

Define a distant interface

import java. rmi. Remote;

public software LotteryGenerator extends Remote

public ArrayList getLottoryNumber() throws java. rmi. RemoteException;


Implement the remote interface

Below is the just a snippet of the execution course for the remote interface. I have not outlined the aiding private methods of the class.

import java. rmi. RemoteException;

public class LotteryGeneratorImpl extends java. rmi. server. UnicastRemoteObject implements LotteryGenerator

private ArrayList figures; // Integer array for keeping repeat

private ArrayList whole lot;

private java. util. Random gen;

public ArrayList getLottoryNumber()

lot. clear();

for(int i=0;i<6;i++)

lot. add(getNextInt());


System. away. println("Generated Lottery amount:"+lot);

return lot;



Develop the server

Create an instance of remote subject and register the distant subject with RMI registry. This is actually the code snippet for the LotterServer. java

import java. rmi. Naming;

import java. rmi. Remote;

public class LotteryServer

public LotteryServer()


LotteryGenerator c = new LotteryGeneratorImpl();

Naming. rebind("rmi://127. 0. 0. 1:1099/LotteryGenerator", (Remote) c);

catch (Exception e)

System. out. println("Trouble: " + e);

e. printStackTrace();



public static void main(String args[])

new LotteryServer();

System. away. println("*****Server started******");



If RMI request running on default slot 1099 then the rebind assertion will be Naming. rebind("rmi://127. 0. 0. 1:1099/LotteryGenerator", (Remote) c); and when you run the RMI registry over a non default slot quantity, for example on dock 5100, then binding assertion becomes:

Naming. rebind("rmi://127. 0. 0. 1:5100/LotteryGenerator", (Remote) c);

Develop a Client

Next step is employing the RMI Lottery client and your client remotely invokes the technique getLottoryNumber specified in the LotterGenerator remote interface. To take action however, the consumer program must first obtain an subject reference to the LotteryGeneratorImpl remote subject from the RMI registry. Once an object reference point is obtained, the getLottoryNumber method is invoked.

import java. rmi. Naming;

import java. util. ArrayList;

import java. util. Scanning device;

public school LotteryClient

public static void main(String[] args)


Scanner scanner = new java. util. Scanner(System. in);

System. away. println("Please Enter 6 integer quantities varying 1 to 49)");

ArrayList clientArray=new ArrayList();

for(int ii=0;ii<6;ii++)

int val = scanning device. nextInt();

clientArray. add(val);


System. out. println("You may have inserted: "+clientArray);


LotteryGenerator c = (LotteryGenerator) Naming. lookup("rmi://localhost/LotteryGenerator");

ArrayList servList=c. getLottoryNumber();

System. away. println("Lottery Winning quantities:"+servList);

int count up=checkWin(clientArray, servList);


System. out. println("Many thanks !!");

catch (java. net. MalformedURLException murle)

System. away. println();

System. away. println("MalformedURLException");

System. out. println(murle);

catch (java. rmi. RemoteException re)

System. away. println();

System. out. println("RemoteException");

System. out. println(re);

catch (java. rmi. NotBoundException nbe)

System. away. println();

System. away. println("NotBoundException");

System. out. println(nbe);



private static void dispalyResult(int count up)

//implemenattion for screen code


private static void displayWelcomeMessage()

//display the welcome message and Lottery earning amount.


public static int checkWin(ArrayList clientArray, ArrayList serverArray)

int count number=0;

for(int ii=0;ii<6;ii++)

int clientVal=(Integer)clientArray. get(ii);

for(int k=0;k<6;k++)

int serVal=(Integer)serverArray. get(k);


count++; rest;




return count up;



Running RMI application:

Here is the steps how one can execute Lottery software.

Compile all the java classes.

Using rmic command, create stubs and skeleton for the put in place remote object.

rmic LotteryGeneratorImpl

Start the RMI registry using rmiregistry command

Execute LotteryServer application

Execute LotteryClient application


Because it easy implementation aspect RMI has particular advantages over other distributed application methodology like RPC, Corba etc. Since it is applied using java it's get all the advantages like object oriented, parallel computing(Multi-threading), design routine, easy to write and re use, safe and sound, Write once and run everywhere. Also you can integrate RMI based application some other application because of its platform independent capability.

  • More than 7,000 students prefer us to work on their projects
  • 90% of customers trust us with more than 5 assignments
submit a project

Latest posts

Read more informative topics on our blog
Shiseido Company Limited Is A Japanese Makeup Company Marketing Essay
Marketing Strength: Among the main talents of Shiseido is its high quality products. To be able to satisfy customers, the company invested a great deal...
Fail To Plan You Plan To Fail Management Essay
Management This report will concentrate on two aspects of project management, their importance within the overall project management process. The report...
Role of High-protein Diet in Weight Management
Nursing Structured Representation: Probably one of the most wide-spread and popular problems on earth is the weight problems that people is suffering...
Waste To Prosperity Program Environmental Sciences Essay
Environmental Sciences Urban and rural regions of India produce very much garbage daily and hurting by various kinds of pollutions which are increasing...
Environmental Studies Pollution Introduction Many people across the world can remember having walked on the street and seen smoke cigars in the air or...
Soft System Methodology
Information Technology Andrzej Werner Soft System Methodology can be described as a 7-step process aimed to help provide a solution to true to life...
Strategic and Coherent methods to Recruiting management
Business Traditionally HRM has been regarded as the tactical and coherent method of the management of the organizations most appreciated assets - the...
Religious Healthcare Organisation
Health Religious Health Care Introduction I help the firm of consulting. Spiritual HEALTHCARE of Middleville community have appointed us to identify and...
Enterprise Rent AN AUTOMOBILE Case Analysis Business Essay
Commerce With a massive network of over 6,000 local rental locations and 850,000 automobiles, Organization Rent-A-Car is the greatest rental car company...
Check the price
for your project
we accept
Money back
100% quality