Integração de Tecnologias UML/CORBA/Java A Convergência das

Propaganda
Integração de Tecnologias
UML – CORBA - Java
A Convergência das Tecnologias
Tutorial
por José Eduardo Zindel Deboni
Voxxel Consultoria de Sistemas
Objetivos do Tutorial
Observando que tudo esta orientado a objetos



Análise/Modelagem……….UML
Projeto…………………….UML e CORBA
Implementação……………IDL e Java
Analisar como o desenvolvimento de sistemas
pode tirar vantagens da integração de tecnologias
Estudar através de um exemplo como a UML
pode integrar-se a CORBA e Java
O que é um Tutorial ?
Verbete: tutorial

2. Diz-se da modalidade de ensino exercido por
tutor (4).
Verbete: tutor [Do latim: tutore.]

4. Aluno designado como professor de outros
alunos, em formas alternativas de ensino.

Fonte: Dicionário Aurélio em CD-ROM V.1.4
Os sistemas atuais são…
… complexos



Negócios estão cada vez mais complexos
Integração de mercados, globalização
Competitividade crescente
… feitos para a internet


Confiabilidade: o negócio depende do sistema
e_bussiness: O negócio é o sistema
… distribuídos em n camadas



Especialização de cada atividade do sistema
Facilidade de manutenção e portabilidade
e_business: O negócio é a rede
A arquitetura de n camadas
Camada
de
Apresentação
Camada
de Negócios
Camada
de
Dados
Corba/iiop
Corba/iiop
objetos
ok
Corba/iiop
Http/cgi
HTMLs
CGIs
webserver
RDBMS
OODBMS
Arquivos
Convergência para objetos
Análise e Modelagem
UML
Projeto e Arquitetura
Implementação
CORBA
Java
Lente convergente
Da Orientação a Objetos
Tecnologias Orientadas a Objeto
Linguagem de Modelagem Orientada a Objetos

UML – Unified Modeling Language
Arquitetura de Aplicações de Objetos Distribuidos

CORBA – Common Object Request Broker Architecture
Ambiente flexível e portável para desenvolvimento

Java (Aplicações, Applets, Servlets, JDBC, Swing, RMI, EJB…)
Como fica a Engenharia de Software?
É necessário fazer Engenharia de Software?
É possivel se fazer Engenharia do Software?





Integrar :Analise – Projeto - Implementação
Projetar a solução antes de construir
Criar uma “planta” do software
Utilizar um método para desenvolvimento de sistemas
Simular, prever resultados antes da construção
Como desenvolver em tempo de internet?
Com agregar as novas tecnologias disponíveis?
Respostas:
Sim, é indispensável usar as técnicas da Eng. de
Software, para atender à complexidade e garantir
confiabilidade às soluções distribuidas.
Sim, é possível realizar a Eng. de Software porque
tudo esta Orientado a Objetos.



Modelagem Orientada a Objetos (UML)
Arquitetura de Objetos distribuidos (CORBA)
Implementação para internet (Java)
Novas questões:
Como integrar estas novas tecnologias com os
métodos de Engenharia de Software?
Como integrar a UML (analise/projeto) com
CORBA (Arquitetura da solução) e com Java
(implementação) serm perder as vantagens
individuais de cada uma
A UML é capaz de modelar e dar uma visão
completa do todo tão heterogêneo?
Abordagem
Analisar a UML e a sua integração com
Java e CORBA
Propor um método para o trabalho em
conjunto destas tecnologias
Exemplificar a integração
Integração entre as tecnologias
Dominio do Problema
UML
Analise e Projeto
CORBA
Arquitetura da Solucao
Java
Ambiente de Implementacao
O que é a UML?
UML
Unified Modeling Language
É uma linguagem de modelagem de sistemas
 É orientada a objetos
 É padronizada pela OMG
 É suportada por diversas ferramentas CASE
 Ainda é pouco difundida, e utilizada

