High Performance Reactive Programming with JAVA

Траян Илиев - Certified Java SE 6 ProgrammerOracle® Certified Professional - Java SE 6 Programmer

Training is conducted by Trayan Iliev, Oracle® & OMG® certified software developer with 12+ years Java training experience for big international companies (VMware, Software AG, Anyoption, Comptel, Verint, i:FAO Bulgaria, Stemo, Globul/Telenor, etc.). Frequent speaker at Bulgarian Oracle® User Group (BGOUG) and Bulgarian Java User Group (BGJUG) conferences.

Target audience:

Medium to expert level Java developers with practical experience in building applications with Java SE and JavaScript.

Workshop duration:

Duration of the workshop is 24 hours in total.

Workshop Description:

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:

  1. Reactor

    Reactor design pattern

    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 APIRing Buffer, Sequence, Sequencer, Sequence Barrier, Wait Strategy, Event, EventProcessor, EventHandler, Producer. Examples and exercises. (6 h)

  2. combineLatest

    RxJava – Java ReactiveX (Reactive Extensions) – https://github.com/ReactiveX/RxJava/

    Reactive programming. Reactor & Proactor design patterns. Reactive Streams SpecificationPublisher, 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)

  3. 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)

The workshop contains approximately 50% lecture materials and 50% lab exercises. Lectures and exercises will be conducted in parallel and will not be divided in separate sessions in order to achieve immediate reinforcement of theoretical discussions with practical examples and exercises in Java and JavaScript.

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 : office@iproduct.org