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.
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
- Microservice architectures
Curricular Unit Teachers
José Manuel Meireles MarinhoGrading Methods
- Mini-tests at the end of theoretical classes:
- Mini-tests starting in the second week of classes (one per class);
- Each one counts for 0.2 points in the final grade;
- Maximum weight in the final grade: 7.5%.
- Mini-tests at the end of laboratory classes:
- Mini-tests starting in the second week of classes (one per class);
- Each one counts for 0.2 points in the final grade;
- Maximum weight in the final grade: 7.5%.
- Students with worker-student status and Erasmus students who have not taken any mini-tests in theoretical and practical classes may take an alternative test on the day of the regular exam (15% of the final grade).
- A project assignment that includes most of the topics covered in this course:
- 40% of the final grade;
- 2 evaluation phases;
- 1st phase:
- 5 points;
- Submission deadline: end of the 12nd week of the semester;
- Defenses: 13rd week of the semester.
- 2nd phase (REST and RMI components):
- 3 points;
- Submission deadline: end of the 14th week of the semester;
- Defenses: 15th week of the semester.
- During the special exam period, students who have access to it may, if they wish and have not yet obtained a grade in this component, take an alternative to the project assignment, provided they inform the teacher (40% of the final grade).
- A final exam:
- 45% of the final grade;
- Required minimum grade of 25%.
- Final exams can be retaken.
- The project assignment and the mini-tests cannot be improved.
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)