O OMG (Object Management Group) é um consórcio internacional que
direciona as padronizações na área da computação de objetos distribuídos. Um
dos padrões desenvolvidos pela OMG é o CORBA - Common Object Request Broker Architecture. O núcleo da arquitetura CORBA é o ORB (Object Request Broker) que atua como um barramento de objetos, estes objetos interagem com outros objetos de forma transparente tanto localmente ou remotamente. Um objeto CORBA é apresentado para o mundo exterior por uma interface com um conjunto de métodos. Uma instância particular de um objeto é identificada por uma referência a um objeto. Um cliente de um objeto CORBA obtém a referência do objeto e utiliza para fazer as chamadas dos métodos, como se o objeto estivesse localizado no mesmo endereço do cliente. O ORB é responsável por todos os mecanismos requeridos para encontrar a implementação do objeto, prepará-lo para receber as requisições, comunicar as requisições recebidas, e transportar o retorno, caso houver, de volta para o cliente. A implementação do objeto interage com o ORB através do OA (Object Adapter) ou através da interface ORB. No CORBA, as interfaces dos objetos são definidas pela OMG Interface Definition Language. IDL não é uma linguagem de programação como C++ e Java, assim os objetos e aplicações não podem ser implementados através da IDL. O propósito da IDL é permitir que as interfaces do objeto sejam definidas de maneira que sejam independentes de qualquer linguagem de programação. Assim as aplicações podem ser implementadas em diferentes linguagens de programação podendo interoperar (capacidade de dois ou mais sistemas heterogêneos trabalhar em conjunto) entre si. A independência de linguagem da IDL é uma meta crítica do CORBA para dar suporte a sistemas heterogêneos e integrar aplicações que foram desenvolvidas separadamente. OMG IDL suporta tipos simples, como tipos inteiros com sinal e sem sinal, caracteres, boolean, strings, sequence, array, record, union, tipos enumerados, estruturas, vetores (unidimensionais) e exceções. Estes tipos são usados para definir os tipos de dados dos parâmetros e tipos de dados para operações com retorno. IDL (interface definition language) é a linguagem desenvolvida para definir as interfaces. A partir de uma definição criada em IDL, o compilar IDL gera o stub e o skeleton, sendo o primeiro utilizado para invocar os objetos remotos e o segundo utilizado como esqueleto para a implementação do objeto. Portanto, o objetivo do CORBA, é agir como se fosse um método, podendo ser chamado em qualquer classe, mesmo sendo de linguagens diferentes, e como é puramente objeto local, suas operações não podem ser invocadas de forma remota.