Seqüência de diagramas*
Casos de Uso
Comportamento
Externo
Comportamento
interno
Estrutura
Implementação
Eventos
Colaboração Atividades
Classes
Componentes
Estados
Pacotes
Distribuição
* esta seqüência não faz parte da UML é apenas uma sugestão
Casos de Uso
Descreve os cenários de interação
Identifica elementos externos
Caracteriza os objetivos de cada um com o sistema
Um Ator se comunica com Casos de Uso
Define-se a fronteira do sistema
Diagramas de Casos de Uso
Sistema
Fazer
Pedidos
Vendedor
Cliente
Aprovar
Crédito
Entregar
Material
Gerente
Diagramas de Classes
Estrutura das partes que formam o sistema
Expõe os componentes internos
Estabelece as relações entre as classes
É um diagrama estrutural
estático e não dinâmico
Possui uma relação direta com a estrutura
dos códigos
Exemplos de representação
Pessoa
Pessoa
Pessoa
nome: Texto
idade: inteiro
cadastrar()
{abstrata,
autor=JEDeboni}
+nome: Texto
#RG : inteiro
+casado : boolean=false
+cadastra()
+criar(RG:inteiro)
Modelo de Classes
Usuarios
Nome
Local
1
Telefone
Senha
FazReserva
Consultar
1
Empréstimo
1
DataEmpréstimo
DataRetorno
ATRASO
Novo
Materiais
Codigo
Assunto
1
Titulo
Autor
Emprestar
Devolver
Reservas
DataReserva
DataValidade
Criar
Cancelar
Livros
Editora
Edição
ISBN
MostraDetalhes
Diagramas de Interação
Diagramas de Seqüência de Eventos
Diagramas de Colaboração
As classes se comunicam pelos métodos
 Descreve a troca de mensagens
 Mostra a dinâmica observável entre as classes
 Uma mensagem se da pela invocação de um
método de outra classe e pela passagem de
parâmetros

Diagrama de seqüência de eventos
Diagrama de Estados
[DataReserva<Hoje]
Disponível
Reservado
Devolver
[AvisarGerente]
Retornar
Emprestar
Retornar
[ExisteReserva]
Emprestado
Devolver
[ExisteReserva]
/AvisarUsuario
Emprestar
[DataEmprestimo>Hoje]
/AvisarUsuário
Atrasado
Diagramas de Implementação
Descrição dos componentes de software que
formam o sistema e a arquitetura de
hardware
Diagramas de Componentes
 Diagramas de Distribuição

Diagrama de Componentes
GUI
Libs
BancoDeDados
Diagrama de Dsitribuição
Servidor:Host1
Impressora
Cliente:PC
Integração da implementação
Cliente:PC
GUI
Libs
Servidor:Unix
BancoDeDados
Pacotes
Agrupam os objetos
interfaces
Classes
Aulixiares
Classes de
Negócio
Classes Persistentes
(Banco de Dados)
Pode-se usar para
identificar as camadas
Integração entre os diagramas
Mapeamento de um URL
www.empresa.com.br
\horas\
<<pagina>>
index
http://www.empresa.com.br/aplic/horas/index.html
Integração entre as tecnologias
Dominio do Problema
UML
Analise e Projeto
CORBA
Arquitetura da Solucao
Java
Ambiente de Implementacao
Modelo UML de sistemas Java
Representação gráfica dos sistemas
Visão do todo, integrada e coerente
 Permite uma visão sistêmica
 Facilita o entendimento da arquitetura
 Permite esconde os detalhes do código
durante a visão da arquitetura
 UML + Java uma união vantajosa para os dois

UML e Java – ida e volta
Geração de Código
Tradução dos diagramas em código Java
 Os diagramas de classe geram estruturas Java

Engenharia Reversa
Gerar modelo com base em código Java
 Identificar classes, componentes e relações

