TECHNOLOGIES FOR DISTRIBUTED SYSTEMS AND WEB WITH LAB
Module LAB

Academic Year 2023/2024 - Teacher: SALVATORE NICOTRA

Expected Learning Outcomes

This Lab course focuses on a pratical approach to test the conceptual foundations and practical skills deemed essential for the development of Web applications and, more generally, distributed systems. Typical architectural solutions to be treated include: the client-server paradigm, remote procedure callsdynamic Web, HTTP request handlers (servlets), the MVC (Model-View-Controller) pattern, and REST API-based Web applications. Development technologies presented are based on Java platform.

Course Structure

Lectures will mainly consist in live sessions dealing with the development of distributed applications, with a special emphasis on server-side web applications. These will be carried out by the lecturer and replicated, with suggested variations, by students, on their notebooks or lab workstations. As a framework and guidance for such sessions, lecture notes will be displayed during the lecture and shared with students through the Studium portal. Notes will provide a precise record of the material presented, as well as pointers to the required reference technical documentation.

Required Prerequisites

  • Ability to think algorithmically (from Programming 1 and Programming 2 courses)
  • Knowledge of the main concepts and solutions of concurrent programming (from the Operating Systems course)
  • Knowledge of the main concepts, mechanisms and protocols of the Internet (from the Computer Networks course)

Attendance of Lessons

Attending classes is not mandatory but strongly recommended, due to the practical nature of the course.

Detailed Course Content

The course will introduce the main concepts, paradigms and architectural aspects pertaining the following topics.

Application client-server based on socket in Java

  • ​Communication connection-oriented and connectionless
  • API Java (Server(Client)
  • NIO

Thread Java

  • class Thread e API to create and manage thread
  • Runnable interface
  • Virtual Thread 

Java Web Application

  • Tomcat
  • Servlet and web application
  • Databases connections JDBC/JPA

Spring Boot

  • Microservices
  • Spring Boot Web MVC
  • Thymeleaf

  • Spring Data (JDBC, Spring Data JPA)

Frameworks

  • Web Assembly
  • React Native

Textbook Information

  1. Lecture notes available through the Studium portal or the University's MS Teams platform
  2. Deitel H. M., Deitel P. J. Java: How to Program. Pearson.
  3. Java online documentation, https://docs.oracle.com/javase/tutorial/
  4. Java Enterprise Edition online documentation, Tutorial Jakarta EE

Course Planning

 SubjectsText References
1Introduction to distributed systems and course 1
2Socket introduction and main system calls1
3Socket: Client Examples. Read and Write. Non blocking sockets1
4Socket: IP address1
5Socket: Connection less communication send and recieve1
6Socket in Java1,2,3
7Java Servlets1,4
8Web Application: principles and concepts1,4
9Web services: REST con JSON1
10Development in PHP
11Development of API REST using Spring Boot1
12Development in PHP1
13Laravel MVC1
14Web Client development 1

Learning Assessment

Learning Assessment Procedures

Coding exercises on the course topics in laboratory, then oral discussion.


Examples of frequently asked questions and / or exercises

Client-server socket based clients.
Usage of Posix threads.
3-tier architectures.
Server-side web application development using servlets.
Integrated Development Environments for Web Apps.
Servlets and servlet containers.
Web applications.
Developing and consuming SOAP and REST web services.
The JSON data interchange format.
PHP and the web.
The MVC design pattern in the Spring Boot and Laravel frameworks.