A continuación se presenta una introducción de cada uno de los capítulos para dar una idea de su contenido.
En este primer capítulo se describen los objetivos de esta tesis, la organización de la misma y las herramientas utilizadas para su desarrollo. A lo largo de la tesis se estudian distintas librerías, denominadas paquetes en el entorno Java, que dan soporte al desarrollo de aplicaciones distribuidas en el mundo de los objetos Java. A modo introductorio se presenta una última sección sobre el lenguaje Java mostrando algunos conceptos envueltos en este lenguaje de programación, esta exposición preliminar ayudará a entender mejor el funcionamiento de Java en los capítulos posteriores.
Con el crecimiento de Internet y las tecnologías de networking, la necesidad de aplicaciones distribuidas simples, poderosas y fácilmente mantenibles está creciendo dramáticamente. Este tipo de aplicaciones pueden beneficiarse mayormente del concepto de computación distribuida. La tecnología de computación distribuida Java ha dado a los desarrolladores una nueva solución para resolver problemas para aplicaciones distribuidas. Una de las formas en que Java soporta esta tecnología es a través de la librería RMI, la que se describe en este capítulo.
En
el más complejo y poderoso mundo de los objetos, muchos de los mismos viejos
problemas están al acecho, tales como el escalamiento de una aplicación, incorporación de nuevas tecnologías o la
transmisión de un objeto por un entorno distribuido compuesto por diferentes
plataformas, pero las mismas viejas herramientas no sirven como soluciones. En
respuesta a esta brecha, un grupo de proveedores y desarrolladores formaron el Object
Management Group (OMG) en Abril de 1989, y, entre otros esfuerzos, desarrollaron la especificación Common
Object Request Broker Architecture (CORBA).
CORBA abarca una serie de estándares y protocolos para la comunicación entre procesos en un entorno heterogéneo. Con CORBA, los desarrolladores pueden fácilmente conectar procesos corriendo en diferentes máquinas, con diferentes sistemas operativos, y con código escrito en diferentes lenguajes. La especificación de CORBA se ha adoptado rápidamente como un método estándar para la comunicación entre procesos.
Pareciera que Java y
CORBA fueran el uno para el otro. En
su reciente libro, Client/Server Programming with Java and CORBA, Robert
Orfali y Dan Harkey lo exponen de esta manera:
“Java es el primer paso
hacia la creación de una web de objetos, pero esto no es aún suficiente. Java
ofrece una tremenda flexibilidad para el desarrollo de aplicaciones
distribuidas, pero actualmente no soporta el paradigma cliente-servidor. Para
hacer esto, Java necesita ser aumentado con una infraestructura de objetos
distribuidos, y aquí es donde entra en juego CORBA de OMG. CORBA provee el
enlace faltante entre el entorno portable de aplicaciones Java y el mundo de
servicios de respaldo intergalácticos. La intersección de las tecnologías de
objeto de Java y CORBA es el próximo paso natural en la evolución de los
objetos en la web”.
Java es una tecnología de programación concreta. Esta es primariamente diseñada para resolver los problemas de escribir y organizar código ejecutable, programas. El problema que se presenta es que trabaja dentro de los límites del propio lenguaje. Por contraste, CORBA es una tecnología de integración. Es decir, que esta específicamente diseñado para ser el adhesivo que une tecnologías de programación dispares.
CORBA es simplemente una especificación de cómo objetos situados en diferentes sitios de la red, corriendo en distintas plataformas e implementados por diferentes lenguajes de programación, pueden comunicarse invocando métodos remotos de otros objetos. Visto y considerando que es sólo una especificación debe implementarse en algún lenguaje de programación, y el más promisorio es Java. Las especificaciones CORBA proporcionan una arquitectura de componentes y sus funciones, la cual debe acatarse por los objetos que deseen comunicarse usando CORBA, denominados en general objetos CORBA.. Esta arquitectura se describió en el capítulo 3.
Hay dos formas en las que Java soporta las especificaciones de CORBA, una es a través de Java IDL y la otra con RMI-IIOP. La primera incluye herramientas para realizar el mapeo de una interface IDL (Interface Definition Language) a Java y viceversa, de esta manera diferentes aplicaciones implementadas en otros lenguajes pueden exportar una interface para comunicarse con aplicaciones Java. La segunda opción es directamente utilizar la plataforma Java a través del RMI pero respetando el protocolo IIOP en vez del JRMP, aquí todo el trabajo de interface se realiza con RMI. A continuación se describirán más detalladamente cada uno de estos métodos.
Muy bien, hasta ahora se vio que distintos objetos podían requerir servicios de otros objetos que hablasen distinto idioma y residieran en otro lugar. Así también se vio que un objeto podía ofrecer sus servicios a través de una interface. Lo que permitía esta comunicación entre objetos dispares era precisamente la interface, que debía ser entendida por todos.
Pero la palabra objeto no sólo se refiere a aplicaciones, también a dispositivos, es decir, a hardware. Este capítulo describe una nueva tecnología denominada Jini, que a través del lenguaje Java, permite la comunicación entre distintos objetos, sin importar su ubicación y si son hardware o software, Jini no hace distinción entre éstos.
Otro aspecto que cambiará en este capítulo será el hecho de que el sistema distribuido no tiene que ser planificado de antemano, el sistema se “arma” cuando se lo necesita.
En este capítulo se describen dos herramientas de Java que se complementan con las vistas en los capítulos anteriores para el desarrollo de aplicaciones en un ambiente distribuido. La primera se llama JNDI y es una interface para proveer un servicio de nombres y directorios. En esta sección se describen los conceptos involucrados y luego como desarrollar esto en Java. La segunda parte trata la otra herramienta denominada JavaBean que define un componente que podrá ser usado en la construcción de otros programas Java. En realidad esta herramienta se divide en dos: los JavaBeans para el desarrollo de ambientes de escritorio para aplicaciones cliente y los Enterprise JavaBeans para el desarrollo de su contraparte, aplicaciones servidoras.
Para culminar este trabajo de tesis se presenta una breve comparación de las librerías vistas en cada uno de los capítulos anteriores, mencionando algunas de las situaciones en que se prefiere una a otra y qué ventajas tienen unas con respecto a las otras. En este capítulo se asume el conocimiento del contenido de los capítulos anteriores, es decir que aquí no se volverá a entrar en detalles ni explicar las librerías.
En este primer apéndice se ubican los listados del código fuente de ejemplos utilizados para el desarrollo de la tesis. Sólo se muestran los códigos fuentes, no aquellos archivos generados automáticamente por algún compilador. Sin embargo, sí se explica la función de esos archivos generados automáticamente en el capítulo correspondiente. No se incluye el listado de esos archivos ya que la tesis no se basa en estudiar el código generado por los compiladores, sino en el empleo de distintas librerías, lo cual sólo se aprecia en el código fuente.
En este apéndice se ubican las referencias mencionadas a lo largo de la tesis. Las mismas se ubican en forma alfabética según el autor o el nombre de la organización de la que se extrajo. Debido a que el área que trata la tesis es un tema relativamente nuevo y en constante evolución hay muy poca bibliografía disponible, por tanto la mayoría de las fuentes consultadas se extrajeron de trabajos expuestos en Internet.
Como la mayoría de la bibliografía provino de artículos, se menciona la dirección de Internet de la página de la que se descargó dicho documento, pero por razones obvias estas direcciones pueden cambiar y la referencia quedar desactualizada, de todas maneras en el sitio citado seguramente habrá enlaces a otros artículos, más recientes, tratando el mismo tema. No obstante, se citan un par de libros consultados.
A continuación del nombre de la fuente se presenta la fecha en que se publico o la última actualización si se tratase de una página en Internet.
Espero te sea útil mi trabajo. La presenté el 11 de Diciembre del año 2001.