Choice B is correct.
The following is taken from: http://java.sun.com/j2se/1.3/docs/guide/idl/jidlFAQ.htm
There are several scenarios that will define how you will want to create distributed CORBA applications. Here are some of them:
Java IDL - If you have been developing CORBA applications using IDL for some time, you will probably want to stay in this environment. Create the interfaces using IDL, and define the client and server applications using the Java programming language to take advantage of its 'Write Once, Run Anywhere' portability, its highly productive implementation environment, and its very robust platform.
RMI-JRMP - If all of your applications are written in the Java programming language, you will probably want to use Java RMI to enable communication between Java objects on different virtual machines and different physical machines. Using Java RMI without its IIOP option leverages its strengths of code portability, security, and garbage collection.
RMI-IIOP - If you are writing most of your new applications using the Java programming language, but need to maintain legacy applications written in other programming languages as well, you will probably want to use Java RMI with its IIOP compiler option.
Choice A is incorrect because this would be the choice for an all Java solution. There is no need to rewrite the entire system so choice C is incorrect. The solution described in choice D is possible however as there already are CORBA objects it is not the most appropriate answer.

