In order to use CORBA, a CORBA implementation must be available. As of this writing, Tweek uses omniORB 3.0.4 and newer [Omn02] for a C++ ORB. Since Tweek uses the POA, any C++ ORB may be used with only a few changes to the code.
For the Java side, OpenORB 1.2.0 [Ope02] and newer [Ope03] have been used. Java IDL [Jid02], the CORBA implementation that comes with the Java Development Kit (JDK), does not fully implement the POA as of JDK 1.3.1. With the release of JDK 1.4.0, Java IDL has a complete, working POA implementation and can be used without taking any special steps.
To use an alternate ORB with Java, two arguments must be passed to the Java virtual machine. They are based on the ORB implementation. For example, if using OpenORB, the following two arguments must be specified:
-Dorg.omg.CORBA.ORBClass=org.openorb.CORBA.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.openorb.CORBA.ORBSingleton
Other ORBs will vary in the location of the ORBClass and the ORBSingletonClass. Refer to the documentation of the specific ORB to find out more about using it instead of Java IDL.
For Python, most testing thus far has been done with omniORBpy 2.0 and newer. Using ominORBpy requires that omniORB be installed since omniORBpy is primarily just a Python wrapper wround the C++ CORBA implementation. We are watching the development of Fnorb [Fno03] as an alternative to omniORBpy. Fnorb offers a pure-Python implementation of CORBA. In other words, it requires no natively compiled code to operate. Prior to December 2003, Fnorb lacked a POA implementation, so it was not a viable option, but work is still under way to provide a complete CORBA 2.3 implementation.