Swave - a fresh Reactive Streams Implementation by Mathias Doenitz
This video was recorded at Scala Days Berlin 2016 Follow us on Twitter @ScalaDays or visit our website for more information http://scaladays.org Anstract: Since its inception more than 2 years ago the effort for establishing a standard protocol for asynchronous stream processing under the name "Reactive Streams" (RS) has received a lot of attention. Many users and organizations are excited by this powerful new abstraction for defining and scaling pipelined processing logic in a fully asynchronous, non-blocking and generally reactive fashion. Typically applications built on RS thereby rely on an RS infrastructure implementation to provide the general building blocks for defining arbitrarily complex business logic as a series of stream transformations. An RS infrastructure implementation also forms the "glue" that's required for interfacing with RS-compatible domain adapters (e.g. for databases, HTTP APIs and messaging systems). While the number of RS-compatible domain adapters has been rising steadily over the course of the last year the range of available RS infrastructure implementations is still limited. For Scala users there is currently only a single one, akka-stream, which is solidly engineered towards a particular set of design goals. In order to further explore the design space of the still young Reactive Streams domain another fully-featured Reactive Streams infrastructure toolkit for Scala, called "Swave", has been built from scratch with a clear focus on maximum performance, a simple and powerful API as well as minimal dependencies. This talk will introduce you to the project, its general design approach, feature set and core implementation choices as well as basic benchmark and performance figures. We'll contrast with other RS implementations and highlight pros and cons from a user's perspective. So the next time you are faced with the question of which Reactive Streams implementation to use you'll have one more choice to pick from. And even if you can't decide you're still good! After all, the "Reactive Streams" label means: Interoperability for the win!