Building this Project

requirements

  • maven 3

build

mvn clean install

Troubleshooting
  • if you have troubles with failing Unittests, e.g. you are working offline or your internet connection is quite slow or unreliable:
    -> in WikiService you can enable mockmode globally by setting MOCKMODE = true

RxJava

getting started / DOKU

RxJava 2 update

https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0

RxJava 1.x Timeline
  • June 1, 2017 - feature freeze (no new operators), only bugfixes
  • March 31, 2018 - end of life, no further development
important changes regarding upgrading from Rxjava 1.x
new features

Reactor

getting started / DOKU

Reactor (3.0.5.RELEASE) vs. RxJava 2 (2.0.6)

  • Java:
    - Reactor requires Java 8
    - RxJava requires Java 6
  • Dependencies:
    - Reactor has reactive-streams, jsr305 (optional) and slf4j-api (optional) as dependencies
    - RxJava has only reactive-streams as a dependency
  • Footprint (without dependencies):
    - Reactor: 1,1 MB
    - RxJava: 2.1 MB
  • Debugging:
    - Reactor has a nice debugging feature (https://projectreactor.io/docs/core/release/reference/docs/index.html#_reading_a_stack_trace_in_debug_mode)
    - RxJava 2 has no direct support, but brings the basics to build debugging features (https://github.com/ReactiveX/RxJava/wiki/Plugins). For 1.x (maybe works also on 2.x, but not tested) exists an (outdated?) debugging module (https://github.com/ReactiveX/RxJavaDebug)
  • Complexity:
    - Reactor is a bit smaller and has no "legacy" stuff like RxJava.
    - RxJava 2 is a bit more complex, regarding RxJava 1.x
  • "Datatypes":
    - Reactor has just Mono(0-1) and Flux (0..n)
    - RxJava has Single (1), Maybe (0-1), Completable (0), Observable (0-n, no backpressure) and Flowable (0-n, backpressure)
  • Documentation (March 2017)
    - Reactor has good, solid documentation with some TODO's/missing parts for advanced features
    - RxJava 2's documentation is not fully updated from 1.x to 2.x, but 1.x's documentation is great
  • Testing:
    both have more or less equal testing support
  • Operators:
    no relevant difference, both have all you need. Nice is that both have nearly the same signatures, so migration is quite simple and straight foreword.
  • Performance (akarnokd/akarnokd-misc#2):
    - Reactor is generally 10-50% better in a Java 8 environment due to more inlined nature and even fewer allocations than RxJava 2
    - RxJava 2.x is generally better in terms of performance and memory utilization than 1.x; most lower performing components can be optimized further
  • Interoperability:
    both use the reactive-streams API and it's no problem to mix both libraries, e.g use a Flowable in an Reactor operation and vice versa, convert between Flowable and Flux or use an Subscriber Impl from the other library.
  • ...:
    - Reactor
    - RxJava

Spring reactive web

create a Microservice
Security / Context / ThreadLocal
Spring Data reactive