In this repository, I'm experimenting with Reactive Streams, which are going to become part of the Java 9 in the java.util.concurrent
package in Java 8 application and with native Java 9 Reactive Streams as well.
This repository is prepared for my talk titled Get ready for java.util.concurrent.Flow!
during JDD 2017 Conference on 03.10.2017 in Kraków, Poland.
Presentation slides are published at:
https://speakerdeck.com/pwittchen/get-ready-for-java-dot-util-dot-concurrent-dot-flow
Inside java8
directory, I'm playing with two implementations of Reactive Streams:
- RxJava2
- Project Reactor (it's going to be included in Spring 5)
- Akka Stream
Project inside java8
directory can be cleaned, compiled and run via Gradle Wrapper.
It contains only exploratory tests for different reactive libraries.
To run tests, type: ./gradlew test
.
Inside java9
directory I'm playing with native Java 9 Reactive Streams interfaces. This project is based on Gradle. If you have problems with importing it into IntelliJ IDEA, choose Java 8 during import and switch Java version to 9 after import. In the case of problems with compilation, update gradle.properties
file. To build project, type: ./gradlew build
. To run the compiled project, type: ./gradlew run
.
The example implementations are examples from the Reactive Streams examples, as implementing one-off by-hand implemented Publishers/Subscribers is actually pretty hard to pull off - due to the restrictive Specification which governs how these implementations much behave.
master
branch contains code snippets from presentation and exeprimentspresentation
branch contains code snippets for Java 8 shown during the presentation and empty project in Java 9 for live coding
-
Reactive Streams TCK (which all implementations must pass)
-
Java 9 (Part 5): Flow With the New Reactive Streams, First Look
-
Mastering own Reactive-Streams implementation. Part 1 - Publisher
-
Reactive Streams implementations