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