Conhecimentos de Base Recomendados
Programação em linguagem Java e pilha protocolar TCP/IP.
Métodos de Ensino
Exposição de matéria teórica e demonstrações com discussão.
Aulas práticas baseadas na resolução de exercícios.
Realização e apresentação de um trabalho prático.
Realização de um exame final.
Resultados de Aprendizagem
Esta unidade curricular tem como objetivo permitir a aquisição de competências no planeamento e desenvolvimento de aplicações distribuídas orientadas a objetos, ou seja, aplicações constituídas por múltiplos componentes (processos, clientes, servidores, threads, objetos, etc.), eventualmente localizados em máquinas distintas e que interagem entre si. Neste âmbito, também fazem parte das competências a adquirir a capacidade de lidar com aspetos relacionados com concorrência, mecanismos de sincronização, comunicação remota e objetos remotos. De modo a desenvolver os conhecimentos, aptidões e competências pretendidos, são considerados os seguintes paradigmas de programação, aos quais correspondem distintos níveis de abstração: troca de mensagens (sockets em Java), invocação remota de objetos (Java RMI e CORBA) e serviços Web.
Programa
- Desenvolvimento de aplicações para redes TCP/IP em linguagem Java
- Endereçamento
- Comunicação não orientada a ligação (UDP)
- Comunicação orientada a ligação (TCP)
- Comunicação em grupo
- Concorrência e multiplexagem de entrada/Saída
- Aplicações com múltiplas threads
- Mecanismos de exclusão mútua
- Comunicação via protocolo HTTP
- Arquitetura N-Tier
- Ligação de aplicações desenvolvidas em Java a bases de dados relacionais (JDBC e JPA)
- Introdução às soluções de middleware para aplicações distribuídas
- Conceitos de middleware, serialização, RPC e objeto remoto
- RPC da Sun
- Principais tipos de objetos remotos (singleton, stateful, stateless, etc.)
- Java RMI
- CORBA
- Serviços Web do tipo REST
- Desenvolvimento de aplicações distribuídas recorrendo ao Java RMI
- Servidores
- Clientes
- Callback
- Ativação remota de objetos
- Introdução aos mecanismos de segurança
- Desenvolvimento de aplicações distribuídas recorrendo ao CORBA em Java
- Servidores
- Clientes
- Desenvolvimento, em linguagem Java, de aplicações distribuídas recorrendo a serviços Web/API do tipo REST
- Servidores
- Clientes
- Mecanismos de autenticação HTTP
- Plataforma Spring Boot
Docente(s) responsável(eis)
Estágio(s)
NAO
Bibliografia
- Recomendada:
- Recursos produzidos e recolhidos pelos docentes e colocados na plataforma InforEstudante.
- Complementar
- REILLY, D. & REILLY, M. (2002). Java Network Programming & Distributed Computing. Addison-Wesley
- BOJE, J. (2019). Spring Boot 2 : how to get started and build a microservice (3rd ed). Frankfurt : Codeboje (disponível na biblioteca do ISEC: 1A-12-205)
- COULOURIS, G., DOLLIMORE, J., KINDBERG, T, & BLAIR, G. (2011). Distributed Systems – Concepts and Design (5th Edition). Addison-Wesley (disponível na biblioteca do ISEC: 1A-1-440)
- VITILLO, R. (2021). Understanding distributed systems (version 1.1.1) (disponível na biblioteca do ISEC: 1A-1-460)