Different programming languages require different language bindings to an ORB. This requires a level of interoperability between the ORBs which should be taken into consideration. The CORBA architecture defines language bindings for a number of languages, including C++, Java, COBOL, Ada, PL/I, Smalltalk, and others. Note that language bindings for some programming languages might not support all IDL and IIOP features. In particular, valuetypes have been defined only for the C++ and Java language bindings. CORBA access to enterprise beans requires valuetypes, so today only C++ and Java applications can access most enterprise beans through a CORBA interface.