Oh sí: los JavaBeans se comunicarán entre sí (a fin de publicar y compartir datos) en la misma máquina virtual por medio de InfoBus (el novísimo bus de Kona/Lotus/IBM/Javasoft, en orden inverso de prevalencia), mientras que utilizarán RMI para tratar con otras maquinas virtuales. Y, claro, se mantendrán en todo caso los esquemas de seguridad propios de la plataforma Java; se accederá a bases de datos remotas mediante JDBC y JSQL (el SQL embebido en Java promovido, principalmente, por Oracle); se vivirá, en definitiva, en un mundo totalmente Javatizado, porque lo bueno se expande y universaliza: JavaChips que soportarán sistemas operativos Java segmentados en razón de su uso (domótica, informática personal, etc.), conectividad segura entre dispositivos heterogéneos, etc. ¿Y les hablé de los Enterprise JavaBeans? ¿O de los APIs de comercio Java? ¿O de...? En fin, ya ven: parece que se aproxima la catarsis solar: todo Java, todo Java, todo... ¡Mentira! ¡Ea! Me niego a aceptar que podamos pasar del monopolio Microsoft al monopolio Sun/Javasoft sin que medien manifestaciones de turbas enfurecidas o enfebrecimientos iracundos. Incluso me niego a aceptar que tales monopolios, entendidos en su sentido estricto, puedan existir. Java está muy bien (la plataforma tecnológica, que no el lenguaje), pero ¿significa eso que tengo que tirar mi viejo sistema Obsydian y el buen servicio que durante años me generó en el entorno AS/400? ¿He de trasladar mis datos y programas desde Natural/Adabas a nuevos esquemas basados en Vapor/Java/Sunware? ¿Tengo que obligar a mis programadores a aprender Java, a llevar gorras y camisetas gringas y a no usar el cuchillo? No, si puedo evitarlo. Y estoy convencido que puedo, porque yo no concibo un mundo Java. De hecho la situación me recuerda a la que plantearon, años ha, los fabricantes de bases de objetos en los albores de la OOT: "Tirad vuestras caducas bases de datos relacionales, porque el futuro se ha hecho luz: ObjectStore, GemStone, O2, Objectivity/DB, POET, Ontos, etc.". Han bastado pocos años para mostrar -de nuevo- que los usuarios no quieren revoluciones, sino soluciones y, en el mejor de los casos, prudentes evoluciones. Y es aquí donde entra CORBA. CORBA (Common Object Request Broker Architecture) define la funcionalidad e interoperabilidad entre ORBs (Object Request Broquers), componentes al fin de la OMA (Object Managemente Architecture), resultante del proceso de normalización emprendido por OMG (Object Management Group). ¡Alto, alto! ¿No nos hemos saltado algo? ¿Cómo hemos pasado de unas frases quasi-prudentes a un batiburrillo de acrónimos? Volvamos atrás. Quería yo decir que CORBA es la solución software a un mundo diverso formado por componentes heterogéneos. O sea, que CORBA puede resolver el problema de interoperabilidad entre porciones software inicialmente desconectadas. Esto es, que podré conseguir que la lógica de negocio embebida en código COBOL pueda ser utilizada mediante invocación de métodos desde un entorno, por ejemplo, C++ o Smalltalk. Ah, Ah, ya veo expresiones pensativas maliciosas. Pero no: CORBA no es un producto software tipo "Bálsamo de Fierabrás"; CORBA no es, tampoco, un término resonante comercial del tipo "reingeniería de procesos de negocio"; CORBA ni siquiera es, por fin, una opción: y es que es imposible pensar en el futuro a corto plazo sin CORBA. EPDLA Y EPDTH El problema de los acrónimos y el problema del tecnicismo huero: esto es lo que significan las mayúsculas del título de esta sección. Y estos son los problemas a los que se enfrenta el que quiere iniciarse en CORBA. La cuestión es uno empieza a hablar de interconexión, de comunicación, de prudencia y, de pronto, se descubre profiriendo siglas impronunciables con la ligereza con que se detalla una receta de cocina. Les pongo un ejemplo: Orfali y compañía, "los autores de los marcianitos" han publicado recientemente un libro titulado "Instant CORBA" que pretende ser algo así como "CORBA para torpes" o "CORBA para ejecutivos", pero que en realidad no resulta fácil de tragar ni por unos ni por otros: IIOP, ORB, PO, DCE, IDL, DSI, DII, GIOP, PDS, OMA, ESIOP, BOA, POS, DDO, OTS y otras parecidas lindezas nos llevan a un estado en el que se comprende el polimorfismo en acrónimos. La cuestión es que no puedo, en el reducido espacio de un artículo, explicar con un mínimo rigor qué se esconde detrás de tantas siglas. No puedo, tampoco, siquiera detallar, al nivel menos explicativo, los Servicios CORBA. No hay espacio ni para un ejemplo decente, a no ser que dé por supuesto que el lector ya conoce CORBA, pero es que en ese caso le mandaría directamente a leer un buen libro o alguno de tantos buenos artículos sobre la materia. EL INFIERNO DE LAS BUENAS INTENCIONES Tras el cúmulo de imposibilidades CORBA, he aquí mi intención resumida en tres puntos:
Todo esto se sustancia, como los mandamientos cristianos, en la intención última de despertar el interés del lector por la computación distribuida heterogénea (¡Menuda conjunción de "buzzwords"!). Lo cierto es que intentaré comunicar al lector una cierta y muy grosera idea de cómo funciona lo esencial, de cuáles son las razones, groseras de nuevo, que se esconden tras tanta especificación y tanto pasmo. SOPORTE INDUSTRIAL JavaSoft está construyendo los servicios transaccionales (JTS: Java Transaction Services) de su plataforma Enterprise (sí, ya saben, esa que añade a la plataforma básica características transaccionales y de escalabilidad, entre otras; la misma en la que se basan los Enterprise JavaBeans) sobre CORBA e IIOP (Internet Inter-ORB Protocol). IBM, por otro lado, está portando la plataforma Java a todos sus sistemas operativos (ya existe para AIX y OS/2, en breve para AS/400, etc.), y su intención es añadir, empaquetado, su conocido ORB CORBA SOM 4.0. Aparte de su soporte CORBA en la parte servidora, Netscape va a distribuir, por otro lado, indisolublemente unido a su nuevo paginador "Communicator", un ORB (en concreto VisiBroker for Java), lo que permitirá invocación de métodos remotos mediante IIOP desde más de veinte millones de paginadores. La NCA (Network Computing Architecture) de Oracle (esto es, su línea de software al completo) ha tomado de base a CORBA, mientras que se anuncia el lanzamiento de un ORB en Oracle Web Server 3.0. Microsoft, por otro lado, ... ¿soporta CORBA? Pues sí: lo soporta, en el sentido más exacto del término. Lo cierto es que Microsoft posee su propia arquitectura de distribución y comunicación entre componentes: COM (Component Object Model) y DCOM (Distributed Component Object Model), la versión distribuida del primero. Pero, perdón, ¿dije COM? Quise decir ActiveX. Pero no, dejémoslo en COM. Lo malo es que COM no se ajusta a CORBA. Se trata, como no podría ser de otra manera, de un modelo propietario. Claro que existen puentes CORBA-COM, pero su funcionamiento dista mucho de ser sencillo e incluso, en algunos casos, efectivo. Claro que, por otro lado, Microsoft, junto con Digital (DEC), posee otro "COM (Common Object Model)" que sí se aviene a las razones CORBA, aunque carente de protagonismo en las plataformas wintel. La cuestión, como yo la veo es la siguiente: las herramientas de desarrollo Microsoft (sobre todo a partir de Visual Studio) desprenden el mensaje "El lenguaje de programación no es lo importante: codifica pensando en componentes ActiveX y hazlo en cualquiera de los lenguajes/entornos Microsoft: Visual Basic, Visual J++, Visual C++, etc.", pero entonces ¿por qué no codificar módulos en Java y luego decidir qué residencia, qué modelo de componentes, quiero procurar a mi código? O sea, si yo codifico cierta lógica de negocios en Java y necesito embeberla en un control ActiveX para su uso en una ASP (Active Server Page), lo único que necesito es ejecutar el asistente de creación de objetos COM que viene con MS Visual J++ 1.1 y... ¡voilà! Claro que se me podría argumentar que los controles ActiveX no son tan simples como pudiera parecer en una demostración comercial, y que en realidad has de codificar sabiendo para qué modelo de componentes lo haces. Bien, esto es cierto (¡Cómo se nota que los lectores trabajan en el mundo real!), pero también lo es que existe actualmente en versión beta -pero pronto en versión definitiva como parte inseparable de la plataforma Java- una "Herramienta Asistente de Migración para ActiveX" que procura el suficiente soporte para codificar tanto para ActiveX como para JavaBeans. O sea, que con el mínimo esfuerzo tendremos la posibilidad de operar en ambos modelos, así que ... que gane el mejor. Así que, volviendo al punto de partida de esta digresión, ¿por qué no utilizar Java y obviar así, en gran medida, el problema de los modelos de componentes en principio no encajables? Java se convierte así en un magnífico puente y excelente pegamento, proporcionando además argumentos para decantarnos por un modelo teórico mejor que COM, y encima sin entrar en fanatismos hueros. LA RAZÓN DEL PASMO Ya vio el lector que la industria del software se está vertebrando en torno a CORBA. ¿O era en torno a Java? En realidad lo está haciendo en torno a ambas. Claro que parece que de todo existe dicotomía (parte buena y parte mala, Jekyll y Hide, vino y vino con gaseosa, etc.), así que también podría decirse que el software se vertebra en torno a Microsoft. Aunque en esa misma línea podría también afirmarse que la organización de un ejercito depende de la de sus enemigos..., y se tendría razón. Bien, la cuestión es: ¿qué demonios me ofrece CORBA? En esencia: portabilidad entre plataformas. O sea, puedo codificar módulos software con distintos lenguajes de programación e instalarlos en distintas plataformas y, más tarde, establecer comunicación entre ellos: un módulo COBOL inserto en un RS/6000 bajo AIX podrá invocar un método en un módulo Java sito en una SparcStation bajo Solaris. Claro que, ¿cómo diantre se entienden distintos lenguajes, distintas implementaciones? Mediante un filtro intermedio, que en el caso de CORBA son los interfaces IDL (Interface Definition Language). O sea, se trata de interfaces (sin implementación) codificados con un lenguaje especialmente creado a tal fin y que se asemeja mucho a C++ (y también a Java, de retruque). Así las invocaciones de métodos se realizarían sobre signaturas de métodos explicitadas en interfaces IDL, para luego traspasar tales peticiones al código de implementación por debajo del interfaz. He aquí un ejemplo:
El lector ya habrá adivinado que se trata de un lenguaje orientado-a-objetos. Hablo de IDL, naturalmente (admito críticas, discusiones y exabruptos). El lector se habrá percatado, igualmente, que habrá que unir el interfaz a la implementación con algo más que meras palabras: con compiladores IDL. Y el lector notará, por último, que la conectividad no es automática (y si no lo nota es porque quizás piense que en el software anida un no-sé-qué de ingeniería). La gran ventaja es que los resultados típicos de métodos de análisis y diseño (estructurados u orientados-a-objetos) pueden ser expresados mediante IDL (que, por cierto, es, como CORBA, resultado de OMG, el Grupo de Gestión de Objetos, que ha conseguido un importante apoyo industrial porque intenta crear normalizaciones con los pies en el suelo). La gran ventaja de usar IDL como lenguaje de especificación es que, de paso, hemos adelantado más de un paso para conectar nuestra solución software mediante CORBA al resto del universo (algo se me pegó de los marcianitos y de Orfali y compañía). TIEMPO DE REFLEXIÓN Bien: ya hemos empezado. Pero necesito un compromiso más sentido por parte del lector. Así que, antes de seguir, voy a detallar qué lecturas debería abordar para que no nos perdamos en detalles que al final no son sino copia de especificaciones que pueden encontrarse en cualquier sitio, incluso gratis en Internet (http://www.omg.org). LIBROS La unión CORBA y Java necesita de más referencias bibliográficas CORBA que Java. Y es que del último existen estanterías llenas, mientras que el primero se arreglaría con un rinconcito en una papelería. Como siempre, he aquí mi selección personal:
No quisiera acabar sin recomendar dos textos adicionales que, sin ser geniales (ni siquiera divertidos), podrían resultar adecuados para asentar los conocimientos adquiridos con los anteriores. De hecho yo los utilizo como "prueba de evaluación" de conocimientos CORBA, precisamente porque no aportan nada y, sin embargo, constituyen una introducción sin entrada visible a CORBA. Helos aquí:
|
||
| Pº. Castellana 188, 14º e · 28046 - Madrid · info@a4devis.com |
||