RxJava Codelabs: Basic + Advanced
Reactive programming is mentioned everywhere these days. It solves many common issues of imperative programming in an elegant way. Dozens of libraries are springing up, giving developers access to powerful tools that make their everyday development life easier. However, it can take time to learn how to wield these tools effectively as they are often difficult to understand and if used improperly they can sometimes do more harm than good.
These codelabs will first go through RxJava basics, in order to demonstrate the main concepts and common use-cases of the ReactiveX framework, as well as reactive programming in general. It should make RxJava and reactive programming much clearer to you and give you lots of ideas of when and where you might want to use it. Once you have seen what it can do, you won't want to go back to how you were programming before!
The advanced codelab will take you more into deep of reactive world, we will go into detail and we will discover more of its beauty, because its endless.
- Java 8 SDK
- IntelliJ (any edition) or any other IDE you like
- Clone this repo (GitHub Desktop, SourceTree or
git clone https://github.com/jraska/RxJava-Codelab.git)
- Open it in IntelliJ or other IDE
- Try to run
SetupTestfrom your IDE
- Call for help if it doesn't work
- What is a stream? Observable contract
- How to create Observables
- Error handling
- Threading - Schedulers
- Observable feat. Single, Maybe, Completable
- Hot/Cold Observables
- Use cases - cache/refresh, polling, caching, ...
- Backpressure - Observable vs. Flowable
- Other reactive libraries interoperability
How to use the Code Lab
- There are tasks for different areas formed as unit tests and having a format
- Each of these tasks has a method with a
TODOexplaining what to do and giving hint which operator might be useful. Very often there are multiple solutions to given problem.
- Each Task has a solution with format
- Recommended order is doing the tasks by order of their numbers, however jumping based on area of interest is encouraged as well.