OSGi, Open Services Gateway Initiative, define una arquitectura para desarrollar y desplegar aplicaciones y bibliotecas modulares.  Las implementaciones de contenedores OSGi como Apache Felix y Equinox  permiten dividir su aplicación en múltiples módulos y así administrar más fácilmente las dependencias cruzadas entre ellos.  Los contenedores OSGi están destinados específicamente para el desarrollo de aplicaciones Java complejas que desea dividir en módulos.  

Estas son algunas de las ventajas que nos ofrece:

  • Instalar, desinstalar, iniciar y detener diferentes módulos de su aplicación dinámicamente sin reiniciar el contenedor. 
  • Tener más de una versión de un módulo en particular ejecutándose al mismo tiempo. 
  • Una infraestructura muy buena para desarrollar aplicaciones orientadas a servicios, así como aplicaciones de Internet integradas, móviles y ricas.

El proyecto OSGi fue iniciado por la OSGi Alliance en marzo de 1999. Su objetivo principal era crear una especificación abierta para la entrega de servicios gestionados a redes y dispositivos locales.  La idea básica es que una vez que agregue una plataforma de servicios OSGi a un dispositivo en red, podrá administrar el ciclo de vida de los componentes de software en ese dispositivo desde cualquier lugar de la red.  Los componentes de software se pueden instalar, actualizar o eliminar sobre la marcha sin tener que interrumpir el funcionamiento del dispositivo. 

En los últimos años, OSGi ha emergido como una tecnología viable y valiosa para el desarrollo empresarial. 

En 2003, el equipo de desarrollo de Eclipse comenzó a buscar formas de hacer de Eclipse una plataforma de cliente enriquecido más dinámica y aumentar la modularidad de la herramienta.  Eventualmente, el equipo decidió usar el marco OSGi como un modelo de componente de tiempo de ejecución.  

Casi todos los servidores de aplicaciones empresariales admiten o planean admitir OSGi.  El marco Spring también es compatible con OSGi, a través de Spring Dynamic Modules para el proyecto OSGi Service Platforms , que proporciona una capa de infraestructura para facilitar el uso de OSGi en el desarrollo de aplicaciones empresariales Java basadas en Spring. 

Desde el punto de vista de un desarrollador de empresa, el contenedor OSGi tiene un espacio tan bajo que puede incrustarlo fácilmente en una aplicación empresarial. Por ejemplo, supongamos que está desarrollando una aplicación web compleja.  Desea dividir la aplicación en varios módulos: un módulo para la capa de vista, otro para la capa DAO y un tercer módulo para la capa de acceso a datos.  El uso de un contenedor OSGi incorporado para administrar las dependencias cruzadas de estos módulos le permitiría actualizar su capa DAO (por ejemplo, de DAO lento a DAO rápido) sin reiniciar su aplicación. 

Siempre que su aplicación cumpla con la especificación OSGi, debería poder ejecutarse en cualquier contenedor compatible con OSGi.  Actualmente, hay varios contenedores OSGi de código abierto populares, estos son los dos más utilizados: 

  •   Equinox, la implementación de referencia para la porción de framework de OSGi Service Platform.
  •   Apache Felix, el contenedor OSGi de fuente abierta de la Apache Software Foundation.