RxJava 2 | Reactive Programming in Java (TT3132)
Code:
TT3132
Duration:
2 Day
|
$1895
USD
|
Java 8 Concurrency and Reactive Programming using RxJava 2 is a two-day, fast-paced coding course geared for experienced developers who have prior working knowledge of Java. Throughout the course students learn the best practices for writing non-blocking applications in Java 8 using both the Java Concurrency Framework and the RxJava 2 API. The course provides an in-depth view of the enhancements made to the Java Concurrency API in Java 8, allowing for the development of non-blocking asynchronous processes.
This course also covers the RxJava 2 API, an implementation of the Reactive-Streams specification, allowing for the development of asynchronous and event-based programs by using observable sequences. Please note that this course is also available for Project Reactor.
This course is available in the following formats:
Duration: 2 Day
Duration: 2 Day
Call 800-798-3901 to enroll in this class! |
This skills-centric course is about 50% hands-on lab and 50% lecture, designed to train attendees in next-level Java development skills, coupling the most current, effective techniques with the soundest industry practices. Throughout the course students will be led through a series of progressively advanced topics, where each topic consists of lecture, group discussion, comprehensive hands-on lab exercises, and lab review.
Our engaging instructors and mentors are highly experienced practitioners who bring years of current "on-the-job" experience into every classroom. Working within in a hands-on learning environment, guided by our expert team, attendees will explore:
- Explore Parallel programming in Java including coverage of multithreading and concurrency
- The asynchronous, non-blocking concurrency API introduced in Java 8
- Reactive Programming in Java using Project Reactor
- Understand event publishers and Subscribers
- Apply operators to Reactive events
- Understand the concept of Backpressure
- Properly handle exceptions in the reactive process
Session: Multithreading and Concurrency
- Lesson: Introduction to Multithreading and Concurrency
- Principles of Multithreading
- The Thread class and Runnable interface
- Explore thread synchronization
- Introduce the Java Concurrency API
Lesson: Concurrent Java
- Thread management using Executors
- The common thread-pool
- Submitting and controlling asynchronous tasks
- Explore the locking API
- Lab: Working with Concurrent Java
Lesson: Non-blocking asynchronous tasks
- The CompletableFuture
- Define non-blocking processes
- Lab: CompletableFuture
Session: Introduction to RxJava2
Lesson: Introduction
- Introduce ReactiveX and RxJava 2
- The Observer and Iterator pattern and functional programming
- Introduce the RxJava 2 Building blocks
- Discuss hot and cold observables
- Registering operators
- Subscribing to an Observable
- Lab: RxJava Introduction
Lesson: Testing Event Sources (Introduction)
- Introduce the TestObserver and TestSubscriber
- Testing Observable implementations
- Introduce some commonly used assertions
- Lab: Testing the Observable
Lesson: Operators
- Introduce RxJava 2 Operators
- Show the use of RxMarbles (marble diagrams)
- Explain some commonly used operators
- Callback operators
- Lab: RxJava Operations
Lesson: Creating the event publisher
- Implementing the event source
- Introduce the different types of event publishers
- Convenience methods for creation of publishers
- Creating an event source using an Emitter
- Pre-defined observables
- The defer operator
- ConnectableObservable
- Lab: RxJava Observables
Session: Working with RxJava2
Lesson: Subjects
- RxJava subjects
- Enable multicasting using Subjects
- Introduce most commonly used Subject implementations
- Lab: RxJava Subjects
Lesson: RxJava Schedulers (Multithreading)
- Thread usage of Observable, Operator and Observer
- Using the subscribeOn method
- Introduce the Scheduler implementations
- Using the observeOn method
Lesson: Testing (multi-threaded) Event Sources
- Testing Asynchronous code
- Discuss strategies for testing event sources
- Waiting for source to complete (await methods)
- Use RxJava extension mechanism to Scheduler instances used during test
- The JUnit 5 @ExtendsWith and @RegisterExtension annotations
- Using the TestScheduler to advance time during test
- Lab: Testing Asynchronous Event sources
Lesson: Backpressure
- Strategies for dealing with Backpressure
- Reactive Streams
- Flowable and Processor
- reactive pull backpressure
- Lab: RxJava Backpressure
Lesson: Exception Handling
- Handling errors in onError
- Exception handling strategies
- Using onErrorReturn or onErrorNext operators
- Using the retry operators
- The Global Error Handler
- Lab: RxJava Exceptions
Session: Multithreading and Concurrency
- Lesson: Introduction to Multithreading and Concurrency
- Principles of Multithreading
- The Thread class and Runnable interface
- Explore thread synchronization
- Introduce the Java Concurrency API
Lesson: Concurrent Java
- Thread management using Executors
- The common thread-pool
- Submitting and controlling asynchronous tasks
- Explore the locking API
- Lab: Working with Concurrent Java
Lesson: Non-blocking asynchronous tasks
- The CompletableFuture
- Define non-blocking processes
- Lab: CompletableFuture
Session: Introduction to RxJava2
Lesson: Introduction
- Introduce ReactiveX and RxJava 2
- The Observer and Iterator pattern and functional programming
- Introduce the RxJava 2 Building blocks
- Discuss hot and cold observables
- Registering operators
- Subscribing to an Observable
- Lab: RxJava Introduction
Lesson: Testing Event Sources (Introduction)
- Introduce the TestObserver and TestSubscriber
- Testing Observable implementations
- Introduce some commonly used assertions
- Lab: Testing the Observable
Lesson: Operators
- Introduce RxJava 2 Operators
- Show the use of RxMarbles (marble diagrams)
- Explain some commonly used operators
- Callback operators
- Lab: RxJava Operations
Lesson: Creating the event publisher
- Implementing the event source
- Introduce the different types of event publishers
- Convenience methods for creation of publishers
- Creating an event source using an Emitter
- Pre-defined observables
- The defer operator
- ConnectableObservable
- Lab: RxJava Observables
Session: Working with RxJava2
Lesson: Subjects
- RxJava subjects
- Enable multicasting using Subjects
- Introduce most commonly used Subject implementations
- Lab: RxJava Subjects
Lesson: RxJava Schedulers (Multithreading)
- Thread usage of Observable, Operator and Observer
- Using the subscribeOn method
- Introduce the Scheduler implementations
- Using the observeOn method
Lesson: Testing (multi-threaded) Event Sources
- Testing Asynchronous code
- Discuss strategies for testing event sources
- Waiting for source to complete (await methods)
- Use RxJava extension mechanism to Scheduler instances used during test
- The JUnit 5 @ExtendsWith and @RegisterExtension annotations
- Using the TestScheduler to advance time during test
- Lab: Testing Asynchronous Event sources
Lesson: Backpressure
- Strategies for dealing with Backpressure
- Reactive Streams
- Flowable and Processor
- reactive pull backpressure
- Lab: RxJava Backpressure
Lesson: Exception Handling
- Handling errors in onError
- Exception handling strategies
- Using onErrorReturn or onErrorNext operators
- Using the retry operators
- The Global Error Handler
- Lab: RxJava Exceptions
This hands-on course focuses on learning by doing, combining expert lecture, practical demonstrations and group discussions with plenty of machine-based real-world programming labs and exercises. Student machines are required.
This hands-on course focuses on learning by doing, combining expert lecture, practical demonstrations and group discussions with plenty of machine-based real-world programming labs and exercises. Student machines are required.
Java Developers, Application Developers, Software Developers, Full Stack Developers, Architects, Technical Managers.