Distributed Programming

Base Knowledge

Java programming language and TCP/IP protocol stack.

Teaching Methodologies

Theoretical lessons based on presentation, demonstration and discussion of topics related to the objectives of the curricular unit.

Practical lessons based on programming assignments.

A project assignment.

A final exam.

Learning Results

This curricular unit aims at providing the students the ability to plan and develop object-oriented distributed applications through the use of different programming paradigms/levels of abstraction, i.e., remote communication, remote/distributed objects, and web services. This type of application requires the ability to understand and deal with issues such as concurrency, synchronization, remote communication, and access to remote objects.

Program

  • Implementation of Java distributed applications for TCP/IP networks
    • Addressing
    • Connectionless communication (UDP)
    • Connection-oriented communication (TCP)
    • Group communication
    • Concurrency and input/output multiplexing
    • Multithreaded applications
    • Mutual exclusion mechanisms
    • HTTP
  •     N-Tier architecture
  •     JDBC and JPA
  •     Introduction to middleware solutions for distributed applications
    • Middleware, serialization, RPC, and remote object concepts
    • Sun PRC
    • Main types of remote objects (singleton, stateful, stateless, etc.)
    • Java RMI
    • CORBA
    • REST Web services
  •     Implementation of Java RMI distributed applications
    • Servers
    • Clients
    • Callback
    • Remote object activation
    • Introduction to security mechanisms
  •     Implementation of CORBA distributed applications in Java
    • Servers
    • Clients
  •     Implementation of Java distributed applications based on REST web/API services
    • Servers
    • Clients
    • http authentication mechanisms
    • Spring Boot platform

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

  • Main Bibliography
    • Study material prepared and collected by the teachers and made available on the InforEstudante platform.
  • Complementary Bibliography
    • 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 (available in the ISEC library: 1A-12-205)
    • COULOURIS, G., DOLLIMORE, J., KINDBERG, T, & BLAIR, G. (2011). Distributed Systems – Concepts and Design (5th Edition). Addison-Wesley (available in the ISEC library: 1A-1-440)
    • VITILLO, R. (2021). Understanding distributed systems (version 1.1.1) (available in the ISEC library: 1A-1-460)