• Nenhum resultado encontrado

Java Beans. Autores. Autores. Cláudio Geyer Marcelo de Medeiros Soares. 28/4/2005 Pg. 1. Informática UFRGS. Informática UFRGS

N/A
N/A
Protected

Academic year: 2021

Share "Java Beans. Autores. Autores. Cláudio Geyer Marcelo de Medeiros Soares. 28/4/2005 Pg. 1. Informática UFRGS. Informática UFRGS"

Copied!
28
0
0

Texto

(1)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 1

Java Beans

Java Beans

Informática

UFRGS AutoresAutores

Autores

Cláudio Geyer

(2)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 3

Local Local

Local

Instituto de Informática UFRGS

disciplina: Programação Distribuída e Paralela ano: 1998/1

revisões: 2000, 2001, 2002

Informática

UFRGS SúmulaSúmula

Súmula

JavaBeans características arquitetura classes propriedades eventos programação outros recursos

(3)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 5

Definição Definição

Java Beans

Modelo de componentes independente de plataforma Componente reusável de software

pode ser visualmente manipulado

por uma ferramenta de “construção” de programas.

Informática

UFRGS JavaBeansJavaBeans- Características- Características

Portabilidade

Suporta interoperabilidade com outras plataformas

OpenDoc e ActiveX.

API uniforme

Simplicidade

(4)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 7

JavaBeans

JavaBeans- Características- Características

Granularidade de componentes

Reusabilidade

Extende a noção de

write once

run anywhere

incluindo reuse everywhere.

Informática

UFRGS JavaBeansJavaBeans - Características - Características

Design-Time X Run-Time

Segurança

Ativação local

Beans invisíveis

Multi-Threading

(5)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 9

JavaBeans

JavaBeans em ambiente distribuído em ambiente distribuído

JavaBeans JavaBeans JavaBeans JDBC Database Server CORBA Server Java Server Database protocol IIOP RMI Informática

UFRGS Arquitetura Arquitetura JavaBeansJavaBeans

Arquitetura JavaBeans

JDK como framework de componentes

Apresentação visual: Java Foundation Classes

(AWT, 2D e Swing)

Eventos

modelo de delegação de eventos

Propriedades

(6)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 11

Arquitetura

Arquitetura JavaBeansJavaBeans

Introspecção

Classes reflection

Persistência

Serialização, Jar

Customização

editores de propriedades, wizards.

Informática

UFRGS Classes Classes JavaBeansJavaBeans

Suporte a Beans em run-time

a partir da versão JDK 1.1 permite a criação de Beans

suporte à obtenção de informações sobre o ambiente de execução do bean.

(7)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 13

Classes

Classes JavaBeansJavaBeans

Suporte à introspecção

São usadas pelas ferramentas para descobrir (do bean) o ícone

os métodos as propriedades Eventos

Suporte a propriedades

ajudam no gerenciamento das propriedades do bean.

Informática

UFRGS Classes Classes JavaBeansJavaBeans

Versões 1.2 e outras

Melhor suporte à semântica de applet Agregação / delegação de objetos Melhor suporte em tempo de design Serviços e protocolo de Bean-container Drag-and-Drop

(8)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 15

Propriedades Propriedades

Propriedades simples

public <PropertyType> getXXX();

public void setXXX(<PropertyType> value);

Propriedades booleanas

public Boolean isXXX();

public void setXXX(boolean value);

Informática

UFRGS PropriedadesPropriedades

Propriedades indexadas

public <PropertyType>[ ] getXXX();

public void setXXX(<PropertyType>[ ] values); public <PropertyType> getXXX(int index);

(9)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 17

Propriedades ativas Propriedades ativas

Bound properties

Dispara um evento quando o seu valor é alterado.

O bean deve prover os seguintes métodos para adicionar e remover listeners

void addPropertyChangeListener (PropertyChangeListener l);

void removePropertyChangeListener (PropertyChangeListener l);

É suficiente chamar o método já existente A especificação JavaBeans 1.01 permite

adicionar um listener para uma determinada propriedade

