Un programa Java puede hacer una llamada a un objeto remoto una vez que ha obtenido una referencia hacia ese objeto, o bien buscando el objeto en un servidor de nombres proporcionado por el RMI o recibiendo la referencia como un argumento o un valor de retorno. Un cliente puede llamar a un objeto remoto en el servidor, y este servidor puede a su vez ser un cliente de otros objetos remotos. RMI utiliza Serialización de Objetos para ordenar y desordenar parámetros y no trunca los tipos, soportando verdadero polimorfismo oriantado a objetos.