Prerequisites and co-requisites |
- Knowledge of network protocols up to the transport layer
- Experiences with Object-oriented programming
- Good working knowledge in Java
- Basic knowledge in database systems
- Experience in the development of Web applications
- Knowledge of XML & JSON
|
Course content |
The course will cover the concepts and technologies of heterogeneous applications across enterprise boundaries: middleware, client-server systems with alternatives, forms of message exchange, distributed object-based method calls, directory services, messaging, Jakarta EE and related services, web services, synchronization, resilience, consensus in distributed applications. During the project, student teams develop a complex distributed system with different APIs from a combination of the learned technologies. |
Learning outcomes |
At the end of the course the student is expected to
- know the characteristics of distributed systems, different distributed computing paradigms and efficient communication protocols, e.g. (Multi-)threading, Sockets, WebSockets
- have experience with distributed objects in Java and some specific middleware, including JMS, EJB, and Web services along with the peculiarities of asynchronous communication technologies
- have insight into the operation and programming of directory services, e.g. LDAP
- be able to do practical programming of enterprise wide applications using Java, Jakarta EE, Web services/Microservices, and Middleware for Cross-Language Distributed Systems and can extend the implemented back end systems by appropriate clients, e.g. Web front ends
- have insight into the concepts of timing and synchronization in distributed systems
- have basic knowledge of reliability, fault tolerance and security in distributed systems
|
Planned learning activities and teaching methods |
Lecture, laboratory work, project teamwork project work with coaching; integrated lecture |
Assessment methods and criteria |
Assessment of project work developed within a team (60%) and final exam (40%).
For a positive grade, a minimum of 50% of the possible points must be achieved in each part of the examination. |
Comment |
Not applicable |
Recommended or required reading |
- Abernethy, Randy (2019): Programmer's guide to Apache Thrift. Shelter Island: Manning Publications.
- Christudas, Binildas (2019): Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Available at: URL: https://login.proxy.bib.uottawa.ca/login?url=https://learning.oreilly.com/library/view/-/9781484245019/?ar&orpq&email=^u (Accessed on: 27 September 2019).
- Coulouris, George F. et al. (2012): Distributed systems: concepts and design. 5th ed. Boston: Addison-Wesley.
- Coward, Danny (2014): Java WebSocket programming. New York: McGraw-Hill.
- Finnigan, Ken (2019): Enterprise Java microservices. Shelter Island, NY: Manning Publications.
- Goncalves, Antonio (2013): Beginning Java EE 7. Available at: URL: http://dx.doi.org/10.1007/978-1-4302-4627-5 (Accessed on: 19 December 2014).
- Horstmann, Cay S.; Cornell, Gary (2013): Core Java. Ninth edition. Upper Saddle River, NJ: Prentice Hall.
- Ihns, Oliver et al. (2011): EJB 3.1 professionell Grundlagen- und Expertenwissen zu Enterprise JavaBeans 3.1 - inkl. JPA 2.0. Heidelberg: dpunkt-Verl.
- Indrasiri, Kasun; Siriwardena, Prabath (2018): Microservices for the enterprise. New York, NY: Springer Science+Business Media, LLC.
- Kalin, Martin (2013): Java Web services: up and running.
- Kocher, Parminder Singh (2018): Microservices and containers. Boston: Addison-Wesley.
- Marcus Schießer; Martin Schmollinger (2014): Workshop Java EE 7: Ein praktischer Einstieg in die Java Enterprise Edition mit dem Web Profile. 2nd Ed. dpunkt.verlag GmbH. (Accessed on: 19 December 2014).
- Rakowski, Krzysztof (2015): Learning Apache Thrift: make applications communicate using Apache Thrift. Birmingham Mumbai: Packt Publishing (= Packt open source).
- Richardson, Chris (2019): Microservices patterns: with examples in Java. Shelter Island, New York: Manning Publications.
- Röpstorff, Sven.; Wiechmann, Robert. (2012): Scrum in der Praxis: Erfahrungen, Problemfelder und Erfolgsfaktoren. Heidelberg, Neckar: dpunkt.
- Rubinger, Andrew Lee.; Monson-Haefel, Richard.; Burke, Bill. (2010): Enterprise JavaBeans 3.1. Beijing; Farnham; Sebastopol, CA: O'Reilly.
- Sharma, Sourabh (2019): Mastering microservices with Java: master the art of implementing microservices in your production environment with ease. Birmingham, UK: Packt Publishing. Available at: URL: http://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&db=nlabk&AN=2036190 (Accessed on: 27 September 2019).
- Sriganesh, Rima Patel; Brose, Gerald; Silverman, Micah (2006): Mastering enterprise JavaBeans 3.0. Indianapolis, Ind.: Wiley Pub.
- Tanenbaum, Andrew S.; Steen, Maarten van (2007): Distributed systems: principles and paradigms. 2nd ed. Upper Saddle RIiver, NJ: Pearson Prentice Hall.
- Wirdemann, Ralf. (2011): Scrum mit User Stories. München: Hanser, Carl.
- Zörner, Stefan (2013): LDAP für Java-Entwickler: Einstieg und Integration. [s.l.]: entwickler press.
|
Mode of delivery (face-to-face, distance learning) |
Classroom teaching, face-to-face Attendance mandatory for lab lessons, coaching lessons, and for the final presentation of the project results |