Reactive applications are about responding rapidly to events or streams of changes.
The most obvious examples of reactive apps include:
- Web page: clicking a button on a web page and seeing the results instantly
- Mobile App: pressing an area on your mobile app and instantly sseing the results
- Spreadsheet App: updating a cell in a spreadsheet and seeing the data change instantly
- A developers IDE: running a compiler or unit tests on your code and seeing the failing lines of code highlighted in your code editor
The React Manifesto
The interest in React has grown considerably and now they have created the React Manifesto. The most important paragraph for me is:
Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.
Read more and potentially sign the React Manifesto
Reading from a DOM is inefficient
Continuous random updates to the DOM is inefficient
Batch updating the DOM
Clojure Immuatable Data structures
Immutable data structures are really fast when it comes to comparison
Replay from root
Playback all the changes that have been made to your app
? Does this work in the same way as CQRS - does it make sense to make a comparison ?