Informática

UFRGS Propriedades ativasPropriedades ativas

Constrained properties

também informa quando da mudança em uma propriedade

(10)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 19

Propriedades ativas Propriedades ativas

Constrained properties

Qualquer subscriber pode interromper a mudança gerando uma PropertyVetoException

Nesse caso, deve ser restaurado o valor original da propriedade.

Adição e remoção de listeners void addVetoableChangeListener (VetoableChangeListener l);

void removeVetoableChangeListener (VetoableChangeListener l);

Informática

UFRGS Exemplo Exemplo BeanBean Simples Simples

Exemplo SimpleBean

tutorial SDK (junho de 2002) código

import java.awt.*;

import java.io.Serializable;

public class SimpleBean extends Canvas

implements Serializable {

// Construtor inicializa propriedades herdadas public SimpleBean() {

setSize(60, 40);

setBackground(Color.red); }

}

Canvas possui duas (ao menos) propriedades Size e background

(11)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 21

Exemplo

Exemplo BoundBoundPropertiesProperties

Conceitos Bound Properties

quando propriedade é alterada

evento é enviado a ouvidores (listeners) Bean deve manter lista de ouvidores

p write listener 1 listener 2 evento evento Informática

UFRGS Exemplo Exemplo BoundBoundPropertiesProperties

Conceitos Bound Properties

classe PropertyChangeSupport

métodos para adicionar e remover ouvidores

método para enviar PropertyChangeEvent objeto aos ouvidores

quando propriedade é alterada

Bean deve herdar esse classe ou usá-la como interna interface PropertyChangeListener

método propertyChange

(12)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 23

Exemplo

Exemplo BoundBoundPropertiesProperties

Implementando um Bean com propriedade

amarrada

importar pacote java.beans

acesso a classe PropertyChange.Support instanciar um objeto PropertyChangeSupport

private PropertyChangeSupport changes = new PropertyChangeSupport(this); objeto mantem lista de ouvidores

envia eventos de atualizações de propriedades

Informática

UFRGS Exemplo Exemplo BoundBoundPropertiesProperties

Implementando um Bean com ...

implementar métodos para adição e remoção de ouvidores

simplesmente encapsular chamadas ao changes public void addPropertyChangeListener(

PropertyChangeListener l) {

changes.addPropertyChangeListener(l); }

public void removePropertyChangeListener( PropertyChangeListener l)

{

changes.removePropertyChangeListener(l); }

(13)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 25

Exemplo

Exemplo BoundBoundPropertiesProperties

Implementando um Bean com ...

modificar método de atualização da propriedade para enviar eventos aos ouvidores

exemplo: método para atualizar a propriedade Label guarda-se o valor antigo, necessário ao método abaixo

chama-se o método firePropertyChange, passando propriedade

valor antigo valor atual

se os argumentos forem primitivos

transformá-los em objetos (wrapper version)

Informática

UFRGS Exemplo Exemplo BoundBoundPropertiesProperties

Implementando um Bean com ...

modificar método de atualização da propriedade o método firePropertyChange

empacota seus argumentos em objeto PropertyChangeEvent

