A Look at Reactive Extensions
Reactive Extensions (Rx) is a Reactive Programming library from Microsoft that's used for building complex asynchronous programs. It models time-varying values and events as observable sequences and is implemented by extending the Observer design pattern.
Its first target platform was .NET, but Netflix has ported Rx to JVM under the name RxJava. Microsoft also develops and maintains a port of Rx to JavaScript called RxJS, which is the tool we used to build the sine wave application. The two ports work a treat for us, since Clojure runs on JVM and ClojureScript in JavaScript environments.
As we saw in Chapter 1, What is Reactive Programming?, Rx is inspired by Functional Reactive Programming but uses different terminology. In FRP, the two main abstractions are behaviors and events. Although the implementation details are different, observable sequences represent events. Rx also provides a behavior-like abstraction through another data type, called BehaviorSubject.
In this chapter, we will cover the following topics:
- Rx's main abstraction: observables
- The duality between iterators and observables
- Creating and manipulating observable sequences