Technological transfer from university to the students of practical and theoretical issues related with Distributed Applications Development.
Lectures & Labs
||Lecture Description||Sources for the
|Lab Description||Sources for the
INTRO - Distributed Applications Development administrative issues
RECAP: Java Multi-threading mechanisms, java.util.concurrent package in samples for HPC - High Performance Computing samples | IPC - Inter-Process Communication in Linux using C/C++, Linux C POSIX Multi-Threading (PThread), Java Multi-threading and Parallel Computing Intro.
For the Java intro full details (RECAP sections), please see the lectures and labs of Multi-paradigm Programming - Java @ http://acs.ase.ro/java and first three activities
For Parallel Computing (incl. C OpenMP) intro please see lectures and labs details @ http://acs.ase.ro/parallel-processing
Distributed vs Parallel Computing Systems
|RECAP: Java Multi-threading mechanisms, java.util.concurrent package in samples for HPC - High Performance Computing samples|
RECAP: TCP/IP Network Concepts - OSI Model, IP v4 vs. v6, UDP headers, NAT, PAT, Network Programming in Java - UDP, SNMP client over UDP sample - network monitoring.
ANT, Maven, Gradle, OS VM vs. Docker - virtualization, DevOps Jenkins Intro
Intro in Java Reflection & Annotations, JNI - Java Native Interface, Java Exception mechanism, Source Code Design Patterns - Singleton.
|RECAP: Network UDP - Java UDP Network programming using Socket, SNMP Client sample - simple and with library snmp4j|
RECAP: Java 8+ Lamda with Multi-threading, TCP/IP Network Concepts - Network Programming in Java - UDP & TCP with multi-threading, IP, TCP headers, TCP state machine, NAT, PAT, Network Programming in Java - TCP
|RECAP: Java 8+ Lambda - Network HTTP-Multi-threading and TCP with lambda Example - web server|
Java Servlet Intro - Apache Tomcat web server with servlet container distribution, Session Tracking, HTTP Requests and Responses, Cookies, HTTP 1.1
Cloud PaaS Intro
HTTP/1.1 understanding with Wireshark - Java Servlet Sample with annotation instead web.xml descriptor, deployment in Apache Tomcat 9 + processing a HTML form with Java Servlet.
Additional deployment into Google App Engine - PaaS Cloud.
Java Server Pages - JSP Intro - Apache Tomcat web server with Servlet/JSP container distribution, JSP Architecture, Directives and Actions, Objects, Tag-Libs, Beans, MVC - Model View Controller Type 1 and 2 Intro
Java Server Pages - JSP Sample deployment in Apache Tomcat 9 + processing a HTML form with JSP and SQLite/MongoDB access.
Local deployment into VMBox.
RPC - Remote Procedure Call and Java RMI - Remote Method Invocation
Process Migrations vs. Data Migrations within a Distributed System | TCP Socket example for passing business logic as serialization
|Java RMI sample for adding two integer vectors.|
SOA (Service Oriented Architectures) WebServices SOAP - Simple Objects Access Protocol
Cloud IaaS Intro
SOA WebServices SOAP - Java JAX-WS in Eclipse (XML Recap)
Stand-alone client and server application
JAX-WS Web Server app
RESTlful Services vs. SOA | JAX-RS with HTTP/2
Difference between HTTP/1.1 and HTTP/2.0 with Wireshark network packets analyzer
HTTP/2 Client API with JDK11+
|RESTful service in Java JAX-RS in Eclipse (JSON Recap)|
TEST on PC
|TEST on PC|
node.js RECAP on laptop
Intro n-Tier Architecture, Back-end Servers Clustering & Servers Infrastructures & Clouds - IaaS, PaaS, CaaS, SaaS, FaaS and Fog Computing
Cloud FaaS - Functions as a Service / AWS Lamda vs. Fog Computing - implementation
Middleware & MoM: JMS vs. Apache Kafka
|Middleware: Apache JMS and Kafka implementation for the Producer and Consumer Clients example|
Distributed Components: EJB - Enterprise Java Beans / Java | Jakarta EE platform vs. Actors in Akka
|Apache EJB 3.x and MDB - Message Driven Bean vs. Akka actors examples|
Infrastructures for Microservices / PODs and Containers as a Service Cloud - CaaS
|Spring Boot: JMS and components beans plus RESTful Services|
Spring Microservices in Action with Java/Kotlin
|Spring End2End Microservice Example|
E-Learning Solution & E-Framework Solutions
E-Framework solutions for DAD lectures and labs were based till year 2017 on VMWare client virtual machines, and they have been provided by IT&C Security Master program - http://ism.ase.ro
The OLD web address for download will be available for:
- Linux Ubuntu 12 LTS (Can be updated to Ubuntu 14 with Java 8): with JDK 6 + Eclipse Indigo JEE + Netbeans + Apache Tomcat + JBOSS + GCC - Download
- Alternatively, the latest versions of software may be installed by students in Ubuntu 14 VM (Oracle VM Box): JDK 8 + Eclipse LUNA + GCC - Download U14
Evaluation & Gradebook Mark Solution
The final exam mark is 70%, and the assesments/homeworks/reports/test&quizzes done by the student, during the semester are 30% from the evaluation mark.
All the content related with the tests, assesments and the final exam will be uploaded accordinglly with the established deadlines in the E-Learning System Solution based on SAKAI and provided by IT&C Security Master program - http://ism.ase.ro. The SAKAI e-Learning System Solution will be available soon, the username will be surname.firstname and the password has been communicated during the first lectures.
Deadline - YYYY/MM/dd HH:mm: Current Year/03/07 23:50 GMT+2
Problem description: "Create multiple processes for communicating one each other, through UPD multicast/broadcast packages, in order to find out the best mark in the room. Each process has its own mark from 1 to 10 stored in command line for launching or it is stored in a file on the disk. The problem and the solutions have been explained in the lecture 01. You may develop the solution for this problem in Java or C# or C++ or Ruby or Python."
Upload and packiging: "The ZIP file has the source code files + *.sh/*.bat file for compiling and running the sample. The ZIP filename rule will have DAD_A01_SURNAME_FirstName1_FirstName2.zip". The upload is available through SAKAI, please see E-Learning Solution section from this page.
Deadline - YYYY/MM/dd HH:mm: Current Year/03/14 23:50 GMT+2
Problem description: "Build client-server programs in Java. The client read the arrays from files and send them using Sockets and it transmits TCP packets. The servers receives the array and process them using multi-threading. The results are sent back asynchronous by the server to the clients by using Java NIO API."
Please see the discussion thread @ https://stackoverflow.com/questions/56747881/how-to-use-multiple-cores-in-the-java-non-blocking-i-o-nio-api
Upload and packiging: "ZIP file uploaded in SAKAI. The ZIP file has the PDF file that contains the steps + *.sh file for compiling and running the sample + *.java files with the source code. The ZIP filename rule will have DAD_A02_SURNAME_FirstName1_FirstName2.zip". The upload is available through SAKAI, please see E-Learning Solution section from this page.
Deadline - YYYY/MM/dd HH:mm: Current Year/03/21 23:55 GMT+2
Problem description: "Download laboratory/seminary with TCP HTTP Server server - proof of concept, in Linux Ubuntu (download the virtual machine from the current page - http://acs.ase.ro/dad), in order to solve HTTP requests for resources of type *.class. The URL in Internet browser - Mozilla Firefox/Google Chrome for http://ip_server:port_server/myfile.html will display the HTML file if exists, BUT when the browser asks http://ip_server:port_server/MyClassFile.class will display the string chars produced by method 'public String sampleDoGet();'. The one should modify method 'public String processInput(String theInput);' from class 'eu.ase.httpserver.HTTPSeminarProtocol' in order to handle through Java reflection the requiered task."
Upload and packiging: "ZIP file uploaded in SAKAI. The ZIP file has the Java source code *.java files + *.sh file for compiling and running the sample. The ZIP filename rule will have DAD_A04_SURNAME_FirstName1_FirstName2.zip". The upload is available through SAKAI, please see E-Learning Solution section from this page.
Deadline - YYYY/MM/dd HH:mm: Current Year/04/15 23:55 GMT+2
Problem description: "Download lecture and laboratory/seminary in Linux Ubuntu (download the virtual machine from this page - http://acs.ase.ro), in order to solve the following problem:
Develop the JSP and Java bean necessary for Apache Tomcat deploy that will receive via HTTP to vectors and will responde with the sum of the vectors. The Java bean from web will be the RMI client for 3 RMI servers objects, each RMI server object is registred in the same rmiregistry or in different rmiregistry program. Both versions, a) and b) are required.
Version a) - The RMI Server is developed in standard mode as in lecture sample (RMI01 and RMI03 directories).
Version b) - The RMI Server is developed in order to receive the bytecode of business logic (adding two vectors) in the same way as in ComputePi solution - ./downloads_readme/rmidocs/rmiDocsExec"
Upload and packiging: "ZIP file uploaded in SAKAI. The ZIP file has the Java source code *.java files + *.sh file for compiling and running the sample. The ZIP filename rule will have DAD_A05_SURNAME_FirstName1_FirstName2.zip". The upload is available through SAKAI, please see E-Learning Solution section from this page.
Fundamentals of Java SE + C/C++ ‘14 + node.js + Networking + Linux/Windows OS | Optional – Python.
Target Group Profile
1. Brendan Burns, "Designing Distributed Systems", Publisher: O'Reilly Media, Inc., Release Date: February 2018, ISBN: 9781491983645; with references to: Kelsey Hightower, Joe Beda, Brendan Burns, "Kubernetes: Up and Running, 2nd Edition", Publisher: O'Reilly Media, Inc., Release Date: October 2019, ISBN: 9781492046530
2. Kalpit Patel, John Carnell, "Spring Microservices in Action", Publisher: Manning Publications, Release Date: July 2017, ISBN: 9781617293986
3. Christina J. Hogan, Strata R. Chalup, Thomas A. Limoncelli, "Practice of Cloud System Administration, The: DevOps and SRE Practices for Web Services, Volume 2", Publisher: Addison-Wesley Professional, Release Date: September 2014, ISBN: 9780133478549
4. George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, "Distributed Systems: Concepts and Design", Publisher Addison-Wesley; 5 edition (April 27, 2011), ISBN-10: 0132143011, ISBN-13: 978-0132143011
5. Andrew S. Tanenbaum, Maarten Van Steen, "Distributed Systems: Principles and Paradigms (2nd Edition)", Publisher Prentice Hall; 2 edition (October 12, 2006), ISBN-10: 0132392275, ISBN-13: 978-0132392273
6. My Experience and lectures/labs slides presentations, examples, virtual machines + your visual, kinetic and auditory memory + SAKAI e-Learning System PROVIDED by ISM – IT&C Security Master Program - http://ism.ase.ro | http://acs.ase.ro
*** Additional - offtopic:
Meher Kasam, Siddha Ganju, Anirudh Koul, "Practical Deep Learning for Cloud, Mobile, and Edge", Publisher: O'Reilly Media, Inc., Release Date: October 2019, ISBN: 9781492034865
Vladimir Silva, "Practical Quantum Computing for Developers: Programming Quantum Rigs in the Cloud using Python, Quantum Assembly Language and IBM QExperience", Publisher: Apress, Release Date: December 2018, ISBN: 9781484242186