CORBA is used to call remote objects of a different language than the calling object. If you have a Java object and you are calling a remote method on a C++ object you need to use CORBA. CORBA uses a language called IDL to translate the Java data into C++ format so to say. RMI is used specifically by Java. A java object can call a method on a remote java object.
CORBA and RMI both allow for distributed processing across different system platforms. Architecturally, the key difference is that CORBA uses a descriptor language, called IDL, to bridge the differences between platforms. RMI is implicitly a communication between two Java VMs only, so the need for a language that makes communication generic isn't there. So CORBA uses IDL as a bridge between different platforms. Java uses the VM for the same purpose. ----------------- Michael Ernest, co-author of:
First basic difference that you have to be aware of is that CORBA is a specification and RMI is implementation and should be [if anything] compared to CORBA implantations like Orbix. Simplifying CORBA implementations tend to be very powerful (offering large number of services) while RMI is rather a simple tool, usable in homogenous (JAVA) environment. Answering your question about where one or another should be use I would say that CORBA implementations are suitable for large scale, complex distributed computing projects. RMI is rather uncomplicated facility for cross process calls.
I didn't do it. You can't prove it. Nobody saw me. The sheep are lying! This tiny ad is my witness!