The main goal of Reactive Streams is to govern the exchange of
stream data across an asynchronous boundary like passing elements on to another
thread or
thread-pool while ensuring that the receiving side is not forced to
buffer arbitrary amounts of data. In other words, back pressure is an integral part of this model in order to allow the
queues which mediate between threads to be
bounded. The intention of the specification is to allow the creation of many conforming
implementations, which by virtue of abiding by the rules will be able to
interoperate smoothly, preserving the mentioned benefits and characteristics across the whole processing graph of a stream application. A freely-available
Technology Compatibility Kit was developed alongside the specification that allows implementors of the specification to verify if they covered all rules and requirements, including checks for potential
race conditions. The scope of Reactive Streams is a minimal set of
interfaces, methods and protocols that describe the necessary operations and entities to achieve the asynchronous streams of data with non-blocking back pressure.
End-user DSLs or protocol binding
APIs have purposefully been left out of the scope to encourage and enable different implementations that potentially use different
programming languages to stay as true as possible to the idioms of their platform. == Inclusion in Java standard ==