With the advances in multicore hardware and virtualization technologies, and the demand for highly responsive, resilient, and elastic systems and increasingly sophisticated applications, an array of reactive data stream processing libraries have been born to address the needs. The OSGi Alliance has published the Push Stream specification with a simple streaming API that depends on the OSGi Promises, but without any other OSGi specifications and framework dependencies. At the same time, how does the PushStream API compare with the other popular streaming libraries, such as the ones that are based on the Reactive Streams specification, namely, Spring Reactor, Reactive Extension (Rx)'s Observables, and Akka Streams?
This presentation will go into some details on how streams leverage on the underlying multicore processor to achieve parallelism. It will then explain the push vs the pull streaming model. It will then use a simple use case with code examples to illustrate the different API usages, as well as runtime processing analysis between Push Streams and Reactive Streams.