MetaZen provides software architects and designers with a way to defer some of the more important architectural decisions for a project.
Curiously, by deferring these decisions, we make them less important, and as a result the truly important decisions receive the proper attention they deserve.
This next series of articles are about one of these decisions… are you going to utilize
reactive components in your design?
In order to explore the answer to this question, first one must be able to answer another question:
What is Reactive?
My favorite implementation of a reactive library is the ReactiveX implementation.
Although the project was originally started by Microsoft, don't let that influence your opinion. Many companies and projects such as Couchbase, Trello, GitHub, Netflix, etc use
ReactiveX, and there are tons of implementations in many different languages, so more than likely no matter the language you're using, there's probably a library you can use.
If you're familiar with
Angular, you'll probably be familiar with
RxJS, but don't be too sure of the depth and breadth of your knowledge because
Angular's use of
RxJS is minimal… almost to the point where I'm not sure the
Angular developers truly grok
Hopefully this next series of articles will help you fully understand what it is, how to use it, and more importantly, why you would want to use it.
From the front page of
ReactiveX is a combination of the best ideas from the
I would change
functional programming to
declarative programming, but otherwise it sounds like a good description.
Digging further, from the Gang of Four design patterns book:
Observer Define a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.
There are a couple of inconsistencies, such as functional programming does not have state, and I would argue that within
ReactiveX, it's sometimes better to look at it in terms of a
value changing, not specifically
When I talk about
Reactive, I'm talking about the combination of generic observables, iterators, and declarative programming design patterns, but sometimes I will mistakenly use the names
RxJS interchangeably, with the former being the generic pattern and the next two being increasingly more specific implementations.