Mapeamento em uma classe java
Funcionario
nome
telefone
ativo
novo
public class Funcionario
{
private
String nome = "";
private
int telefone = 0;
private
boolean ativo = false;
public
}
}
void novo ()
{
Mapeamento de uma Applet java
Applet
{abstract}
Funcionario
{final}
-nome:String
-telefone:int
-ativo:boolean
+novo( ):void
import java.applet.*;
import java.awt.*;
public class Funcionario extends Applet
{
private
String nome = "";
private
int telefone = 0;
private
boolean ativo = false;
public
}
}
void novo () {
Exemplo de diagrama de estado
INIT
fechar
[teclaOK()==true]
/BD.fechar()
iniciar
[teste1==true]
/modifica=false
EditandoItens
editar
[teclaEdit()==true]
/BD.abrir()
fechar
[TeclaCancel()==true]
/BD.fechar(
ListandoItens
fechar
[teclaCancel=true]
/BD.fechar()
CLOSE
Código do diagrama de estado
class DEMO {
private String currentState = "INIT" ;
//States:
INIT, CLOSE, ListandoItens, EditandoItens
//Events: nullEvent,
iniciar, fechar, editar
void process ( String anEvent ) {
if ( ( currentState == "INIT" ) && ( anEvent == "iniciar" ) && (
teste1==true ) )
{ currentState = "ListandoItens" ; modifica=false return; }
if ( ( currentState == "ListandoItens" ) && ( anEvent == "fechar" ) && (
teclaCancel=true ) )
{ currentState = "CLOSE" ; BD.fechar() return; }
if ( ( currentState == "ListandoItens" ) && ( anEvent == "editar" ) &&
( teclaEdit()==true ) )
{ currentState = "EditandoItens" ; BD.abrir() return; }
…
else return;
}
}
Métodos para relacionar classes
Interfaces

Uma descrição do que deve ser feito, sem se preocupar
com a implementação
Herança

Trasferir para uma classe filha os métodos, atributos e
relacionamentos da classe mãe
Composição

Criar uma instância de uma classe para poder utilizar os
serviços que ela dispõe
Interface UML, Java ou CORBA
Permite descrever como deve ser uma classe sem
dizer como ela deve ser implementada.
Uma classe com assinaturas de operações
Uso: integrar análise/projeto e sistemas




Pode usada para representar o resultado da análise,
A análise define as assinaturas das operações,
No projeto as assinaturas serão implementadas
As classes devem implementar as interfaces
Interfaces UML e Java
ClasseModelo
public
+criar(String):void
public
}
public
interface ClasseModelo {
void criar (String p1);
class impClasse implements ClasseModelo{
public
void criar (String p) {
//
// aqui devem ser inserido o código
// do método
//
<<implementa>>
impClasse
+criar(String):void
}
}
Herança
classeMae
public
class classeFilha
extends classeMae
{
}
classeFilha
Toda a funcionalidade da mãe é
Transferida para a classe filha como
Se fosse dela.
Agregação
public
{
Recursos
class ClasseA
+funcao( ):void
private Recursos oRec = new Recursos() ;
1
}
oRec
A ClasseA agora dispões dos
recursos da classe Recursos
atraves da instância oRec
A classe de Recursos deve estar diponível
ClasseA
1
Todas as opções juntas
Recursos
ClasseModelo
+funcao( ):void
+criar(String):void
1
oRec
<<implementa>>
minhaClasse
1
public
class minhaClasse
extends classeMae
implements ClasseModelo
{
private Recursos oRec = new Recursos() ;
}
classeMae
Integração entre as tecnologias
Dominio do Problema
UML
Analise e Projeto
CORBA
Arquitetura da Solucao
Java
Ambiente de Implementacao
O que é a tecnologia CORBA?
CORBA
Common Object Request Broker Architecture



Uma camada de software que distribui objetos
Oferece uma série de serviços de objeto
É padonizada pela OMG
IDL - Interface Definition Language




Padrão para definição dos Serviços dos objetos
Linguagem semelhate ao C
Portabilidade para Java, C++, Delphi, VB etc..
Permite integração entre sistemas heterogêneos.
Integração Cliente/Servidor
Invoca
método () no
objeto Z
IDL
Objeto Z
método()
IDL
Requisições de Objeto
ORB – barramento de objetos
Object Request Broker
Os serviços são distribuidos na forma de
Objetos em um barramento
CORBA algumas características
Invocação estática

Os parâmetros podem ser conhecidos
Invocação dinâmica

Os parâmetros podem ser “descobertos”
Escalabilidade

Criação de uma rede de serviços intergalática
Segurança, Transparência e Controle

Serviços disponíveis pela arquitetura
Coexistência com sistemas atuais (legados)
Anatomia do CORBA 2.0
interface
Servico
Cliente
_SKELTON
_STUB
ORB
BOA
IIOP - Internet InterORB Protocol
A UML modela as interfaces
Account
A linguagem IDL suporta
Os princípios da
Orientação a Objetos
float balance
makeDeposit
makeWithdrawal
Exemplo de interface IDL
Account
float balance
makeDeposit
makeWithdrawal
// IDL
interface Account
{
//Attributes
attribute float balance;
readonly attribute string owner;
//Operations
void makeDeposit(in float amount,
out float newBalance);
void makeWithdrawal(in float amount,
out float newBalance);
};
A interface IDL faz a ligação
Cliente
IDL compiler
Cliente
Stub
Interface IDL
Compilador
em linguagem
nativa
Server
Stub
Servidor
idl2java
Cliente
InterfaceHolder.java
InterfaceHelper.java
_st_Interface
Interface.idl
idl2java
_sk_Interface
_InterfaceImplBase.java
Interface.java
Servidor
_exemplo_Interface.java
Distribuição da aplicação
org.omg.CORBA.ORB
org.omg.CORBA.ORB
org.omg.CORBA.Object
Interface.java
_InterfaceImplBase.java
Cliente
ImplementacaoInterface.java
Servidor
Passos para a criação de
Ling. Nativa
Cria aplicação
Cliente
7
9
6
8
ORB
Cliente
Stub
1
Definiçãodas
Interfaces IDL
2
Implementação
dos métodos
(ling. nativa)
4
3
Servidor
Server
Stub
5
CORBA e UML
O modelo da analise recebe elementos da
arquitetura da solução na fase de projeto
Os modelos devem ser trabalhados para
refletir a arquitetura do projeto
O resultado da análise deve ser preservado
nas manipulações do projeto
CORBA e Java
O uso de Java na Arquitetura CORBA ...
... Dá mobilidade de código portabilidade
 ... Facilita a ida do CORBA para a WEB
 ... Permite a construção de Agentes
 ... Permite a integração do mundo OO

Java “concorre” com CORBA
no RMI e EJB (alternativas semelhantes)
Metodo para desenvolvimento
Análise
Modelo
Codigo
Servidor
Java/outras
Negócio
Interface
IDL
ORB
Cliente
Java/outras
Servidor
Web
Projeto
Modelagem
UML/CORBA
Implementação
CORBA/Java
Browser
Seqüência de passos
Análise
interface
Projeto
Servico
Cliente
_SKELTON
_STUB
Implementação
ORB
BOA
IIOP - Internet InterORB Protocol
Apresentação do Problema
Levantar o problema a ser resolvido

O que ? Porque?
e não da implementação

Como?
Trabalho do Especialista da Aplicação e do
Engenheiro de Software
CASOS DE USO
Análise
Entendimento do problema
Modelagem Conceitual
Modelo de Casos de Uso
 Modelo se Eventos
 Modelo Conceitual de Classes

Produtos da análise.
Analise
Desenvolver Modelos em um CASE
Com a UML (Linguagem padronizada)
Representar o sistema (problema)
Criar um Modelo de Interfaces
Projeto
Aplicação de alguns padrões de projeto.
Modelagem da arquitetura
Componentização do sistema
Definir a Interfaces do negócio (IDL)
Definir a camada de apresentação (IHM)
Definir a camada de persistência (BD)
Projeto
Integrar a arquitetura CORBA ao modelo
Proposta de componentes e distribuição
Integração com Java em alto nível
Definição da estrutura das classes
Criar Classes de Implementação das Interfaces,
Aplicar patterns e manipular o modelo de análise
Relacionar (herança, implementação ou composição) com
as classes da arquitetura e da linguagem de programação
Implementação
Contrução dos componentes de negócio

IDL2Java
Construção dos códigos do servidor
Integração com serviço de Banco de Dados
Teste local
Construção da Interface Homem Máquina
Integração com ORB
Implementação
Programas Java
Geração de Códigos
Criação dos componentes e dos programas
Gerar código dos modelos
Complementar os códigos com programação
Fazer a Engenharia Reversa para atualizar os modelos
Resumo do Método
Análise

Criar um Modelo de Interfaces do problema
Projeto



Criar Classes de Implementação das Interfaces,
Relacionar as classes com a arquitetura
Aplicar patterns e manipular o modelo de projeto
Implementação



Gerar código dos modelos
Complementar os códigos com programação
Fazer a Engenharia Reversa para atualizar os modelos
Importância de um CASE
CASE – Computer-Aided Software Engineering
Funções Principais









Facilidade de Uso, interface gráfica amigável
Aderência à UML, sem mudanças proprietárias
Integração entre os diagramas
Teste (cheklist) dos diagramas
Geração de Relatórios (textos e gráficos)
Geração de Código (linguagens OO, BD)
Engenharia Reversa
Repositório de Modelos e Objetos
Controle de Versão (integração com software 3o)
Exemplo de Aplicação
Demonstrar que a UML é
capaz de ajudar na
modelagem e projeto de
aplicações distribuidas
pela tecnologia CORBA
Receita …
Aplicação Local (UML <> Java)





Projetar uma aplicação local com UML
Gerar o código Java do projeto UML
Construir a aplicação em Java
Executar a aplicação local
Fazer a atualização do modelo UML
Aplicação Distribuída (UML <> CORBA <> Java)




Distribuir a aplicação com CORBA no modelo UML
Construir os elementos auxiliares CORBA
Construir os novos códigos em Java
Executar a aplicação distribuída
Visitem nossa cozinha…
Ambiente de Desenvolvimento





Ferramenta CASE
Ambiente Java (jdk)
Editor Java
Banco de Dados (opcional)
ORB com suporte Java (idl2java)
Ambiente de Processamento


Navegador Internet (se for executar uma Applet)
Servidor CORBA (ORB)
Ferramenta CASE
Produtos do Mercado, Shareware, Demos
Rational Rose (www.rational.com)
 System Architect (www.choose.com.br)
 WithCLASS (www.microgold.com)
 ToghetherJ

Exemplo de Ferramenta CASE
Ambiente Java
JDK1.1.X (JDK1.1.5)
JDK1.2, JDK 1.3, …
Visual Café (Symantec)
Jbuilder (Imprise)
Visual Age (IBM)
FreeJava (RealJ)
Editor Java
Ferramentas
CASE WithCLASS 99
JDK 1.1.5 (com jdbc)
FreeJava 3.0 (RealJ) – editor Java shareware
JBuilder (opcional para o projeto gráfico)
Ambiente de rede - execução
VisiBroker for Java 3.1
VisiBroker Naming Service fo Java 3.0
Internet Explorer 5.0
Windows 98
Arquitetura
Servidor
Cliente
Desenvolvedor
navegador
Servidor WEB
Servidor ORB
Servidor BD
CASE
Ambiente Desenv.
Bibliotecas
O prato principal…
Sistema para consulta
em uma lista de telefones
Diagrama de Caso de Uso
ConsultarTelefone
Usuario
O usuário entra com um nome e consulta
o telefone de uma lista de telefones
armazenada em um arquivo
Diagrama de Classes (inicial)
Usuario
Lista
1
1
+procura( )
Diagrama de seqüência de eventos
Usuario
Lista
procura(nome)
Modelo de estados do Usuario
Fechar
EntrandoNome
OK
Procurando
Modelo de Classes final
Usuario
Lista
consulta
-procura( String):String
1
lis
oUsuario
1
+lis:Lista
+l:Label
+b:Button
+t:TextField
+main( String):void
+oUsuario( )
+handleEvent( Event):boolean
+action( Event, Object):boolean
aLista
+procura( String):String
Diagrama de Implementação
Usuario
Lista
lista.txt
Exemplo da apresentação
Código da aplicação
import java.io.*;
public class aLista implements Lista{
public String procura(String texto){
String linha,alinha="não encontrei :"+texto;
try {
FileInputStream is = new FileInputStream("lista.txt");
DataInputStream ds = new DataInputStream(is);
while ((linha = ds.readLine())!=null)
{ if(linha.indexOf(texto)!=-1) alinha=linha;
}
ds.close();
is.close();
} catch (IOException e)
{
System.out.println("Erro: "+e);
}
return(alinha);}
}
Aplicação distribuida
SERVIDOR
Li sta
l i sta.txt
CLIENTE
Usuari o
Tradução da interface para IDL
Lista
-procura( string ):string
Código gerado pelo CASE
interface Lista{
string procura(in string texto);
};
Pré-compilador idl2java
Cliente
InterfaceHolder.java
InterfaceHelper.java
_st_Interface
Interface.idl
idl2java
_sk_Interface
_InterfaceImplBase.java
Interface.java
Servidor
Interface.java
Usuario
{interface}
Lista
{interface}
+procura( java.lang.String):java.lang.String
oUsuario
+lis:Lista {static}
+l:Label
+b:Button
+t:TextField
+orb:org.omg.CORBA.ORB {static}
_ListaImplBase
-__ids:java.lang.String[] {array}
#_ListaImplBase {abstract}
#_ListaImplBase{constructor}
+_ids:java.lang.String[]
+_methods:org.omg.CORBA.portable.MethodPointer[]
+_execute:boolean
+_execute:boolean {static}
+main( String):void {static}
+Usuario( ){constructor}
+handleEvent( Event):boolean
+action( Event, Object):boolean
1
aLista
-aLista( String){constructor}
+procura( String):String
1
l
1
ListaServer
+l:aLista {static}
+orb:org.omg.CORBA.ORB {static}
+boa:org.omg.CORBA.BOA {static}
+main( String):void {static}
1
org.omg.CORBA.Object
{abstract}
1
boa
1
org.omg.CORBA.BOA
{abstract}
org.omg.CORBA.ORB
{abstract}
1
orb
Classes analise (UML)
Classes CORBA
Classes de implementação Java
1
orb
Interface Lista.java (gerada)
public interface Lista extends org.omg.CORBA.Object {
/**
<p>
Operation: <b>::Lista::procura</b>.
<pre>
string procura(
in string texto
);
</pre>
</p>
*/
public java.lang.String procura(
java.lang.String texto
);
}
A interface Lista
Deve ser traduzida para IDL
Pre compilada pelo idl2java
_ListaImplBase
Lista
{interface}
aLista
A implementação da interface
Deve herdar da classe gerada pelo idl2java
_ListaImplBase
Lista
{interface}
aLista
public class aLista extends _ListaImplBase{
Criar uma aplicação servidora
public static void main(String args[]){
try {
// inicializa o ORB
orb = org.omg.CORBA.ORB.init(args,null);
// inicializa o BOA
boa = orb.BOA_init();
// criar o objeto
l = new aLista("minha lista");
// exportar o objeto criado
boa.obj_is_ready(l);
// Pronto para atender os pedidos
boa.impl_is_ready();
} catch (org.omg.CORBA.SystemException e) {
System.err.println(e);
}
}
Inicilização do serviço
ORB
BOA
ListaServer
aLista
init
init
new
obj_is_ready
impl_is_ready
Usuario
{interface}
Lista
{interface}
+procura( java.lang.String):java.lang.String
oUsuario
+lis:Lista {static}
+l:Label
+b:Button
+t:TextField
+orb:org.omg.CORBA.ORB {static}
_ListaImplBase
-__ids:java.lang.String[] {array}
#_ListaImplBase {abstract}
#_ListaImplBase{constructor}
+_ids:java.lang.String[]
+_methods:org.omg.CORBA.portable.MethodPointer[]
+_execute:boolean
+_execute:boolean {static}
+main( String):void {static}
+Usuario( ){constructor}
+handleEvent( Event):boolean
+action( Event, Object):boolean
1
aLista
-aLista( String){constructor}
+procura( String):String
1
l
1
ListaServer
+l:aLista {static}
+orb:org.omg.CORBA.ORB {static}
+boa:org.omg.CORBA.BOA {static}
+main( String):void {static}
1
org.omg.CORBA.Object
{abstract}
1
boa
1
org.omg.CORBA.BOA
{abstract}
org.omg.CORBA.ORB
{abstract}
1
orb
Classes analise (UML)
Classes CORBA
Classes de implementação Java
1
orb
Classe Usuario (cliente)
Deve se ligar ao ORB
Deve instanciar o objeto
// inicializa o orb
orb = org.omg.CORBA.ORB.init(arg,null);
// liga no objeto
lis = ListaHelper.bind(orb, "minha lista");
Modificações na classe Usuario
public class oUsuario extends Frame{
public static Lista lis;
public Label l = new Label("Procura :");
public Button b = new Button("Ok");
public TextField t = new TextField(40);
public static org.omg.CORBA.ORB orb;
public static void main(String arg[]) {
// inicializa o orb
orb = org.omg.CORBA.ORB.init(arg,null);
// liga no objeto
lis = ListaHelper.bind(orb, "minha lista");
Usuario u = new Usuario();
...
Sequencia para execução
C:> start osagent

Coloca no ar o ORB e os seus serviços
C:> start java –DOAid=Tsession ListaServer

Coloca no ar o serviço de Lista
C:> java Usuario

Executa a aplicação no cliente
Seqüência de execução
Usuario
oUsuario
ORB
ListaHelper
:Lista
aLIsta
init
bind
OK
procura(nome)
procura(nome)
TextField.SetText()
Exemplo de resultado
Leitura Recomendada
UML

Jacobson, I; Rumbaugh, J; Booch, G. UML: Guia do
Usuário. Editora Campus, 2000.
CORBA com JAVA

ORFALI, R. e HARKEY, D. Client/Server
Programming with Java and CORBA. 2nd Ed. John
Wiley & Sons Ed. 1998.
Excelente LIVRO e CD-ROM
OMG

www.omg.org
Artigos e Documentação da UML, CORBA, IDL, etc…
Conclusão
Demanda crescente por
Flexibilidade
 Desempenho
 Baixo custo

Leva à distribuição dos negócios
Padrões vão garantir os
investimentos em sistemas distribuídos
Dúvidas?
para não perder o contato:
José Eduardo Zindel Deboni
[email protected]
www.voxxel.com.br/deboni
Download