High Performance = Low Latency + High Throughput. Functional Reactive Programming provides higher-level abstractionSchedule & Enrollment
Duration of the workshop is 27 study hours in total.
The workshop provides in-depth study of reactive and high performance application programming in Java using several open-source frameworks. Main patterns and existing software implementations are discussed.
Functional reactive programing provides easy to use and composable higher-level abstraction for high-performance computing, hiding the complexities of non-blocking concurrency implementations. The main topics that will be covered are:
Low latency and high throughput programming in Java. Different factors affecting performance – CPU architecture (multicore, hyperthreading), memory hierarchies (caches, predictive caching), memory access patterns (temporal, spatial, striding), Garbage Collection (serial, parallel and concurrent GC strategies, genrational GC), lock contention – uncontended vs. contended locks, false sharing. Non-blocking concurrency. Single writer designs. The LMAX Disruptor (RingBuffer) high performance inter-thread messaging library. DSL & Main API – Ring Buffer, Sequence, Sequencer, Sequence Barrier, Wait Strategy, Event, EventProcessor, EventHandler, Producer. Examples and exercises. (6 study h.)
Reactive programming. Reactor & Proactor design patterns. Reactive Streams Specification – Publisher, Subscriber, Subscription, Processor. Building high-performance non-blocking asynchronous applications on the JVM using Reactor project – Reactors, Dispatchers, EventRouters, Streams and Promises, Processors (RingBuffer). Reactor-Core, Reactor-Bus, Reactor-Streams and Reactor-Net APIs. Building end-to-end reactive web applications and services (REST, WebSocket) using Reactor. (8 study h.)
RxJava – a Java VM implementation of ReactiveX (Reactive Extensions) – extended Observer design pattern. Practical examples and RxJava coans for self-testing. (5 study h.)
Inter Process Communication (IPC) with sub millisecond latency with Chronicle Queue. (3 study h.)
During the workshop participants will get experience using reactive programming paradigm for building high performance software in Java by solving multiple problems, and practical application of discussed patterns. The learning is conducted in small groups – up to 8 participants using problem-based methodology. During laboratory exercises there is opportunity for individual advises, as well as discussion of additional questions the participants are interested in.