Reactive (disambiguation)

Reactive Manifesto

Introduced in 2013, the Reactive Manifesto summarizes the properties a system must fulfill to be considered reactive. The following are the four aspects all reactive systems must fulfill:

  • Responsive — The system responds in a timely manner if at all possible.

  • Resilient — The system stays responsive in the face of failure.

  • Elastic — The system stays responsive under varying workload.

  • Message Driven — Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation and location transparency.

You can read the whole manifesto on ReactiveManifesto.org new tab.

Reactive Principles (and Patterns)

As a companion to the Reactive Manifesto, the Reactive Principles incorporate the ideas, paradigms, methods, and patterns from both Reactive Programming and Reactive Systems into a set of practical principles that software architects and developers can apply in their transformative work.

The eight foundational principles of implementing a distributed system that make an application Reactive are:

  1. Stay Responsive

  2. Accept Uncertainty

  3. Embrace Failure

  4. Assert Autonomy

  5. Tailor Consistency

  6. Decouple Time

  7. Decouple Space

  8. Handle Dynamics

Read all the details (and the patterns) at the Reactive Foundation new tab.

Reactive Systems

A collection of components decoupled in time and connected via message-passing.

A System is a building block of an application, and a Reactive System is one that adheres to the Reactive Principles.

Reactive Programming

Reactive Programming, […​] is a subset of Asynchronous Programming and a paradigm where the availability of new information drives the logic forward rather than having control flow driven by a thread-of-execution.

It supports decomposing the problem into multiple discrete steps where each can be executed in an asynchronous and nonblocking fashion, and then be composed to produce a workflow—possibly unbounded in its inputs or outputs.

Reactive Programming vs Reactive Systems new tab
Jonas Bonér and Viktor Klang

Reactive Streams

Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. This encompasses efforts aimed at runtime environments (JVM and JavaScript) as well as network protocols.

Learn more