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.
Code: JVA-074
Duration: 36 hours

Description

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.

Roadmap

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

Objectives

  • 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

Prerequisites

  • Good knowledge of Java (Spring knowledge is desirable)


Trainer in Online
Catalin Tudose Java and Web Technologies Expert
Catalin is an experienced and dedicated software engineer with expertise in a variety of areas such as requirements analysis, project management (Waterfall and Agile), people management, Java technologies, database design, software architecture and software technologies for Enterprise Applications. Between 2003 and 2015 he has held several roles in telecommunications and financial projects, from Java senior developer to Java technical team lead and architect.

In addition to his role as a software engineer, Catalin has also been involved in developing and facilitating trainings on programming and databases for companies and universities. He has delivered courses on subjects such as Java, Web technologies, analysis of algorithms, SQL and database design.

Since 2012, he has conducted more than 4000 hours of courses in the Luxoft Training Center. He is the author or a coauthor of the following courses:


Catalin was also the lead facilitator for the Corporate Junior Program (CJP) which took part in Luxoft Poland (Krakow and Wroclaw). This program has prepared about 50 new Java developers to join delivery projects inside the company.

Together with Luxoft, he initiated and introduced the “Advanced Java Programming” course for the students pursuing their master’s degree at the Faculty of Automation and Computer Science in Bucharest.

He is an Agile Certified Scrum Master with a deep understanding of project management techniques and plenty of experience in managing software development projects.
Schedule in Online Prices
Course is scheduled in: Online
11.10.2021 - 21.10.2021
Time: 10:00-14:00
Timezone: UTC +2
City: Online
Duration: 36 hours
Language: English
Trainer
Catalin Tudose
Java and Web Technologies Expert
-15% €590
€502
Register for the next course
+
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
11.10.2021 - 21.10.2021
Time: 10:00-14:00
Timezone: UTC +2
City: Online
Duration: 36 hours
Language: English
Trainer
Catalin Tudose
Java and Web Technologies Expert
-15% €590
€502
Register for the next course
+
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
Online €590
Bucharest €590
Krakow €590
Wroclaw €590

Invoices for the course will be issued in local currency. All fees above can change according to training location and delivery mode and are subject to change while scheduling. Price does not include VAT.

Courses you may be interested in:
JVA-017
30 hours
JVA-030
12 hours
JVA-067
12 hours

Sign up

Choose dates
First Name*
Last Name*
Company
Email*
Phone
Your Comment
Still have questions?
Connect with us
Thank you.
Your request has been received.
Thank you!
The form has been submitted successfully.