Curso: “OSGi: Open Services
Gateway Interface”
Dr. Diego Lz. de Ipiña Gz. de Artaza
http://paginaspesonales.deusto.es/dipina
http://www.morelab.deusto.es
http://www.ctme.deusto.es
[email protected]
Contenido
1.
Introducción
a. ¿Qué proporciona?
b. ¿Dónde se aplica?
c. Especificaciones y Herramientas OSGi 2.
2. Arquitectura OSGi
a. JVM, modularidad, gestión de ciclo de vida, seguridad
b. Registro de Servicios
c. Concepto de Bundle
d. Servicios Estándar OSGi
3. Programando OSGi con Knopplerfish
Instalación y configuración de plug-in para Eclipse
a.
b. Usando Ant para compilar código OSGi
c. Desarrollando un primer bundle
d. Fichero de manifesto
e. Creación de la clase Activator
f. Compilando e instalando un bundle
g. Creando interfaces de servicio
h. Usando el registro de servicios
i. Usando los servicios avanzados de servicios: ServiceListener y ServiceTracker
2/142
1
Contenido
4. Desarrollo de un ejemplo complejo en OSGi
a. Diseño de un Servicio de Descubrimiento de Servicios
distribuidos
b. Usando el LogService
c.
d. Creación de Servicios Distribuidos descubribles mediante el
Implementando el servicio, bundle y activator
Distributed Bundle Discoverer
5. Servicios Avanzados en OSGi
a. Declarative Service
b. Configuration Service
c. Event Admin Service
d. Wire Admin Service
e. R-OSGi
6. Conclusión
3/142
OSGi en Pocas Palabras
Una framework Java para el desarrollo de aplicaciones
desplegables remotamente, que requieren:
Robustez
Elevada distribución
Heterogeneidad (diferentes dispositivos)
Colaboraciones
Resuelve el problema de desplegar muchos programas
independientes en grandes sistemas distribuidos, proveyendo:
Un sistema operativo para programas
Un formato para la descarga de código ejecutable
Un mecanismo para descubrir otros programas
Estandarización de APIs para promocionar la reutilización
Gestión eficiente del ciclo de vida de las aplicaciones descargadas
4/142
2
OSGi (Open Services Gateway Initiative)
Define una Arquitectura Centralizada Orientada a
Servicios (SOA) dentro de una máquina virtual (JVM)
¿Por qué se creo?
Necesidad de crear herramientas que estandaricen los aspectos de
integración del software de tal manera que la reutilización de
componentes software sea más sencilla, fiable, robusta y de bajo
coste.
¿Qué aporta?
OSGi aporta modularidad dinámica a Java y permite estandarizar la
integración del software
5/142
OSGi (Open Services Gateway Initiative)
OSGi define un entorno de ejecución estandarizado orientado a
componentes que es la base de una arquitectura SOA.
Proporciona una pequeña capa de software que permite la cooperación
entre componentes Java en una única JVM.
Gestiona dinámica del ciclo de vida de los componentes gestionados
(instalación, actualización o eliminación) sin reinicio del dispositivo
Múltiples dominios de aplicación:
Pasarelas residenciales
Dispositivos móviles de última generación
Industria del automóvil
Aplicaciones de sobremesa o
Dispositivos electrónicos (Philips iPronto, Nokia N800 y E70 o NSLU2)
Realmente una especificación, no un producto, en R4:
r4.core.pdf (2.01 MB) -- R4 Core Specification
r4.cmpn.pdf (4.55 MB) -- R4 Service Compendium
6/142
3
OSGi Alliance
OSGi es gestionado por la OSGi Alliance:
http://www.osgi.org/, actualmente más de 30 empresas:
Alpine Electronics Europe Gmbh , Aplix Corporation , BMW Group , Computer Associates ,
Deutsche Telekom AG , Echelon Corporation , Electricité de France (EDF) , Ericsson Mobile
Platforms AB , Esmertec , Espial Group, Inc. , ETRI Electronics and Telecommunications
Research Institute , France Telecom , Gatespace Telematics AB , Gemplus , Harman/Becker
Automotive Systems GmbH , Hitachi, Ltd. , IBM Corporation , Industrial Technology
Research Institute , Insignia Solutions , Intel Corporation , KDDI R&D Laboratories, Inc. ,
KT Corporation , Mitsubishi Electric Corporation , Motorola, Inc. , NEC Corporation , Nokia
Corporation , NTT , Oracle Corporation , Panasonic Technologies, Inc. , ProSyst Software
GmbH , Robert Bosch Gmbh , Samsung Electronics Co., Ltd. , SavaJe Technologies, Inc. ,
Sharp Corporation , Siemens AG , Sun Microsystems, Inc. , Telcordia Technologies, Inc. ,
Telefonica I+D , TeliaSonera , Vodafone Group Services Limited
7/142
Características Principales de OSGi
1. Gestión de componentes software
Formato de empaquetamiento para aplicaciones (bundle)
Instalar/Arrancar/Parar/Actualizar/Desinstalar un bundle
Capacidad de recibir actualizaciones futuras de productos
2. Gestión de Componentes Remota
Provee una API de gestión a utilizar por un bundle de gestión que mapea un
protocolo a un conjunto de llamadas
Hace frente a aspectos de heterogeneidad
3. Cooperación entre Aplicaciones
Los bundles pueden contribuir tanto con código como servicios al entorno
Contenedor abierto donde las aplicaciones no se ejecutan aisladas, comparten
librerías
El Registro de Servicios de OSGi ofrece modelo ligero para publicar, encontrar
y asociar servicios dentro de una JVM
Incluye un servicio de notificación para generar eventos de ciclo de vida
4. Naturaleza Dinámica
La actualización de componentes no requiere el reinicio
5. Otras propiedades
Despliegue simplificado
Separación estricta de interfaz e implementación (enfoque SOA)
Entorno de Ejecución Seguro
Componentes Comerciales pueden Desplegarse Fácilmente
8/142
4
¿Qué proporciona OSGi?
Framework de componentes software estándar y abierto para
productores de dispositivos, proveedores de servicios y
desarrolladores
Modelo de coexistencia para permitir diferentes componentes
dentro de una JVM
Modelo cooperativo donde las aplicaciones pueden descubrir y usar
servicios provistos por otras aplicaciones en la misma instancia de
OSGi
Arquitectura flexible de gestión remota: API de despliegue que
controla ciclo de vida de aplicaciones: bundle + ciclo de vida de
bundle
Conjunto de servicios opcionales como HTTP, Wiring, IO o
eventos
Entorno de ejecución seguro
Complejidad del Software
Service Oriented Programming
y
t
i
v
i
t
c
u
d
o
r
P
Structured
Programming
Assembly
Complexity and Size
9/142
10/142
5
¿Dónde se aplica?
Pasarelas residenciales:
Empresas como Siemens producen dispositivos para la automatización
del hogar y sus componentes conectados por PLC o UPnP. Hace
controlables remotamente a esos dispositivos.
Aplicaciones de dektop:
El popular entorno de desarrollo Eclipse está basado en OSGi
(http://www.eclipse.org/osgi/)
Dispositivos móviles de nueva generación:
Los fabricantes de dispositivos móviles requieren una plataforma para el
despliegue continuo de servicios escalable, flexible y de pequeño tamaño
basada en OSGi y Java (JSR 232 – http://jcp.org/en/jsr/detail?id=232 y
http://gceclub.sun.com.cn/java_one_online/2006/TS-3757/TS-3757.pdf)
Automoción:
Series 5 y 7 BMW incorporan OSGi para su plataforma de información y
entretenimiento (AMI-C – http://www.ami-c.org/)
Próximamente en Servidores de Aplicaciones Empresariales
Interface21, creadores de Spring, definiendo la nueva generación de
servidor EE en OSGi (http://www.springframework.org/osgi/specification)
Ultima versión de IBM WebSphere basada en OSGi
11/142
Ejemplo de Despliegue OSGi en el Hogar (1)
HomeControl
Security
Webpad
Entertainment/
Gaming
Access
from any Web Terminal
Aggregation &
Management Platform
Notification
Server
e.g. access from office
or via PDA/WAP phone
Subscriber, Service and
Device Management
Home Office
Different
Networks
Internet
Secure Tunnel
OSGi
Service Gateway
Access
Gateway
Family
Portal
Firewall
Internet
Services
Service
Offering
Services
Provider
12/142
6
Ejemplo de Despliegue OSGi en el Hogar (2)
13/142
Implementaciones OSGi R4 Comerciales
Existen varias implementaciones de OSGi comerciales
certificadas para la versión 4:
Makewave Knopflerfish Pro 2.0 (www.makewave.com)
comercial/libre
ProSyst Software mBedded Server 6.0 (www.prosyst.com)
Samsung OSGi R4 Solution (www.samsung.com)
KT OSGi Service Platform (KOSP) 1.0 (http://www.kt.co.kr/)
HitachiSoft SuperJ Engine Framework (http://hitachisoft.jp/)
14/142
7
Implementaciones OSGi R4 Libres
Además, las siguientes implementaciones libres de R4
OSGi también existen:
Eclipse Equinox (http://www.eclipse.org/equinox/) – framework
OSGi usada en Eclipse
Makewave Knopflerfish (http://www.knopflerfish.org/) – más usada
y mejor documentada (elegida para este curso)
Apache Felix (http://felix.apache.org/site/index.html)
OSCAR
Aplicaciones Reales usando OSGi
X-ray measurement Systems
BMW 7 series
Eclipse
Siemens Medical
Nokia E70
Siemens Gigaset SX765
Espial Set-top box
VDO on-board computer
Prosyst mBedded Server, Remote
Manager and Builder
Bosch and Siemens Home
Appliances
Philips iPronto
Telefónica ehogar
Websphere application server
15/142
16/142
8
Características Esenciales de OSGi
Gestión de componentes software
Gestión remota de componentes
Cooperación entre componentes/aplicaciones
Provisión de entorno de ejecución seguro
17/142
Gestión de Componentes Software
OSGi provee las siguientes funciones para la gestión del
ciclo de vida de aplicaciones:
Bundles: formato de empaquetamiento para aplicaciones. Es un
simple JAR compatible con mecanismos de compresión ZIP.
Gestión de ciclo de vida de bundles:
Instalar un bundle
Arrancar/parar un bundle
Actualizar un bundle
Desinstalar un bundle
Java VM
OS
CPU
IO
18/142
9
Configuración Remota de Componentes
OSGi está concebido para dispositivos que operan
desatendidos o controlados por un operador de
plataforma que requiera gestión remota
El ciclo de vida del software no para cuando un dispositivo
abandona la fábrica
Es conveniente poder actual
Comentarios de: Curso: OSGi: Open Services Gateway Interface (0)
No hay comentarios