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
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 recursosInformá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
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 oncerun 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
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
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 Beanssuporte à obtenção de informações sobre o ambiente de execução do bean.
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
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);
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
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
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
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); }
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);
Informática UFRGS
Programação com Objetos Distribuídos (C. Geyer) Java Beans 27
Exemplo
Exemplo BoundBoundPropertiesProperties
Implementando um Bean com ...
implementando ouvidoresimplementar 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
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.beansclasse VetoableChangeSupport instanciar objeto da classe acima
private VetoableChangeSupport vetos = new VetoableChangeSupport(this);
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: setpublic 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)); }
Informática UFRGS
Programação com Objetos Distribuídos (C. Geyer) Java Beans 33
Exemplo com
Exemplo com ConstrainedConstrainedPropertiesProperties
Implementando Bean com Constrained Properties
ouvidoresimplementar 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
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
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
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ênciaInformá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ãoprivate void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException;
Interface Externalizable
Informática UFRGS
Programação com Objetos Distribuídos (C. Geyer) Java Beans 43
Java
Java ArchiverArchiver
Tecnologia usada par agrupar
classesobjetos 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
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áticaInformá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
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
EntityBeansSessionBeans
Servidores
Clientes
Containers - gerenciamento de transações, segurança
e ciclo de vida dos componentes
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
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.
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.