Barry -
RMI's uses are indeed all over the place. It's now a new technology of any sort -- what it does is bring to
Java the means to write programs that run in a remote or distributed environment. By remote we mean a client program that asks a server program (on another machine) to perform some kind of work. By distributed we mean a program whose entire process relies on the work of two or more processes working together.
Naturally, there's a little overlap in these terms, but RMI is simply a mean of doing this in Java code. Other models for writing this Kind of code exist: for example, Sun's RPC (Remote Procedure Call) protocol follows a very similar architecture and is a widely accepted standard today. CORBA (Common Object Request Broker Architecture) is an alternative to RMI that is designed to accommodate communication between programs on different platforms and even written in different languages.
Applet code, even though isn't written using RMI, is a good illustration of what's possible using RMI. Virtually any time you need a program to connect to a remote program and get data -- and both programs run in Java -- you might think about using RMI to do it.