Summary
As we have learned from the previous example, Reactive Streams drastically increases the composability of reactive libraries. We have also learned that the most useful way to verify the compatibility of the Publisher is just to apply Technology Compatibility Test Kits, which are provided with the Reactive Streams specification.
At the same time, the specification brings a pull-push communication model for Reactive Streams. This addition solves the backpressure controlling problem and at the same time reinforces communication flexibility by offering a choice of which model to use.
After the Reactive Streams Specification was included in JDK9, its significance skyrocketed. However, as we learned, this improvement brought some overheads in the need for type conversion between two variants of the specification.
As we understood from the previous sections, a Reactive Streams specification allows several means of communication between operators. This flexibility allows different ways of placing asynchronous boundaries. However, it puts an important responsibility on the reactive libraries' vendors since the business needs must justify such decisions. Also, a provided solution should be flexible enough to be configurable for it from the API side.
By changing the behavior of the reactive streams, the specification also changed the reactive landscape. The leaders of open source industries such as Netflix, Redhead, Lightbend, Pivotal, and others have implemented the specification within their reactive libraries. However, for Spring Framework users, the most significant change that has happened in the reactive world is the introduction of the new reactive library called Project Reactor.
Project Reactor plays an important role because it is the building block for a new reactive Spring ecosystem. Consequently, before diving deeper into the internal implementation of the new reactive Spring, we should explore Project Reactor and get acquainted with the importance of its role. In the next chapter, we are going to learn the conceptual constituents of Project Reactor and its application by looking at examples.