Java IDL es una tecnolog�a para objetos distribuidos -- es decir, objetos interactuando sobre diferentes plataformas a trav�s de una red. Java IDL es similar a RMI (Remote Method Invocation), que soporta objetos distribuidos escritos enteramente en Java. Sin embargo, Java IDL permite intractuar a los objetos sin importar si est�n escritos en Java o en cualquier otro lenguaje como C, C++, COBOL, etc.
Esto es posible porque Java IDL est� basado en "Common Object Request Brokerage Architecture" (CORBA), un modelo industrial estandard para objetos distribuidos. La caracter�stica principal de CORBA es IDL, (Interface Definition Language). Caa lenguaje que soporte CORBA tiene su propio mapeo IDL -- y como su nombre implica, Java IDL soporta el mapeo para Java. CORBA y los mapeos IDL son el trabajo de un consorcio industrial conocido como OMG (Object Management Group). Sun es un miembro fundacional del OMG, y el equipo Jva IDL ha jugao un papel activo en la definici�n del mapeo IDL-a-Java.
Para soportar la interacci�n entre objetos de programas separados, Java IDL proporciona un Object Request Broker, o ORB. El ORB es una librer�a de clases que permite una comunicaci�n de bajo nivel entre aplicaciones Java IDL y aplicaciones compatibles con CORBA. Esto est� empezando a parecer una sopa de letras, no te preocipes, los detalles sobre CORBA, IDL y ORB vienen en la pr�xima p�gina.
Esta secci�n camina a trav�s del dise�o y desarrollo de una sencilla pareja de aplicaciones Java IDL que interactuan. Empiza mostrando la arquitectura general de CORBA, luego contin�a con una introducci�n a los pasos para construir aplicaciones CORBA en Java IDL. Finalmente, realiza cada paso para producir un cliente y un servidor que interactuan usando CORBA.
�La Arquitectura CORBA
En esta secci�n, obtendr�s informaci�n adicional detallada sobre CORBA, IDL y el prometido Java IDL ORB.
Cualquier relaci�n entre objetos distribuidos tiene dos lados: el cliente y el servidor. El servidor proporciona un interface remoto, y el cliente llama a un interface remoto. Estas relaciones son comunes en la mayor�a de los est�ndares sobre objetos distribuidos, incluyendo RMI y CORBA. Observa que en este contecto, los t�rminos cliente y servidor definen niveles de objetos en vez de niveles de aplicaci�n -- cualquier aplicaci�n podr�a ser un servidor para algunos objetos y un cliente para otros. De hecho, un s�lo oobjeto podr�a ser el cliente para un interface proporcionado por un objeto remoto y al mismo tiempo implementar un interface para ser llamado remotamente por otros objetos.
Esta figura muestra c�mo un m�todo de un objeto distribuido es compartido entre un cliente CORBA y un servidor para implementar la cl�sica aplicaci�n "Hello World".
![](/cursos_descargas/idl/images/IDL-1.gif)
En el lado del cliente, la aplicaci�n incluye una referencia para el objeto remoto. El objeto referenciando tiene un m�todo stub, que es un atajo para el m�todo que es� siendo llamado remotamente. El stub realmente es disparado dentro del ORB, por eso esta llamada invoca las capacidades de conexi�n del ORB, el que re-envia la llamada al servidor.
En el lado del servidor, el ORB usa c�digo esqueleto para traducir la invocaci�n remota en una llamada a m�todo sobre un objeto local. El esqueleto traduce la llamada y cualquier par�metro a su forma espec�fico de implementaci�n y llama al m�todo que est� siendo invocado. Cuando el m�todo retorna, el c�digo del esqueleto transfoma los resultados o errores y los devuelve al cliente mediante los ORBs.
Entre los ORBs, la comunicaci�n se procesa mediante el signifiado de un protocolo compartido, IIOP-- Internet Inter-ORB Protocol. IIOP, que est� basado en el protocolo est�ndard de Internet TCP/IP, define como los ORBs compatibles con CORBA pasan la informaci�n. Como CORBA e IDL, El est�ndard IIOP est� definido por el OMG, Object Management Group.
Adem�s de estas sencullas capacidades de objetos distribuidos, los ORBs compatibles con CORBA pueden proporcionar un gran n�mero de servicios opcionales definidos por el OMG. Esto incluye servicios de b�squeda de objetos por nombre, mantenimiento de la persistencia de objetos, soporte de procesamiento de transaciones, permitir mensajer�a, y muchas otras capacidades �itles. Varios de los ORBs Java de terceras partes soportan algunas o todas de estas capacidades adicionales. El ORB proporcionado con Java IDL s�lo soporta un servicio adicional, la habilidad para localizar objetos por el nombre.
�El Proceso de Desarrollo de Java IDL
Ahora que hemos visto las relaciones entre cliente y servidor en CORBA, estamos preparados para ver el proceso de dise�o y desarrollo de una aplicaci�n de objetos distribuidos con Java IDL.
�Definir el Interface Remoto
Definimos el interface para el objeto remoto usando el "Lenguaje de Definici�n de Interfaces" del OMG. Utilizamos IDL en lugar del lenguaje Java porque el compilador idltojava mapea autom�ticamente desde IDL, generando todos los ficheros fuentes del lenguaje Java y el esqueleto, junto con el c�digo de infraestructura para concectar con el ORB. Usando IDL, tambi�n hacemos posible que los desarrolladores implementen clientes y servidores en cuqlquier otro lenguaje compatible con CORBA.
Observa que si estamos implementando un cliente para un servicio CORBA existente, o un srvidor para un cliente existente, obtendremos los interfaces IDL desde el implementador--como un proveedor de servicio o vendedos.
Luego ejecutaremos el compilador idltojava sobre estos interfaces y seguimos la pasos para la creacci�n del cliente o el servidor.
�Compilar el Interface Remoto
Cuando ejecutamos el compilador idltojava sobre nuestro fichero de definici�n de interface, genera la versi�n Java del interface, as� como los ficheros class para las clases y el esqueleto que permiten a las aplicaciones comunicarse con el ORB.
�Implementar el Servidor
Una vez que hemos ejecutado el compilador idltojava, podemos usar los esqueletos que genera para juntarlos con nuestra aplicaci�n servidor. Adem�s de implementar los m�todos del interface remoto, nuestro c�digo servidor incluye un mecanismo para arrancar el ORB y esperar las invocaciones de los clientes remotos.
�Implementar el Cliente
De forma similar, usamos el c�digo generado por el compilador idltojava como la base para nuestra aplicaci�n cliente. El c�digo del cliente se construye para arrancar su ORB, buscar el servidor usando el nombre de servicio proporcionado con Java IDL, obtener una referencia a un objeto remoto y llamar a sus m�todos.
�Arrancar las Aplicaciones
Una vez que hemos implementado un servidor y un cliente, podemos arrancar el servidor de nombres, luego el servidor y por �ltimo el cliente.