Typesafe have been tireless in their quest to reactively-label all the things – but this week,thanks to the GA availability of the final version of Reactive Streams 1.0 for the JVM, they’ve had to do very little to push the buzzword. Even a self-professed C# fanboy on Hacker News was moved to comment that “the Java community has done something really amazing” with this project.
Although Reactive Streams (interfaces designed to govern the exchange of stream data across an asynchronous boundary and ensure that the receiving side is not forced to buffer arbitrary amounts of data) have been around for some time, this is the first time they have really been enabled for the JVM.
Reactive streams have the potential to turn the jvm landscape on its head… #scalaitaly
— michelemauro (@michelemauro) May 8, 2015
The goal of the Reactive Streams project was to define a common standard especially for JVM, enabling flexible and yes, you’ve guessed it, reactive data processing. These efforts have finally been consolidated into Reactive Streams 1.0.0, which has been published as a common specification by the Reactive Streams Working Group.
This project, launched back in February 2014, is very much a group effort. Typesafe’s work was augmented by contributions from Typesafe, Red Hat, Netflix, Pivotal, Oracle, Twitter and spray.io, who worked to ensure the series of mutually adapted interfaces, methods and network protocols required to enable asynchronous streaming processes could operate without blocking back-pressure.
It applies to Stream-oriented JVM libraries that:
process a potentially unbounded number of elements
asynchronously passing elements between components,
with mandatory non-blocking back-pressure.
At the time of the Reactive Streams 1.0 GA announcement, the project team also included links to the compliant implementations verified by the technology compatibility kit for 1.0.0. This includes Akka Streams, MongoDB, Slick, and Vert.x 3.0. You can find all the fine grained info on the official project page, and the source code for the JVM specification is available on GitHub.