chama propertyChange em cada ouvidor public void setLabel(String newLabel) { String oldLabel = label;

label = newLabel; sizeToFit();

changes.firePropertyChange("label", oldLabel, newLabel);

(14)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 27

Exemplo

Exemplo BoundBoundPropertiesProperties

Implementando um Bean com ...

implementando ouvidores

implementar interface PropertyChangeListener implementar método

public abstract void propertyChange( PropertyChangeEvent evt)

chamado pelo Bean via método fire ação necessária ao receber evento

freqüentemente atualizar uma propriedade local

Informática

UFRGS Exemplo com Exemplo com ConstrainedConstrainedPropertiesProperties

Conceitos de Constrained Properties

constrained

qualquer alteração pode ser vetada por um ouvidor passos

evento é enviado pelo método firePropertyChange alteração é feita após evento

esse chama método vetoableChange bean espera vetos

se houver um veto

normalmente deve-se reverter alteração nos ouvidores

(15)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 29

Exemplo com

Exemplo com ConstrainedConstrainedPropertiesProperties

Conceitos de Constrained Properties

classe VetoableChangeSupport implementa recursos acima adiciona e remove ouvidores método firePropertyChange

envia PropertyChangeEvent interface VetoableChangeListener

método

void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException;

recebe eventos enviados pelo firePropertyChange

Informática

UFRGS Exemplo com Exemplo com ConstrainedConstrainedPropertiesProperties

Implementando Bean com Constrained Properties

pacote java.beans

classe VetoableChangeSupport instanciar objeto da classe acima

private VetoableChangeSupport vetos = new VetoableChangeSupport(this);

(16)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 31

Exemplo com

Exemplo com ConstrainedConstrainedPropertiesProperties

Implementando Bean com Constrained Properties

public void addVetoableChangeListener( VetoableChangeListener l)

{

vetos.addVetoableChangeListener(l); }

public void removeVetoableChangeListener( VetoableChangeListener l)

{

vetos.removeVetoableChangeListener(l); }

Informática

UFRGS Exemplo com Exemplo com ConstrainedConstrainedPropertiesProperties

Implementando Bean com Constrained Properties

implementar método de atualização da propriedade: set

public void setPriceInCents(int newPriceInCents) throws PropertyVetoException {

int oldPriceInCents = ourPriceInCents; // First tell the vetoers about the change.

// If anyone objects, we don't catch the exception // but just let if pass on to our caller.

vetos.fireVetoableChange("priceInCents", new Integer(oldPriceInCents),

new Integer(newPriceInCents));

// No-one vetoed, so go ahead and make the change. ourPriceInCents = newPriceInCents;

changes.firePropertyChange("priceInCents", new Integer(oldPriceInCents),

new Integer(newPriceInCents)); }

(17)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 33

Exemplo com

Exemplo com ConstrainedConstrainedPropertiesProperties

Implementando Bean com Constrained Properties

ouvidores

implementar interface VetoableChangeListener implementar método

void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException;

Informática

UFRGS Escrevendo Escrevendo BeansBeans portáveis portáveis

Usar nomeação padrão para as propriedades

Reservar os nomes de métodos get e set para

propriedades

Utilizar Two-phase commit para atualizar

propriedades constrained

(18)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 35

Eventos Eventos

Sinalizam uma mudança de estado do bean

Maneira de informar partes interessadas que alguma

coisa aconteceu

Modelo de delegação de eventos ->

publish-and-subscribe

Event Sources Event Objects Event Listeners

Evento para todas ocasiões: ActionEvent

Informática

UFRGS Eventos - nomeação padrãoEventos - nomeação padrão

Multicast Events

public void add<EventListenerType> (<EventListenerType> a);

public void

(19)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 37

Eventos - nomeação padrão Eventos - nomeação padrão

Unicast Events

public void add<EventListenerType> (<EventListenerType> a) throws java.util.TooManyListenersException; public void remove<EventListenerType> (<EventListenerType> a);

Informática

UFRGS Escrevendo Escrevendo beansbeans portáveis portáveis

Usar nomeação padrão

Descrever completamente o estado do evento

Criar uma hierarquia de event listeners

Agrupar eventos relacionados em um único listener

Utilizar eventos padrão AWT quando possível

(20)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 39

Introspecção Introspecção

Capacidade de descobrir que propriedades, eventos e

métodos um bean possui

É adquirida através da utilização de uma nomeação

padrão

Pode-se prover uma interface BeanInfo

para controlar que informações são disponibilizadas pelo bean

Informática

UFRGS CustomizaçãoCustomização

Personalização da aparência e comportamento de um

bean

Editores de propriedades, wizards

Armazenamento das alterações do usuário

mecanismos de persistência

(21)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 41

Persistência Persistência

Armazenamento e recuperação de estado de um bean

Adquirida através do mecanismo de serialização de

Java

Informática

UFRGS PersistênciaPersistência

Interface Serializable

provê serialização padrão

private void writeObject(ObjectOutputStream out) throws IOException;

private void readObject(ObjectInputStream in) throws IOException;

Interface Externalizable

(22)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 43

Java

Java ArchiverArchiver

Tecnologia usada par agrupar

classes

objetos serializados imagens

arquivos de ajuda

e outros recursos como classes de design-time

Informática

UFRGS Java Java ArchiverArchiver

Permite compressão de múltiplos arquivos.

Segurança e autenticação

Conteúdo auto-descritivo

(23)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 45

Manifest Manifest file file

Descrição do conteúdo de um .JAR

Exemplo:

Manifest version 1.0 Name: SmileyBean.class Java-Bean: True Design-Time-Only: False Depends-On: SmileyEventAdapter.class Depends-On: Smiley1.ser Informática

(24)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 47

Enterprise

EnterpriseJavaBeansJavaBeans

EJB - Enterprise Java Beans

Especificação de uma arquitetura de componentes server-side para a plataforma Java

Define um padrão para implementar regras de negócio em aplicações multi-camadas como componentes reusáveis

Informática

UFRGS BenefíciosBenefícios

Produtividade

Escalabilidade

Gerenciamento automático de transações - JTS

Suporte a transações distribuídas

(25)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 49

Benefícios Benefícios

Integração com CORBA

Aceitação da indústria

Desvantagem: desenvolvimento mais complexo

Informática

UFRGS Entidades da arquiteturaEntidades da arquitetura

Componentes - JavaBeans

EntityBeans

SessionBeans

Servidores

Clientes

Containers - gerenciamento de transações, segurança

e ciclo de vida dos componentes

(26)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 51

SessionBeans SessionBeans

Seu ciclo de vida é igual ao do cliente

é uma extensão do cliente

É destruído quando o servidor EJB cai

o cliente deverá estabelecer um novo objeto de sessão

Não representa dados que são armazenados em um

banco de dados

Informática

UFRGS EntityBeansEntityBeans

Suporta acesso compartilhado por vários clientes

Participa de transações

Representa dados em um Banco de Dados

Seu ciclo de vida é igual ao de um dado em um Banco

de Dados

Sobrevive a quedas do servidor

Refere-se a um objeto persistente

(27)

Informática UFRGS

Programação com Objetos Distribuídos (C. Geyer) Java Beans 53

Referências Referências

Orfali, R., Harkey, D.: Client-Server Programming

with Java and CORBA - 2a. Edição.

(28)

This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.

Referências

Documentos relacionados

A expansão da produção do arroz ecológico foi impulsionada pela criação do Grupo Gestor do Arroz Ecológico (GGAE) no ano de 2002, cuja meta, além de reunir as famílias

O Tratamento diretamente observado- TDO para a tuberculose consiste na tomada diária (de segunda a sexta-feira) da medicação sob supervisão do profissional de saúde,

É, portanto, de acordo com essa perspectiva materialista que Harvey traçará seu amplo painel das profundas É, portanto, de acordo com essa perspectiva materialista que Harvey

Paula Rodrigues CAUMO (UFRGS), Antônio TAKIMI (UFRGS), Guilherme Pizzato SIEBEN (UFRGS), Jean POLETTO (UFRGS) , Ney FERREIRA (UFRGS) , Patric NEIS (UFRGS) , Carlos

As atividades de educação e divulgação de geologia até agora desenvolvidas pelo CAEG-UFRGS comprovam que estudantes, profissionais e entidades da área de geologia têm

Sendo o indivíduo, homem e mulher, sujeito de direito internacional, então ele obteria automaticamente uma novel cidadania internacional, de modo que, na ONU, poderia se

ÁLBUM de aventUras furo dobr ar pelo tr ac ejado par a dentr o pôr c ola no outr o lado a MInha exPerIênCIa tIMe... ÁLBUM de aventUras furo furo dobr ar pelo tr ac ejado par a dentr

Nesse estudo, também foi observado que 11 (42,31%) bochechos apresentaram uma concentração alcoólica superior a 10% (Concentração alcoólica máxima recomendada para