functional-reactive
Made in the European Union
About

A small library,
maintained for over a decade.

functional-reactive is a focused, nano-sized library that brings functional and reactive programming primitives to Core Java. It is built and maintained by one engineer — independently, in the European Union, under EUPL 1.2.

Sven Ruppert — author and maintainer of functional-reactive
Sven Ruppert
Author & maintainer

Who maintains this

Hi, I'm Sven Ruppert. I started functional-reactive in 2013 as a small set of helpers I kept rewriting from project to project — a Result type with a reason for failure, a way to lift throwing methods out of try/catch, a few tuples that worked better than ad-hoc Object[]. Over the years it grew into the library you see now.

I've been writing Java in production for over 20 years, across enterprise platforms, regulated industries, and a long stint at JFrog as a Developer Advocate before going independent. Today I split my time between this library, jSentinel (a Core-Java security library), consulting engagements, and a YouTube channel where I publish deep-dives on functional Java and the JVM.

I believe in tools that respect the user: small surface area, no magic, no surprise behaviour, and licences that don't pivot. That's why functional-reactive ships under EUPL 1.2, has zero runtime dependencies beyond the JDK, and stays compatible with JDK 8 as the baseline.

Principles

What the library tries to be

Small surface area

Every public class is on one page in the docs. You can read the entire library in an afternoon. If a feature doesn't earn its keep, it doesn't go in.

JDK only, no runtime deps

Adding this library to your project doesn't pull in 30 transitive dependencies. Tests use Hamcrest; the production code uses nothing but the JDK.

JDK 8 baseline

Many production codebases still target JDK 8. Records, sealed classes and pattern matching are great — but they don't gate basic usability. A module-info.java is included for JPMS users on JDK 9+.

License that stays

EUPL 1.2. Permanently. No source-available pivots, no rug-pulls. If sponsorship ends, the licence stays.

Elsewhere

Other projects & channels

Get in touch

Questions, ideas, problems?

For library-specific issues, open a ticket on GitHub. For consulting or sponsorship, drop me an email.