Remote Method Invocation (RMI) allows Java objects to communicate remotely. The RMI architecture consists of interfaces, stubs, skeletons, and transport layers. Interfaces define remote services while stubs and skeletons handle remote calls. The transport layer connects clients and servers over TCP/IP. Clients lookup remote objects by name in an RMI registry.