osgi™–um sistemadinâmicode módulosparajavareverbel/sma-06/slides/...ime-usp, 28/11/2006 osgi...

26
IME-USP, 28/11/2006 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

Upload: others

Post on 07-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

IME-USP, 28/11/2006

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

Page 2: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 3: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 4: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 5: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java5

Arquitetura Base

Comunicação

Gerenciamento

Implantação

Page 6: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 7: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 8: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 9: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 10: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 11: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 12: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java12

Ciclo de Vida – Arquitetura

Page 13: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 14: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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”

Page 15: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java15

Serviços - Arquitetura

Page 16: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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()

Page 17: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 18: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 19: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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)

Page 20: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 21: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

Seminários MAC-5863: OSGi - Um Sistema Dinâmico de Módulos para Java21

Segurança

Page 22: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

IME-USP, 28/11/2006

Aplicações e Ferramentas OSGi

Page 23: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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...

Page 24: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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

Page 25: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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)

Page 26: OSGi™–Um SistemaDinâmicode MódulosparaJavareverbel/SMA-06/Slides/...IME-USP, 28/11/2006 OSGi –Um SistemaDinâmicode MódulosparaJava Raoni Kulesza raoni@larc.usp.br MAC-5863

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