Program:-

RMI_Client.java
import java.rmi.*;
import java.net.MalformedURLException;
import java.nio.charset.MalformedInputException;

public class _1_rmi_client {
publicstaticvoid main(String[] args)throws NotBoundException,MalformedURLException,RemoteException{
_1_rmi_interface obj = (_1_rmi_interface) Naming.lookup("rmi://localhost:4444/sayHello");
obj.sayHello();
}
}

RMI_Server.java:-
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class _1_rmi_server {
public static void main(String[] args) throws RemoteException{
Registry registry = LocateRegistry.createRegistry(4444);
registry.rebind("sayHello", new _1_rmi_servant());

}
}

RMI_Interface.java:-
import java.rmi.*;

public interface _1_rmi_interface extends Remote{
public void sayHello() throws RemoteException;
}


RMI_Servant.java:-
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;

public class _1_rmi_servant extends UnicastRemoteObject implements _1_rmi_interface {
public _1_rmi_servant() throws RemoteException{
super();
}

public void sayHello() throws RemoteException{
System.out.println("Hello Server again ");
}
}


Output:-