Distributed Systems

« Return


It is intended to provide the basic and intermediate knowledge for programming distributed applications, namely the architectures and communication technologies in distributed systems, in particular those provided by the distributed object-oriented approach and the Web

To consolidate and deepen the skills in Java programming already acquired (i.e., in the design of monolithic applications, using the object-oriented approach) through the programming paradigm of distributed applications, studying Java solutions (e.g., Java RMI) but also other coded in Java (e.g., CORBA) and also solutions based on XML for Web through Web Services and SOA with REST in Java.

The student will be able to design, draw and code distributed applications, of small and medium scale, independente of programming language, operating system and platform, from scratch or those arising from the integration of data and / or applications using technologies distributed objects and those aimed for the Web.


1. Architectures of distributed systems: monolithic, N layers and Peer-to-Peer; sockets and RPC, distributed objects, Web Services.

2. DNS system: structure and functionality of DNS, replication and caching, server types; access to DNS via Java.

3. Programming with Sockets: transmission protocols UDP and TCP; development of an application client / server.

4. CORBA: OMA; up and running CORBA, IDL mapping for Java; Naming Service; development of an application client / server.

5. Java RMI: RMI vs CORBA; architecture and services; API, safety, development of an application client / server.

6. Web Services: architecture and lifecycle; XML, SOAP, WSDL and UDDI; executing a Web Service; SOA with Web Services and REST.

Teaching Methodologies

The classes are divided into theoretical and practical. In the former, is provided the explanation of concepts, which also include the demonstration programs, and, in the latter, is provided the resolution of working laboratories, which exercise and introduce complementary concepts, as well as programming applications for small-scale distributed systems.


Cardoso, J. (2008). Programação de Sistemas Distribuídos em Java. FCA.

Graba, J. (2007). An Introduction to Network Programming with Java. Springer.

Dirksen, J. (2012). SOA Governance in Action: REST and Web Services architectures. Manning.

Dollimore, J. et al. (2005). Distributed Systems: Concepts and Design. Addison Wesley.

Reilly, D. (2002). Java Network Programming and Distributed Computing. Addison Wesley.

Josuttis, N. M. (2007). SOA in Practice: The Art of Distributed System Design. O’Reilly.



ECTS Credits



  • Práticas e Laboratórios - 30 hours
  • Teóricas - 30 hours

Evaluation Methodology

  • Frequency: 30%
  • Individual and/or Group Work: 50%
  • Individual project: 20%