We continue to learn the Java functional programming paradigm in this chapter because some of the upcoming recipes will still require the APIs of java.util.function while building Reactive web components and Stream-based transactions.
This chapter discusses some of the new APIs needed to create Java events that are discrete, asynchronous, and non-blocking which are used in communication between a message sender and the recipient in many applications. This communication will eventually create a loosely-coupled and message-driven environment involving one or more Streams of Object. The model sounds similar to building message-driven transactions in Java Message Service (JMS) and Advanced Message Queuing Protocol (AMQP) but not exactly, since this communication model deals more with adaptive and scalable Streams of objects that can control data requests and even...