OSGi™ – Um Sistema Dinâmico de Módulos para Java - IME-USP

Propaganda
OSGi™ – Um Sistema Dinâmico de
Módulos para Java
Raoni Kulesza
[email protected]
MAC-5863
Sistemas de Middleware Avançados 2006/2
Prof. Dr. Francisco Reverbel
IME-USP, 28/11/2006
Agenda
• Introdução
• Arquitetura Base do Framework OSGi
– Ambiente de Execução
– Módulos
– Ciclo de Vida
– Serviços
– Segurança
• Aplicações e Ferramentas OSGi
• Considerações Finais
• Referências
2
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Introdução
• Open Services Gateway Initiative – OSGi Alliance
– Fundada em março de 1999
– Organização independente, sem fins lucrativos
– Define e promove especificações abertas para
distribuição de serviços gerenciáveis através de
ambientes em rede
• Especificações da OSGi Service Platform
• Aberta e Padronizada
• Orientado a componentes
• Serviços em rede
3
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Objetivos da OSGi Service Platform
• Framework Java™ para desenvolver software
baseado em componentes que possibilite implantação
remota e:
– Confiável
– Distribuição e Gerenciamento em Larga Escala
– Vários tipos de dispositivos
– Colaborativo
• Criado através de colaboração de várias indústrias
• Atualmente na especificação 4.0
• Procura resolver problemas da área de
desenvolvimento baseado em componentes
4
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Arquitetura Base
Comunicação
Gerenciamento
Implantação
5
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Ambiente de Execução
• As APIs usam apenas um
sub-conjunto de J2SE e
J2ME CDC
– AE OSGi Mínimo
• Implementações podem
estender o AE OSGi Mínimo
• Segurança não é obrigatório
• Possibilidade de
compatibilidade com CLDC
6
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Módulos - Bundles
• Bundles – Unidade de
modularização (JAR)
– Código, Manifest,
Recursos e [OSGIOPT]
• Pode-se importar e
exportar serviços
• Vários bundles podem
ser executados numa
única JVM
7
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Módulos – Carga de Classes
• Estende o modelo de implantação da plataforma Java
– Modularização, Proteção e Controle de Versão
– Framework OSGi é uma rede de classloaders
• Boot -> Framework -> Bundle space
8
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Módulos – Dependências
• Bundles devem ser resolvidos pelo framework
(resolver)
– O processo de associar pacotes exportados e
importados para um bundle
• Deve ser realizado antes de carregar e executar o
bundle
• Descrito através de cabeçalhos específicos do arquivo
de MANIFEST
– Import-Package Header
– Export-Package Header
– Required-Bundle
Ex.: Import-Package: br.usp.ime.foo; br.usp.ime.bar;
version=“[1.0,1.24]“; resolution:=mandatory
9
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Módulos – Resolução de Dependência
Framework
org.osgi.framework
org.osgi.service.http
Bundle A
Export org.osgi.service.log
com.ibm.service.log
com.ibm.j9
Import org.osgi.service.http
javax.servlet.http
Bundle B
Export ericsson.osgi
javax.servlet
javax.servlet.http
org.osgi.service.log
Import org.osgi.service.http
org.osgi.service.log
10
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
A resolved
B resolved
Ciclo de Vida – Visão Geral
• Define uma API para controlar operações de
segurança e ciclo de vida dos bundles
– Instalação
– Inicialização
– Finalização
– Atualização
– Desinstalação
– Monitoração
• Disponibiliza acesso ao framework (system
bundle)
• Permite o gerenciamento remoto da plataforma
11
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Ciclo de Vida – Arquitetura
12
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Ciclo de Vida – Funcionamento
• O Bundle é iniciado pela
classe Bundle Activator
(definido no Manifest)
• 2 métodos
– Start: Inicializa o mais
rápido possível
– Stop: desaloca
recursos
• Bundle Context provê
acesso ao framework
• Framework provê
serviço com níveis e
grupos de inicialização
13
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Serviços – Visão Geral
• Serviços são objetos Java normais que são
registrados através de uma ou mais interfaces
Java no registro de serviços (Service Registry)
• Publicação, Pesquisa e Acoplamento dinâmico
• Políticas de acesso e controle de versão para
serviços
• Rastreamento de serviços durante a
reinicialização do framework
• Provê arquitetura orientada a serviços “in-VM”
14
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Serviços - Arquitetura
15
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Serviços - Funcionamento
• Registrando Serviços
– ServiceRegistration e ServiceReference
– BundleContext.registerService()
• Propriedades de Serviço
– Par de chave-valor
– Informações que descrevem serviços para seu
“público”
• Identificador de Persistência (Persistent Identifier –
PID)
– Auxilia no controle de reinicialização do framework
• Localizando Serviços
– Obtém ServiceReference através de
BundleContext.getServiceReference()
16
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Modelo de Colaboração
• O framework OSGi é mais do que um ambiente de
execução de Applets, MIDlets, Xlets
• Bundles podem colaborar através de:
– Objetos de serviços
– Compartilhamento de pacotes
• O registro dinâmico permite que os bundles procurem
e rastreiem objetos de serviços
• O framework gerencia essa colaboração
– Dependencias, segurança
17
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Modelo de Colaboração
OSGi Framework
Service
registry
Bundle
Bundle
packages
packages
JAVA
Operating System
Hardware
18
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Modelo de Colaboração
Java Application Manager
Midlet,
Xlet,
or
Applet
Service
registry
packages
packages
Sem gerenciamento
de componentes (bundles)
Midlet,
Xlet,
or
Applet
Sem colaboração
Sem gerenciamento
de pacotes (versões)
JAVA
Operating System
Hardware
19
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Restrição de acesso
a código nativo
Serviços Padrão OSGi
Mobile
R4
R3
UPnP
Vehicle
Home Automation
Initial Provisioning
R2
R1
Package Admin
Configuration Admin
Permission Admin
User Admin
Preferences
MetaType
Service Tracker
Framework
Http
Log
Device Access
2000
20
Name Space
Jini
Start Level
IO Connector
Wire Admin
XML Parser
Measurement & State
Position
Execution Env.
Application Manager
MIDP Container
Signed Bundles
Declarative Services
Power Management
Device Management
Security Policies
UPnP Exporter
Diagnostics/Monitoring
Framework Layering
Initial Provisioning
UPnP
…
2001
2003
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
2005
Segurança
21
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Aplicações e Ferramentas OSGi
IME-USP, 28/11/2006
Aplicações
• Arquiteturas de Gerenciamento para Dispositivos
Móveis (JSR – 232)
• Eclipse - Equinox
• ObjectWeb – Jonas J2EE Server
• WebSphere Everyplace Device 6.0
• Siemens VDO Top Level Architecture
• Global System for Telematics
• Muitas outras aplicações...
– BMW, Nokia, Siemens, Philips, MHP-GEM...
23
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Ferramentas Open-source
• Eclipse Equinox: implementação OSGi R4
• Oscar: implementação R4 da ObjectWeb
• Apache Felix: projeto basedo no Oscar (R3) e
incubado na ASF
• Knopflerfish: implementação R4 da Gatespace
Telematics
24
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Considerações Finais
• Especificação OSGi é bastante abrangente e esta
apresentação foi apenas uma introdução
• A plataforma de serviços OSGi (Service Platform)
provê um modelo de componentes baseado em:
– Serviços e compartilhamento de pacotes
– Modelo de programação dinamico
• Bundles são unidades de modularização com:
– Implantação independente, fácil de desenvolver e
permitem reutilização
• Existem várias aplicações e produtos (comerciais e
open-souce) OSGi
• A abrangência da plataforma (celulares, PDA,
sistemas embarcados, PC, servidores) é o ponte forte
do padrão (client middleware, computação ubíqua e
autônoma)
25
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Referências
•
•
•
•
•
•
•
•
26
OSGi Service Platform, Core Specification, Release 4, v.4.0.1, Julho
2006
– http://www.osgi.org/resources/spec_download.asp
About the OSGi Service Platform, Technical Whitepaper, Revision 4.1,
Novembro 2005
– http://www.osgi.org/resources/spec_download.asp
OSGI Service Platform
– André Assad – Recife, Sun Tech Days 2006
OSGi™ Component Programming
– Thomas Watson e Peter Kriens - EclipseCon2006
http://www.osgi.org
http://bundles.osgi.org
http://www.eclipse.org/osgi
http://www.aqute.biz
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java
Download