OSGi™–Um SistemaDinâmicode MódulosparaJava3 Seminários MAC-5863: OSGi-Um Sistema Dinâmico de...
Transcript of OSGi™–Um SistemaDinâmicode MódulosparaJava3 Seminários MAC-5863: OSGi-Um Sistema Dinâmico de...
IME-USP, 28/11/2006
OSGi™ – Um Sistema Dinâmico de Módulos para Java
Raoni Kulesza
MAC-5863
Sistemas de Middleware Avançados 2006/2
Prof. Dr. Francisco Reverbel
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java2
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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java3
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 paradistribuiçã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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java4
Objetivos da OSGi Service Platform
• Framework Java™ para desenvolver software baseado em componentes que possibilite implantaçãoremota 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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java5
Arquitetura Base
Comunicação
Gerenciamento
Implantação
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java6
Ambiente de Execução
• As APIs usam apenas um sub-conjunto de J2SE e J2ME CDC
– AE OSGi Mínimo
• Implementações podemestender o AE OSGi Mínimo
• Segurança não é obrigatório
• Possibilidade de compatibilidade com CLDC
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java7
Módulos - Bundles
• Bundles – Unidade de
modularização (JAR)
– Código, Manifest,
Recursos e [OSGI-OPT]
• Pode-se importar e exportar serviços
• Vários bundles podem
ser executados numa única JVM
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java8
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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java9
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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java10
Módulos – Resolução de Dependência
Bundle A
Export org.osgi.service.log
com.ibm.service.log
com.ibm.j9
Import org.osgi.service.http
javax.servlet.http
Framework
org.osgi.framework
org.osgi.service.http
Bundle B
Export ericsson.osgi
javax.servlet
javax.servlet.http
org.osgi.service.log
Import org.osgi.service.http
org.osgi.service.log
B resolved
A resolved
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java11
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 (systembundle)
• Permite o gerenciamento remoto da plataforma
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java12
Ciclo de Vida – Arquitetura
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java13
Ciclo de Vida – Funcionamento
• O Bundle é iniciado pelaclasse Bundle Activator(definido no Manifest)
• 2 métodos
– Start: Inicializa o mais
rápido possível
– Stop: desalocarecursos
• Bundle Context provêacesso ao framework
• Framework provêserviço com níveis e grupos de inicialização
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java14
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”
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java15
Serviços - Arquitetura
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java16
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()
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java17
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 procureme rastreiem objetos de serviços
• O framework gerencia essa colaboração
– Dependencias, segurança
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java18
Modelo de Colaboração
BundleBundle
JAVA
Operating System
Hardware
OSGi Framework
Serviceregistry
packagespackages
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java19
Modelo de Colaboração
JAVA
Operating System
Hardware
Java Application Manager
Serviceregistry
packagespackages
Midlet,Xlet,
orApplet
Midlet,Xlet,or
Applet
Restrição de acesso
a código nativo
Sem gerenciamento
de pacotes (versões)
Sem colaboração
Sem gerenciamento
de componentes (bundles)
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java20
Serviços Padrão OSGi
UPnP
Initial Provisioning
Name Space
JiniStart Level
IO Connector
Wire AdminXML Parser
Measurement & StatePosition
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
…
2000 2001 2003 2005
R1
R2
R3
R4
Ho
me
Au
tom
atio
n Ve
hic
le
Mo
bile
FrameworkHttp
LogDevice Access
Package Admin
Configuration Admin
Permission Admin
User Admin
Preferences
MetaType
Service Tracker
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java21
Segurança
IME-USP, 28/11/2006
Aplicações e Ferramentas OSGi
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java23
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...
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java24
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
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java25
Considerações Finais
• Especificação OSGi é bastante abrangente e estaapresentaçã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)
Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java26
Referências
• OSGi Service Platform, Core Specification, Release 4, v.4.0.1, Julho2006
– 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