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.
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
- Arquiteturas de microserviços
Docente(s) responsável(eis)
José Manuel Meireles MarinhoMétodos de Avaliação
- Tipo de avaliação: periódica
- Mini-testes no final das aulas teóricas:
- Mini-testes a partir da segunda semana de aulas (um por aula);
- Cada um com um peso de 0.2 valores na classificação final;
- Peso máximo na classificação final: 1.5 valores.
- Mini-testes no final das aulas práticas:
- Mini-testes a partir da segunda semana de aulas (um por aula);
- Cada um com um peso de 0.2 valores na classificação final;
- Peso máximo na classificação final: 1.5 valores.
- Os estudantes com o estatuto de trabalhador-estudante e os estudantes Erasmus que não tenham realizado qualquer mini-teste, nas aulas teóricas e práticas, podem realizar uma prova alternativa no dia do exame normal (3 valores)
- Um trabalho prático desenvolvido em linguagem Java e envolvendo, entre outras características, múltiplas threads, o Paradigma de troca de mensagens, o paradigma de objeto remoto, serviços web/API do tipo REST, bases de dados relacionais e mecanismos de callback:
- 8 valores (40% da classificação final);
- 2 metas sujeitas a 2 períodos de defesa;
- 1ª meta:
- 5 valores;
- Data-limite de entrega: final da 12ª semana do semestre;
- Defesas: 13ª semana do semestre.
- 2ª meta (componentes REST e RMI):
- 3 valores;
- Data-limite de entrega: final da 14ª semana do semestre;
- Defesas: 15ª semana do semestre.
- Caso um aluno tenha obtido classificações iguais ou superiores a 50% em trabalhos práticos nos 2 anos letivos anteriores, este pode ficar dispensado da entrega do trabalho prático, sendo considerada a melhor das classificações anteriormente obtidas;
- Na época especial de exames, os estudantes que a ela tenham acesso podem, se o desejarem e ainda não tenham obtido classificação nesta componente, realizar uma prova alternativa ao trabalho prático, desde que informem o docente (8 valores).
- Um exame final, em qualquer uma das épocas de exame a que o aluno tenha acesso, sobre toda a matéria lecionada, teórica e prática:
- 9 valores (45% da classificação final);
- Classificação mínima de 25%.
-
Condições de melhoria:
-
A melhoria da avaliação teórica pode ser obtida por realização de nova prova teórica escrita na época de recurso ou em qualquer época subsequente a que o aluno tenha acesso.
-
A classificação obtida no trabalho prático e nos mini-testes não pode ser melhorada.
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)