A core java lib for the functional reactive coding ... JDK only
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Maven Central Codacy Badge

Release Notes

This Lib is working with

  • Java 08 (open/oracle/ibm/zulu/graalvm/shenandoah)
  • Java 09 (open/oracle/ibm/zulu/shenandoah)
  • Java 10 (open/oracle/shenandoah)
  • Java 11 (open/oracle/zulu)

With the beginning of the version 0.7.0 the lib will be shipped as a JDK10/11 version and a JDK8 version (marked with -jdk8 in the version tag)

I am not sure how long I will support JDK8 parallel to the JDK11 version. As long, as there are not big changes, this should be available.


This release we will increase test coverage and documentation. The basic structures and functions are in production used since longer time. Adding Apache Lic header to all files


  • parent pom update - version updates
  • added docker based deploy scripts


  • switched to new version numbers format To make search/replace easier, I started with a new version format. 00.07.04-RPM ( -SNAPSHOT). The x.y.z is used in the same way, as before, but added RPM and leading zeros to make this format different from others. With this it is less possible to mix/change version numbers from other dependencies. A 0.7.4 could be used from different dependencies. ;-)


  • dependency updates
  • added CompletableFutureQueue<T, N> thenCombineAsyncFromArray(Function<R, N>[] nextTransformations)


  • bug fix for modules-info.java

0.7.1 - DONT USED THIS VERSION !! broken module-info.java

  • activated JIGSAW
  • updated to rapidpm-dependencies 4.0.2

0.7.0 && 0.7.0-JDK8-SNAPSHOT

  • started with JDK10/11 support
  • using JDK11 for development and JDK10 for deployment


  • latest JDK8 only version! - switching to JDK10/11 -- JDK8 model


  • Added docker scripts for cross JDK compiles
  • updates parent versions
  • deactivated nexus mirror for drone
  • deactivated orig IBM JDK 8/9 Docker images


This release is a maintenance release only, no new functionality

  • switched to new dependencies version 0.6.3
    • this includes the lic header plugin
    • version updates
    • minimized profiles
    • removed indirect dependency to old nexus
  • updated all file headers


  • added CheckedTriFunction<T1, T2, T3, R> extends TriFunction<T1, T2, T3, Result<R>>
  • typo unCurryBifunction -> unCurryBiFunction
  • typo unCurryTrifunction -> unCurryTriFunction
  • curry / un-curry Checked Functions Transformations
    • curryCheckedBiFunction() - Function<CheckedBiFunction<A, B, R>, Function<A, CheckedFunction<B, R>>>
    • unCurryCheckedBiFunction() - Function<Function<A, CheckedFunction<B, R>>, CheckedBiFunction<A, B, R>>
    • curryCheckedTriFunction() - Function< CheckedTriFunction<A, B, C, R>, Function<A, Function<B, CheckedFunction<C, R>>>>
    • unCurryCheckedTriFunction() - Function< Function<A, Function<B, CheckedFunction<C, R>>>, CheckedTriFunction<A, B, C, R>>


  • extend Result with a fluent API
    • void ifFailed -> Result ifFailed
    • void ifPresent -> Result ifPresent
    • void ifAbsent -> Result ifAbsent


  • renamed Tripel (german) to Triple (en)
  • pitest is working with junit5 now


  • Result added void ifFailed(Consumer<String> failed);
  • switched to jUnit5
  • updated parent pom to 3.5.7


  • Result added <U> Result<U> asFailure()
  • Result added <U> Result<U> flatMap(Function<T, Result<U>> mapper)
  • ExceptionFunctions.message() extended exception message with Exception Classname
  • added CompletableFutureQueue


  • ExceptionFunctions added Function<Exception, String> message()
  • ExceptionFunctions added Function<Exception, Stream<StackTraceElement>> toStackTraceStream()
  • added Sext and Sept data-classes


  • added model.serial pkg with Data classes only for extends Serializable types
  • Transformations
    • curry / unCurry - BiFunction / TriFunction
  • StreamFunctions added <T> Function<Predicate<T>, Function<Stream<T>, Stream<T>>> streamFilter()
  • Result.ofNullable
  • Result renamed bind(Consumer<T> success, Consumer<String> failure) to ifPresentOrElse(Consumer<T> success, Consumer<String> failure)
  • Result added JDK9 signature ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
  • Result added JDK9 signature Stream<T> stream()
  • Result added Result<T> or(Supplier<? extends Result<? extends T>> supplier)
  • Result added void ifAbsent(Runnable action)
  • Result added <U> Result<U> map(Function<? super T, ? extends U> mapper)


  • added Result.thenCombine
  • added Result.thenCombineAsync
  • added CheckedBiFunction


  • added CheckedPredicate


  • basic Datastructures like Pair, Triple, Quad
  • added fromOptional and toOptional to the class Result
  • added CheckedFunction , CheckedConsumer and CheckedSupplier
  • extracted TriFunction from Memoizer to pkg functions
  • added QuadFunction
  • added StringFunctions
  • added Transformations
  • added StringFunctions
  • ported Strman-java to functional style