Choices B and E are correct.
The following is taken from: http://java.sun.com/j2se/1.3/docs/guide/idl/index.html
This is a fundamental question and it's important to understand the distinction between these two ways of integrating the Java programming language with CORBA. Java IDL is for CORBA programmers who want to program in the Java programming language based on interfaces defined in CORBA Interface Definition Language (IDL). This is "business as usual" CORBA programming, supporting Java in exactly the same way as other languages like C++ or COBOL.
RMI-IIOP (Remote Method Invocation over Internet Inter-ORB Protocol) is for Java programmers who want to program to the RMI interfaces, but use IIOP as the underlying transport. RMI-IIOP provides interoperability with other CORBA objects implemented in various languages - but only if all the remote interfaces are originally defined as Java RMI interfaces. It is of particular interest to programmers using Enterprise Java Beans (EJB), since the remote object model for EJBs is RMI-based.
Choice A is incorrect because Java IDL has nothing to do with Enterprise Java Beans.
Choice C is not true, you can use JRMP instead of IIOP if you want. Java IDL requires CORBA interfaces not RMI interfaces so choice D is incorrect. Choice F is incorrect as all the interfaces must be defined as RMI interfaces. Choice G is debatable but generally a situation will suit one or the other more.
