Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Tópicos gerais
• Modelo Cliente/Servidor
– Modelo N- Tier: vantagens
• Linguagem Java:
– Panorâmica
– Classes, interfaces e packages.
– Programação distribuída com Java
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
1
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Arquitectura N-Tier Client/Server
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
2
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Arquitectura do modelo Cliente/Servidor
• Cada “serviço” implementa um pequeno conjunto de regras de
negócio
• As regras de negócio definem como, e o que é que deve ser feito
• São processadas quando ocorrem eventos que despoletam um
negócio
• Quando uma regra de negócio deve ser modificada para suportar
alterações de requisitos na aplicação, somente o serviço que
implementa essa regra de negócio tem de ser alterado; o restante
código da aplicação permanece intacto
• Os vários serviços podem ser executados em plataformas
distintas. No entanto, não é obrigatório que assim seja
• Qualquer cliente pode requisitar o serviço
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
3
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Arquitectura do modelo Cliente/Servidor
• Vantagens da arquitectura N-Tier
– Aplicações permitem vários tipos de terminais e
utilizadores
– Tolerância a faltas e disponibilidade
– Fácil manutenção e alteração de código
– Escalabilidade elevada
– Transparência
– Potencial em partilha e reutilização de código e
recursos
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
4
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Arquitectura do modelo Cliente/Servidor
• Desvantagens da arquitectura N-Tier
– Modelo de faltas mais complexo
– Segurança
– Uso de tecnologia variada
– Testes e verificação (debugging) mais difícil
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
5
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Panorâmica da linguagem Java
•
•
•
•
•
•
•
Garbage collection
Herança simples (extends)
Herança múltipla (interfaces)
Excepções para o tratamento de erros
Eventos para tratamento de I/O
Espaço de nomes (packages)
Processos “leves” (threads)
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
6
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Panorâmica da linguagem Java
• Superclasse Object (pai de todas as classes)
• main obrigatório dentro da classe pública que dá o nome ao
ficheiro
• nome do ficheiro: nomedaclasse.java
• compilador (>javac) gera nomedaclasse.class
• execução através do java run-time interpreter:
>java nomedaclasse
• geração automática de documentação HTML: javadoc
• execução de applets sem browser: appletviewer
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
7
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Classes em Java
Controlo de acesso a membros:
• public: acessíveis livremente e herdados por subclasses
• private: acessíveis apenas na própria classe
• protected: acessíveis pelas subclasses e herdados por elas; acessíveis pelo
código no mesmo package.
• package: sem modificador, só acessíveis pelo código no mesmo package e
herdado apenas por subclasses no mesmo package
• Static members:
• Class fields: variáveis modificadas como “static” são partilhadas por todas as
instâncias da classe. (nº de série)
• Constantes: variáveis modificadas como “final” só podem ser atrbibuíveis de valor
uma única vez.
• Classes abstratc: definem apenas o comun das subclasses; não instânciáveis
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
8
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Classes em Java
•
•
•
•
•
Herança entre classes: “extends” herança dos métodos e membros da superclasse.
Pode fazer o overriding do comportamento da superclasse. Java suporta
polimorfismo de inclusão: todas as referências de objectos são polimórficas da classe
Object.
Super.method(): invoca o método method() da 1ª superclasse hierarquicamente
superior.
Interfaces: declaram apenas a assinatura das subclasses; não implementam os
métodos!
Classes que implementam as interfaces: declaram-se como XPTO implements
interface
Interfaces também podem ser estendidas ad libitum (extended)
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
9
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Packages
• Grupo de nomes para classes e interfaces relacionadas (biblioteca de classes);
• Gestão de conflito de nomes através de prefixos;
• Declaração antes de qualquer classe ou interface: package p1;
• Nomes são hierárquicos e separados por pontos;
• Os respectivos .class (bytecodes) residirão numa directoria p1;
• Acesso aos membros de uma package:
• explicitamente nome da package.tipo
• ou import p1.*;
• import p1.* antes da definição de qualquer classe ou interface da
package;
• Package java.lang sempre importada automaticamente
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
10
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Packages
java.lang
java.io
java.util
java.net
java.applet
java.awt
java.awt.image
java.awt.peer
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
11
Escola Superior de Tecnologia
Dep. de Sistemas e Informática
Sistemas
Distribuídos
Programação distribuída na linguagem Java
• Ambiente de execução homógeneo: JVM
• Writeonce, run anywhere
• Packages:
– Sockets e URL;
– RMI
– JavaIDL
– JavaSpaces
– Jini
12 outubro, 2001
Nuno Valero Ribeiro
Gab. F269
[email protected]
12
Download

Power Point presentation