Seminar in Software Engineering: Asynchronous and Reactive Programming Techniques

339.378 2SE Herbert Prähofer Di 15:30 - 17:00 S3 218 Start: 11.10.2022


Description

New kinds of applications in the era of cloud computing and Internet-of-Things applications demand new models of program design. Such applications must handle a large number of user events in a short time, are often directly connected to a dynamic environment, and must continuously respond to changes. The Reactive Manifesto (www.reactivemanifesto.org) established principles for reactive programming. Reactive systems are described as systems that can respond to inputs in a short time (responsive), are resilient to errors (resilient), respond elastically (elastic) to high load, and are predominantly event-driven and asynchronous (message-driven). Recently, a number of new technologies and frameworks have emerged for the realization of reactive systems. While these differ widely in their principal programming models, they share their asynchronous and non-thread-based approach.

The goal of this seminar is to explore and compare different approaches to reactive programming. Possible techniques are (will be selected in the first meeting, other technologies possible):

  • Java's CompletableFutures (https://docs.oracle.com/)
  • Netty (https://netty.io/)
  • C# asynchronous programming (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)
  • Kotlin's coroutines (https://kotlinlang.org/docs/coroutines-overview.html)
  • Go’s Goroutines (https://go.dev)
  • Reactive Extensions in Java (RxJava, alternatively the Kotlin version RxKotlin, see reactivex.io)
  • Spring Reactive (https://spring.io/reactive)
  • Akka Actors (https://akka.io/)
  • Erlang (https://www.erlang.org/)
  • ...

We will form teams of two people and each team will deal with one technology. The seminar will be conducted in the following phases:

  1. First meeting: Introduction to the topic and guidelines for the seminar by the seminar leader
  2. Studying the literature, exploring the technology (individual work, individual meeting with the seminar leader)
  3. Second meeting: Presentation of the programming models in a short lecture to the seminar participants
  4. Implementation of a small sample application system (individual work, individual meeting with the seminar leader)
  5. Preparation of a short paper (ca. 4 pages) plus a presentation of the technology and sample application (individual work, individual meeting with the seminar leader)
  6. Third meeting: Presentation of result to the seminar participants