Programação Distribuída

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)