Summary
In this chapter, we have revisited a few well-known design patterns by GoF—including Observer, Publish-Subscribe, and Iterator to build the basis of reactive programming. We have written a few implementations to review both the strong and weak sides of the instruments we already have for asynchronous programming. We have also leveraged Spring Framework support for Server-Sent Events, WebSockets, and also played with Event-Bus provided by Spring. Also, we have used Spring Boot and start.spring.io for fast application bootstrapping. Even though our examples were pretty simple, they demonstrated the potential issues that arise from immature approaches that are used for asynchronous data processing.
We also looked at reactive programming's history to highlight architectural problems, which reactive programming was invented to fight against. In this context, the success story of Netflix demonstrates that a small library like RxJava may become a starting point toward making a significant success in a very competitive business field. We have also discovered that following RxJava's success, a lot of companies and open source projects re-implemented reactive libraries bearing in mind these considerations, which led to the versatile reactive landscape. This versatility motivated the need for Reactive Standard, which we will talk about in the next chapter.