Algoritmo de Ford-Fulkerson
(leer más)
OSGi es un proyecto de código abierto y especificación abierta bajo la Fundación Eclipse. Es una continuación del trabajo realizado por la OSGi Alliance (anteriormente conocida como la iniciativa Open Services Gateway), que era una organización de estándares abiertos para software informático fundada en marzo de 1999. La fundación originalmente especificó y mantuvo el estándar OSGi. La alianza transfirió su trabajo a la Fundación Eclipse a finales de 2020. La especificación OSGi describe un sistema modular y una plataforma de servicios para el lenguaje de programación Java que implementa un modelo de componentes completo y dinámico, algo que no no existe en entornos Java o VM independientes. Tiene una arquitectura orientada a servicios basada en microservicios, cada uno implementado como un archivo de archivo de clase Java extendido (JAR (formato de archivo)).
OSGi se basa en una arquitectura orientada a servicios. Las aplicaciones o componentes, vienen en forma de paquetes para su implementación, se pueden instalar, iniciar, detener, actualizar y desinstalar de forma remota sin necesidad de reiniciar. La gestión de paquetes/clases de Java se especifica con gran detalle. La gestión del ciclo de vida de las aplicaciones se implementa a través de API que permiten la descarga remota de políticas de gestión. El registro de servicios permite que los paquetes detecten la adición de nuevos servicios o la eliminación de servicios y se adapten en consecuencia.
Las especificaciones OSGi han evolucionado más allá del enfoque original de las puertas de enlace de servicio y ahora se utilizan en aplicaciones que van desde teléfonos móviles hasta el IDE Eclipse de código abierto. Otras áreas de aplicación incluyen automóviles, automatización industrial, automatización de edificios, PDA, grid computing, entretenimiento, gestión de flotas y servidores de aplicaciones.
En octubre de 2020, OSGi Alliance anunció la transición del esfuerzo de estandarización a Eclipse Foundation, después de lo cual se cerraría. Todos los artefactos han sido transferidos a la Fundación Eclipse, donde un Grupo de Trabajo OSGi" continúa manteniendo y evolucionando la especificación.
La especificación OSGi es desarrollada por los miembros en un proceso abierto y se pone a disposición del público de forma gratuita bajo la Licencia de especificación OSGi. OSGi Alliance tiene un programa de cumplimiento que está abierto solo para miembros. A partir de noviembre de 2010, hay siete implementaciones de marco OSGi certificadas. Una página separada enumera las implementaciones de especificaciones OSGi certificadas y no certificadas, que incluyen marcos OSGi y otras especificaciones OSGi.
OSGi es un marco Java para desarrollar e implementar bibliotecas y programas de software modulares. Cada paquete es una colección de clases, archivos jar y archivos de configuración estrechamente acoplados y dinámicamente cargables que declaran explícitamente sus dependencias externas (si las hay).
El marco se divide conceptualmente en las siguientes áreas:
Un paquete es un grupo de clases de Java y recursos adicionales equipados con un archivo de manifiesto detallado MANIFEST.MF
en todo su contenido, así como los servicios adicionales necesarios para brindar al grupo de clases de Java incluido más comportamientos sofisticados, hasta el punto de considerar que todo el agregado es un componente.
A continuación se muestra un ejemplo de un archivo MANIFEST.MF
típico con encabezados OSGi:
Bundle-Name: Hola Mundo Bundle-SymbolicName: org.wikipedia.helloworld Bundle-Description: Un paquete de Hello World Bundle-ManifestVersion: 2 Bundle-Version: 1.0.0 Bundle-Activator: org.wikipedia.Activador Export-Package: org.wikipedia.helloworld;version="1.0.0" Import-Package: org.osgi.framework;version="1.3.0"
El significado de los contenidos en el ejemplo es el siguiente:
Una capa de ciclo de vida agrega paquetes que se pueden instalar, iniciar, detener, actualizar y desinstalar dinámicamente. Los paquetes se basan en la capa del módulo para la carga de clases, pero agregan una API para administrar los módulos en tiempo de ejecución. La capa del ciclo de vida introduce dinámicas que normalmente no forman parte de una aplicación. Se utilizan amplios mecanismos de dependencia para asegurar el correcto funcionamiento del entorno. Las operaciones del ciclo de vida están completamente protegidas con la arquitectura de seguridad.
Bundle State | Descripción |
---|---|
INSTALLED | El paquete ha sido instalado con éxito. |
RESOLVED | Todas las clases de Java que el paquete necesita están disponibles. Este estado indica que el paquete está listo para empezar o ha parado. |
Empieza | El paquete está siendo iniciado, el BundleActivator.start método se ha llamado pero el método de inicio aún no ha regresado. Cuando el paquete tenga una política de activación, el paquete permanecerá en el estado STARTING hasta que el paquete se active según su política de activación.
|
ACTIVE | El paquete ha sido activado con éxito y se está ejecutando; su método de inicio de Bundle Activator ha sido llamado y devuelto. |
STOPPING | El paquete está siendo detenido. El BundleActivator.stop método se ha llamado pero el método de parada aún no ha regresado.
|
UNINSTALLED | El paquete ha sido desinstalado. No puede entrar en otro estado. |
A continuación se muestra un ejemplo de una clase Java típica que implementa la interfaz BundleActivator
:
paquete org.wikipedia;importación org.osgi.framework.BundleActivator;importación org.osgi.framework.BundleContext;público clase Activador implementos BundleActivator {}privado BundleContext context;@Overridepúblico vacío Empieza()BundleContext context) lanzamientos Excepción {}Sistema.Fuera..println()"Starting: Hello World");esto.context = context;}@Overridepúblico vacío Para()BundleContext context) lanzamientos Excepción {}Sistema.Fuera..println()"Stopping: Adiós Mundo Cruel");esto.context = nulo;}}
OSGi Alliance ha especificado muchos servicios. Los servicios se especifican mediante una interfaz Java. Los paquetes pueden implementar esta interfaz y registrar el servicio con el Registro de servicios. Los clientes del servicio pueden encontrarlo en el registro o reaccionar cuando aparece o desaparece.
La siguiente tabla muestra una descripción de los servicios del sistema OSGi:
Servicios de sistemas | Descripción |
---|---|
Registro | El registro de información, advertencias, información de depuración o errores se maneja a través del Servicio de Registros. Recibe entradas de registro y luego envía estas entradas a otros paquetes que se suscriben a esta información. |
Configuration Admin | Este servicio permite a un operador establecer y obtener la información de configuración de los paquetes desplegados |
Acceso al dispositivo | Facilita la coordinación de la detección automática y el apego de los dispositivos existentes. Esto se utiliza para escenarios de Plug and Play. |
User Admin | Este servicio utiliza una base de datos con información de usuario (privada y pública) para fines de autenticación y autorización. |
IO Connector | El servicio de conexión IO implementa el CDC/CLDC javax.microedition.io paquete como servicio. Este servicio permite paquetes para proporcionar nuevos y alternativos esquemas de protocolo.
|
Preferencias | Ofrece un mecanismo alternativo, más compatible con OSGi para usar el defecto de Java Properties por guardar preferencias.
|
Componente Tiempo de ejecución | La naturaleza dinámica de los servicios —pueden venir e ir en cualquier momento— hace más difícil escribir software. La especificación Component Runtime puede simplificar el manejo de estos aspectos dinámicos proporcionando una declaración basada en XML de las dependencias. |
Despliegue Admin | Estándariza el acceso a algunas de las responsabilidades del agente de gestión. |
Event Admin | Proporciona un mecanismo de comunicación inter-bundeo basado en un modelo de publicación y suscripción. |
Application Admin | Simplifica la gestión de un entorno con muchos tipos diferentes de aplicaciones que están disponibles simultáneamente. |
La siguiente tabla muestra una descripción de los servicios de protocolo OSGi:
Servicios de Protocolo | Descripción |
---|---|
HTTP Service | Permite enviar y recibir información de OSGi utilizando HTTP. |
Servicio de dispositivo de UPnP | Especifica cómo se pueden desarrollar paquetes OSGi para interoperar con dispositivos Universal Plug and Play (UPnP). |
DMT Admin | Define una API para gestionar un dispositivo utilizando conceptos de las especificaciones de gestión de dispositivos Open Mobile Alliance (OMA). |
La siguiente tabla muestra una descripción de los servicios varios de OSGi:
Varios Servicios | Descripción |
---|---|
Wire Admin | Permite la conexión entre un servicio productor y un servicio al consumidor. |
XML Parser | El servicio XML Parser permite un paquete para localizar un parser con propiedades deseadas y compatibilidad con JAXP. |
Medición y Estado | El servicio de Medición y Estado permite y simplifica el correcto manejo de mediciones en una plataforma de servicio OSGi. |
OSGi Alliance fue fundada por Ericsson, IBM, Motorola, Sun Microsystems y otros en marzo de 1999. Antes de constituirse como una corporación sin fines de lucro, se llamaba Connected Alliance.
Entre sus miembros se encuentran (desde febrero de 2015) más de 35 empresas de áreas comerciales bastante diferentes, por ejemplo, Adobe Systems, Deutsche Telekom, Hitachi, IBM, Liferay, Makewave, NEC, NTT, Oracle, Orange SA, ProSyst, Salesforce, Siemens, Software AG y TIBCO Software.
La Alianza tiene una junta directiva que proporciona el gobierno general de la organización. Los oficiales de OSGi tienen varios roles y responsabilidades en el apoyo a la alianza. El trabajo técnico se lleva a cabo dentro de los Grupos de Expertos (GE) autorizados por la junta directiva, y el trabajo no técnico se lleva a cabo en varios grupos de trabajo y comités. El trabajo técnico realizado dentro de los grupos de expertos incluye el desarrollo de especificaciones, implementaciones de referencia y pruebas de cumplimiento. Estos grupos de expertos han producido cinco versiones principales de las especificaciones OSGi (a partir de 2012).
Existen grupos de expertos dedicados para las áreas empresarial, móvil, de vehículos y de plataforma central.
El Enterprise Expert Group (EEG) es el GE más nuevo y se ocupa de las aplicaciones empresariales/del lado del servidor. En noviembre de 2007, el Residential Expert Group (REG) comenzó a trabajar en las especificaciones para gestionar de forma remota gateways residenciales/domésticos. En octubre de 2003, Nokia, Motorola, IBM, ProSyst y otros miembros de OSGi formaron un Grupo de Expertos Móviles (MEG) que especificará una plataforma de servicio basada en MIDP para la próxima generación de teléfonos móviles inteligentes, abordando algunas de las necesidades que CLDC no puede manejar. - Aparte de los CDC. MEG se convirtió en parte de OSGi como con R4.
Nombre | Licencia |
---|---|
Apache | Fuente abierta |
Apache Karaf | Fuente abierta |
Concierge OSGi | Fuente abierta |
Equinox OSGi | Fuente abierta |
Eclipse Gemini | Fuente abierta |
Knopflerfish | Fuente abierta |
(leer más)
(leer más)
El contrabando de solicitudes HTTP es una vulnerabilidad de seguridad en el protocolo HTTP que utiliza la incoherencia entre la interpretación... (leer más)