Antes de empezar vamos a describir estas tecnologías.
OSGI (Open Services Gateway Initiative), podríamos definirlo como un sistema (o framework) modular para Java que establece las formas de crear módulos y la manera en que estos interactuaran entre sí en tiempo de ejecución. OSGI intenta solventar los problemas del tradicional "classloader" de la máquina virtual y de los servidores de aplicaciones Java. En OSGI, cada módulo tiene su propio classpath separado del resto de
classpath de los demás módulos.
SCA (Service Component Architecture) es un estándar de OASIS originalmente creado por diferentes vendedores como BEA, IBM, Oracle, SAP, etc. La especificación SCA define como crear un componente y como estos componentes interactúan para formar una aplicación. Los componentes en SCA pueden ser construidos en Java o en otros lenguajes y además permite interactuar con otras tecnologías como JEE, Spring o BPEL. SCA define un mecanismo común de ensamblaje que indica como los componentes son combinados dentro de la aplicación.
El objetivo de SCA es a nivel alto o de negocios en ca
mbio el objetivo de OSGI esta centrado en la modularidad por lo tanto es de más bajo nivel.
Los Micro-Kernels se volvieron cada vez más populares (jboss, glassfish, ...). OSGi ha estandarizado muchos de los "servicios del núcleo" (registro, configuración, aprovisionamiento) de móviles, y ahora comienza a entrar en la empresas. Considerando que el enfoque JEE fue en la infraestructura de middleware, OSGi provee muchas ventajas que quedaban a cargo de los desarrolladores. La Carga dinámica (Dynamic loading) de OSGi hace perfecto los micro-núcleo, dado que no es necesario bajar el servidor para cargar un modulo, el nucleo tiene solo lo necesario y los módulos se van cargando a medida que se los demande.
La composición de los servicios/componetes se llevará a cabo y se expone como un servicio de negocios con múltiples puntos finales. Este es el lugar donde podemos ver que la pareja OSGi / SCA aporta mucho y ayuda a centrarse en su negocio. Módulos OSGi para gestionar los componentes técnicos para mantener los principios DRY (Don't Repeat Yourself) y SCA para exponer punto final de negocios con conexión automática y la seguridad habilitada.
Este esquema tomado de la página de Apache Tuscany expresa como SCA cablea los servicios de negocio. Como SOA típico, expondrá su "contrato". Dentro de SCA, va a configurar, además, cómo quieres que lo exponga (usando RMI, WS o cualquier tipo de protocolo).
Al hacerlo, le permiten decidir el protocolo en la fase de implementación, no en la fase de desarrollo. Esto hace que su software sea muy flexible y le permiten centrarse en el código de negocio.
Gestión de módulos y componentes y hay dependencias requieren el uso de una herramienta automatizada (Maven, nexus).
Apache Tuscany es una implementación de SCA que en su versión 2.0 traera el esquema OSGI. Apache Tuscany 2.0 fue totalmente reescrito para soportar OSGi.