Java Advanced: Functional, Asynchronous, and Reactive Programming

Java Advanced: Functional, Asynchronous, and Reactive Programming
This training focuses on the contemporary functional, asynchronous, and reactive approaches to Java development. It covers the examination of NIO2, CompletableFurure, RxJava, Reactor, R2DBC, SSE, Spring Data reactive, WebClient, reactive WebSocket, and RSocket.
36 hours
Java Advanced: Functional, Asynchronous, and Reactive Programming
Sign Up
36 hours
Schedule and prices
800.00 *
Training for 7-8 or more people? Customize trainings for your specific needs
Java Advanced: Functional, Asynchronous, and Reactive Programming
Sign Up
36 hours
Schedule and prices
800.00 *
Training for 7-8 or more people? Customize trainings for your specific needs


In our course we look at the contemporary functional and reactive approaches to Java development (for increasing backend performance). The training covers subjects such as non-blocking input/output NIO2, asynchronous promises CompletableFuture, reactive programming libraries RxJava and Reactor, async DB access interface R2DBC and more. We also include the streaming protocol SSE, reactive Spring Data repositories, WebClient, WebSocket and RSocket protocols, as well as practical examples.
After completing the course, a certificate
is issued on the Luxoft Training form


  • Offer an introduction to modern asynchronous and reactive programming
  • Examples of how modern asynchronous and reactive programming is used

Target Audience

  • Java developers
  • Java Architects


  • Good knowledge of Java (Spring knowledge is desirable)


  • Functional Java

    • Functional interfaces
    • Method references
    • Data streams
    • Map/filter/reduce
    • Aggregation functions
    • Reducing parallel and sequential processing
    • Consumers chaining
    • Stream collectors
  • Executor framework. Fork Join pool

    • Using executors
    • Future interface
    • Using Callable interface
    • Cancelling tasks
    • ForkJoin framework
    • Creating ForkJoin pool and tasks
    • Parallel Streams in Java 8+
    • ForkJoin vs. Parallel streams vs. Sequental benchmarks
  • Non-blocking Input/Output

    • Main Differences Between Java NIO and IO
    • NIO Channel vs. Stream
    • Stream Oriented vs. Buffer Oriented
    • Blocking vs. Non-blocking IO
    • Java NIO Buffer
    • Java NIO Channel
    • Direct buffer
    • Mapped file buffer
    • Java NIO Selector
    • Asynchronous I/O with NIO
    • File lock
    • Production-ready NIO server
    • Netty server architecture
  • Asynchronous Java (Completable Future)

    • Problems of synchronous code
    • NodeJS architecture
    • Processing data flow in parallel
    • CompletableFuture sync and async methods
    • Combining, composing, and quicker win methods
    • Handling exceptions in CompletableFuture
    • Cancellation of CompletableFuture
    • Using CompletableFuture for real-life Data Flow
  • Reactive programming

    • What is reactivity?
    • RxJava basics: Observer and Observable
    • Java 9 Reactive Streams
    • Side effect methods
    • Error handling
    • Hot and cold observables
    • Shared and connectable observables
    • Disposing observables
    • Reactive operators (full catalog)
    • Subjects
    • RxJava concurrency (Schedulers)
    • Backpressure and flowables
    • Testing reactive streams
  • Project Reactor

    • Reactor Maven dependencies
    • Flux/Mono Reactor operators
    • Handling backpressure with Reactor
    • Reactor Schedulers
    • Parallel Flux
    • Wrapping a synchronous blocking calls
    • Testing with Reactor
    • Reactor processors
  • Spring WebFlux and practical reactive programming

    • Reactive access to DB
    • Reactive R2DBC drivers
    • Spring Data reactive repository
    • Pagination support
    • WebFlux: Functional-based controllers
    • Spring REST controllers returning reactive results (Mono/Flux)
    • Spring REST controllers returning SSE
    • WebClient: retrieving reactive data from the server
    • SSE and WebSocket protocols
    • Using WebSocket to pass/retrieve JSON data
    • Using WebSocket to pass/retrieve binary data
    • RSocket protocol
    • RSocket controller: server side
    • RSocket client with JSON and binary data exchange
    • RSocket with load balancing
    • RSocket with weighted load balancing
    • Using reactive streams with message broker (RabbitMQ)
    • Spring Data MongoDB repository
    • Reactive benchmarks: R2DBC vs JDBC and WebFlux vs Web MVC
    • Architecture and Patterns of reactive programming
  • Show Entire Program
Schedule and prices
Register for the next course
Registering in advance ensures you have priority. We will notify you when we schedule the next course on this topic
Courses you may be interested in
Effective Java
The training explores new design patterns and language idioms, showing how to make the most of features ranging from generics to enums, annotations to autoboxing.
New features of Java 8 (stream, API)
This training is designed to help participants understand these new features of Java 8. The course covers lambda expressions, data streams, stream data processing with map-filter-reduce approach, asynchronous programming and DateTime API.
11.03.2024 - 18.03.2024
This course covers everything you need to know about JUnit5 (architecture and features), with examples and exercises to help participants practice everything they learned.
View Catalog
Your benefits
Our trainers are industry experts, involved in software development project
Live training
Facilitated online so that you can interact with the trainer and other participants
A focus on helping you practice your new skills
Залишилися запитання?
Зв'яжіться з нами
Thank you!
The form has been submitted successfully.