So far, we have discussed many things, such as Reactive programming, Reactive Manifest, the Reactive Streams API, the Java 9 Flow API, and finally, Reactive implementations, in detail in the previous sections.
It is useful to understand how they are all related and why they are required. I prefer a simple diagram to explain it instead of a lengthy description.
Take a look at the following diagram:
![](https://static.packt-cdn.com/products/9781787288645/graphics/assets/c981fe04-ea02-4827-9e93-fe37c9e7a5f1.png)
I hope you understood well how the Reactive Streams API was born. In my point of view, there are four phases or stages of the Reactive Streams API.