As I understood it: Java-IDL is useful when you need to interact with CORBA compliant system as a client. IDL is a language-neutral language used by CORBA to define interfaces between clients and objects they call. Java-IDL is the java implementation of IDL - so it�s good when you write client code to CORBA server. RMI IIOP is just RMI that uses IIOP as a transport protocol. When not using EJB, and making remote method calls between java objects (like we did before J2EE) Java's RMI is using JRMP - java native protocol for method invocations. When EJB was specified, one of the requirements was to be compliant to CORBA - and by that allow non-java applications that support CORBA calls (using IIOP) to use the J2EE services, and, to allow EJB elements to call other systems that support CORBA interactions. This is why RMI was "converted" from JRMP to IIOP. Hopes this cleared the cloud a bit..
RMI-IIOP may be a complient CORBA server, but as a CORBA client it has limitations. So if you going to access legacy CORBA server RMI-IIOP may not always work. If you are developing a CORBA server from scratch you can from the beggining to design it so it will be accessible by RMI-IIOP. So use RMI-IIOP for CORBA server and avoid as CORBA client. Java-IDL is older then RMI-IIOP and more combersome to use but it is fully complient for both CORBA clients and CORBA servers. So use it as client for legacy CORBA server. the page at following URL describes it http://www.javaworld.com/javaworld/jw-12-1999/jw-12-iiop-p3.html
Joined: Jan 23, 2004
It does clear my confusion even though I have rich EJB experience and HelloWorld rmi/idl experience. Thanks a lot!!!
Guess ita a bit late reaction, but still.... To add, i think, even if you want to invoke CORBA compliant applications through RMI, you have to have Java IDL applicatn on the server side. So a better comparision should have been between JRMP vs IIOP rather than Java IDL vs RMI-IIOP.