https://github.com/pwittchen/java-flow-experiments
Experimenting with Reactive Streams in Java 8 and Java 9. This repository is prepared for my talk "Get ready for java.util.concurrent.Flow!" at JDD 2017 Conference in Kraków, Poland
https://github.com/pwittchen/java-flow-experiments
akka-stream flow java java8 java9 project-reactor reactive-streams rxjava rxjava2
Last synced: 2 months ago
JSON representation
Experimenting with Reactive Streams in Java 8 and Java 9. This repository is prepared for my talk "Get ready for java.util.concurrent.Flow!" at JDD 2017 Conference in Kraków, Poland
- Host: GitHub
- URL: https://github.com/pwittchen/java-flow-experiments
- Owner: pwittchen
- License: apache-2.0
- Created: 2017-07-14T17:39:18.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-16T20:29:12.000Z (about 8 years ago)
- Last Synced: 2025-10-05T13:02:51.178Z (3 months ago)
- Topics: akka-stream, flow, java, java8, java9, project-reactor, reactive-streams, rxjava, rxjava2
- Language: Java
- Homepage:
- Size: 224 KB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# java-flow-experiments
In this repository, I'm experimenting with [Reactive Streams](http://www.reactive-streams.org), 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](http://download.java.net/java/jdk9/docs/api/java/util/concurrent/Flow.html) as well.
This repository is prepared for my talk titled **Get ready for java.util.concurrent.Flow!**
during [JDD](http://jdd.org.pl) 2017 Conference on 03.10.2017 in Kraków, Poland.
Presentation slides
-------------------
Presentation slides are published at:
https://speakerdeck.com/pwittchen/get-ready-for-java-dot-util-dot-concurrent-dot-flow
My blog posts related to JDD conference
------------------------------------
- [JDD 2017 - recap](http://blog.wittchen.biz.pl/jdd-2017-recap/)
- [JDD 2017 - an invitation](http://blog.wittchen.biz.pl/jdd-2017-get-ready-for-java-util-concurrent-flow/)
Java 8 project
--------------
Inside `java8` directory, I'm playing with two implementations of Reactive Streams:
- [RxJava2](https://github.com/ReactiveX/RxJava)
- [Project Reactor](https://projectreactor.io/) (it's going to be included in Spring 5)
- [Akka Stream](https://github.com/akka/akka/tree/master/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`.
Java 9 project
--------------
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](https://github.com/reactive-streams/reactive-streams-jvm) which governs how these implementations much behave.
Git branches
------------
- `master` branch contains code snippets from presentation and exepriments
- `presentation` branch contains code snippets for Java 8 shown during the presentation and empty project in Java 9 for live coding
References
----------
- [Reactive Streams](http://www.reactive-streams.org/)
- [Reactive Streams Specification](https://github.com/reactive-streams/reactive-streams-jvm)
- [Reactive Streams TCK](https://github.com/reactive-streams/reactive-streams-jvm/tree/master/tck) (which all implementations *must* pass)
- [Reactive Manifesto](https://www.reactivemanifesto.org/)
- [Java 9 Reactive Streams](http://www.baeldung.com/java-9-reactive-streams)
- [Reactive Programming with JDK 9 Flow API](https://community.oracle.com/docs/DOC-1006738)
- [Flow Class JavaDoc](http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.html)
- [Java 9 new Features: Reactive Streams](https://aboullaite.me/java-9-new-features-reactive-streams/)
- [Catching up RxJava with Java 9 Flow API](https://medium.com/@teachpendant/catching-up-rxjava-with-java-9-flow-api-b2e19ec40270)
- [Java 9 (Part 5): Flow With the New Reactive Streams, First Look](https://dzone.com/articles/java-9-tutorial-flow-with-the-new-reactive-streams)
- [Java 9 Flow API: asynchronous integer range source](http://akarnokd.blogspot.com/2017/03/java-9-flow-api-asynchronous-integer.html)
- [Mastering own Reactive-Streams implementation. Part 1 - Publisher](https://medium.com/@olehdokuka/mastering-own-reactive-streams-implementation-part-1-publisher-e8eaf928a78c)
- [5 not so obvious things about RxJava](https://medium.com/@jagsaund/5-not-so-obvious-things-about-rxjava-c388bd19efbc)
- Reactive Streams implementations
- [RxJava2](https://github.com/ReactiveX/RxJava)
- [Project Reactor](https://projectreactor.io/)
- [Akka Stream](https://github.com/akka/akka/tree/master/akka-stream)