This document provides an overview of Java Remote Method Invocation (RMI). It discusses the historical background and related technologies like RPC and CORBA. The document describes the layered architecture of RMI including the application, interface, reference, and transport layers. It also explains the working principles of RMI with client/server communication and object serialization. An example RMI application is demonstrated involving writing interfaces and classes, deploying the server, and accessing services from the client. Strengths and weaknesses of RMI are analyzed in comparison to CORBA. The document is intended as a tutorial on building distributed applications with Java RMI.