Duration of the workshop is 24 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 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 – Flux and Mono, ParallelFlux, threading and schedulers, error handling, custom sources, backpressure, OverflowStrategies, Processors and Sinks, types of Sinks, hot versus cold streams, broadcasting to multiple subscribers using ConnectableFlux, batching (grouping, windowing, and buffering), changing default schedulers, using global hooks (dropping, internal error and assembly), adding a Context to a reactive sequence, dealing with objects that need cleanup, null safety. Exercises: creating, transforming, filtering, splitting, peeking elements, handling errors in sequences, working with time, going back to synchronous, multicasting to several subscribers. Testing and debugging Reactor. Reactor extras and integrations: Reactor Addons, Reactor-Netty and Spring WebFlux integrations. Building end-to-end reactive web applications and services (REST, WebSocket) using Reactor and WebFlux. (12 h)
RxJava – a Java VM implementation of ReactiveX (Reactive Extensions) – extended Observer design pattern. Schedulers, concurrency, parallelism, sub-flows, dependent, non-dependent and deferred continuations, type conversions, error handling. Practical examples. (6 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.
For more information and enrollment contact us by e-mail : firstname.lastname@example.org