O'Reilly logo
live online training icon Live Online training

Beginning RxJava

Write robust, reliable, and readable reactive applications for server-side and mobile devices

Tomasz Nurkiewicz

RxJava is a relatively new way of expressing and composing streams of data as well as asynchronous computations. In this two-day, hands-on, online course, Tomasz Nurkiewicz shows you how to use RxJava safely and effectively in both greenfield and legacy projects. You’ll discover how to work with fundamental concepts in Rx such as backpressure and hot vs. cold sources. You will also learn how to look for specific RX operators and understand their behavior. By the end of this online course, you will be capable of writing expressive, thread-safe, and well-performing code both on the server and on mobile devices.

What you'll learn-and how you can apply it

By the end of this live, hands-on course, you’ll understand:

  • How to put the core principles behind RxJava into practice in your applications
  • How to distinguish between specific RxJava operators and understand their behavior
  • How to avoid common pitfalls with schedulers and multithreading
  • How to work with an event-based, reactive programming model

And you’ll be able to:

  • Write robust, reliable, and readable reactive applications for server-side and mobile devices
  • Manage infinite streams of application data
  • Create and execute unit and integration tests

This training course is for you because...

  • You are an experienced Java programmer who wants to learn how to manage infinite streams of data and write highly reactive, throughput-sensitive applications
  • You are a software architect who wants to learn how to design resilient, responsive, and scalable distributed systems, especially on the server and mobile devices

Prerequisites

  • Working knowledge of Java programming
  • Familiarity with functional programming concepts and Java 8 lambdas more specifically

Recommended Preparation:

Training materials for class:

https://github.com/nurkiewicz/rxjava-workshop

About your instructor

  • Tomasz Nurkiewicz is a senior software engineer at Allegro. Tomasz has spent half of his life programming (for the last decade professionally in Java land). He loves backend, tolerates JavaScript, is passionate about alternative JVM languages, is disappointed with the quality of software written these days (so often by himself!), and hates long methods and hidden side effects. Tomasz is interested in charting, data analysis and reporting and believes that computers were invented so that developers could automate boring and repetitive tasks. He is involved in open source and used to be very active on StackOverflow. Tomasz is an author, trainer, conference speaker, technical reviewer, and runner and has been recognized as DZone’s most valuable blogger. He claims that code not tested automatically is not a feature but just a rumor.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

DAY 1

Introduction

  • What is RxJava, Observable and Flowable (20 minutes, lecture + live coding)
  • Difference between Observable and Flowable (5 minutes, lecture + live coding)
  • How to create a Flowable (10 minutes, live coding)

Threading

  • [Threading] subscribeOn() (20 minutes, lecture + live coding)
  • [Threading] subscribeOn() vs. observeOn() (15 minutes, lecture + live coding)

Break: 15 min

Threading (cont’d)

  • flatMap() and how it enables multithreading (20 minutes, lecture + live coding, exercise)
  • zip() as a way of synchronizing work (20 minutes, lecture + live coding)

Throttling

  • window() and buffer() operators (20 minutes, lecture + live coding)

Resiliency

  • Monitoring and troubleshooting (20 minutes, lecture + live coding)
  • Retrying on failures (20 minutes, lecture + live coding)

DAY 2

Testing

  • Test subscriber and assertions (10 minutes, lecture + live coding)
  • TestScheduler (20 minutes, lecture)
  • TestScheduler (10 minutes, live coding)

Throttling

  • groupBy() operator (15 minutes, lecture + live coding)

Backpressure

  • What is backpressure (10 minutes, lecture)

Break: 15 min

Backpressure (cont’d)

  • Backpressure strategies (20 minutes, lecture + live coding)
  • Backpressure pitfalls (10 minutes lectures)

More Types

  • Single, Maybe and Completable types (10 minutes lecture + live coding)

Real World Examples

  • Retrofit HTTP client (10 minutes, demo)
  • Android event handling (10 minutes, demo)