smallrye / smallrye-mutiny

An Intuitive Event-Driven Reactive Programming Library for Java
https://smallrye.io/smallrye-mutiny
Apache License 2.0
814 stars 127 forks source link
asynchronous java jvm programming quarkus reactive reactive-extensions reactive-streams streams vertx

Build Status Build status (1.x branch) License Maven Central Javadoc

⚡️ Mutiny, an Intuitive Event-Driven Reactive Programming Library for Java

Mutiny is a modern reactive programming library for Java.

Mutiny provides a simple but powerful asynchronous development model to build reactive applications.

This project is sponsored by Red Hat.

🚀 Overview

Mutiny can be used in any Java application exhibiting asynchrony.

From reactive microservices, data streaming, event processing to API gateways and network utilities, Mutiny is a great fit.

Event-Driven

Mutiny places events at the core of its design. With Mutiny, you observe events, react to them, and create elegant and readable processing pipelines.

💡 A PhD in functional programming is not required.

Navigable

Even with smart code completion, classes with hundred of methods are confusing.

Mutiny provides a navigable and explicit API driving you towards the operator you need.

Non-Blocking I/O

Mutiny is the perfect companion to tame the asynchronous nature of applications with non-blocking I/O.

Declaratively compose operations, transform data, enforce progress, recover from failures and more.

Quarkus and Vert.x native

Mutiny is integrated in Quarkus where every reactive API uses Mutiny, and Eclipse Vert.x clients are made available using Mutiny bindings.

Mutiny is however an independent library that can ultimately be used in any Java application.

Reactive Converters Built-In

Mutiny is based on the Reactive Streams protocol, and so it can be integrated with any other reactive programming library.

In addition, Mutiny offers converters to interact with other popular libraries and Kotlin.

👓 Mutiny workshop examples

You can learn about Mutiny from the documentation and website.

This repository also contains the Mutiny workshop examples that cover the common concerns through self-contained executable JBang scripts.

📦 Build instructions

Mutiny is built with Apache Maven, so all you need is:

./mvnw install

If you want to run a quick build without running tests or generating API docs, then run:

./mvnw -Dquickly
Git branch Versions Baseline Compliance
main 2.x.y (in development) Java 11, java.util.concurrent.Flow Reactive Streams TCK 1.0.4
2.5.x 2.5.y (backports, bug fixes) Java 11, java.util.concurrent.Flow Reactive Streams TCK 1.0.4
1.x 1.x.y (sunset, rare bug fixes) Java 8, Reactive Streams 1.0.4 Reactive Streams TCK 1.0.4

✨ Contributing

See the contributing guidelines

Mutiny is an open project, feel-free to:

👋 Discussions and support

For anything related to the usage of Mutiny in Quarkus, please refer to the Quarkus support

For more general discussions about Mutiny, you can:

🧪 Publications

Julien Ponge, Arthur Navarro, Clément Escoffier, and Frédéric Le Mouël. 2021. Analysing the Performance and Costs of Reactive Programming Libraries in Java. In Proceedings of the 8th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS ’21), October 18, 2021, Chicago, IL, USA. ACM, New York, NY, USA, 10 pages. (PDF)

Stargazers over time

Stargazers over time