четверг, 1 октября 2015 г.
To understand Reactive — both the programming paradigm and the motivation behind it — it helps to understand the challenges that are faced by developers and companies today compared to the challenges faced only a decade ago.
The two major game changers for developers and companies are:
- Advancements in hardware.
- The Internet.
While “gathering around the campfire to discuss the olden days” is considered to be the lowest form of conversation by some, we need to explore the history of our profession in order to address issues that every developer will soon face.
Why things are different now
There’s a wealth of knowledge at our disposal gained over decades of research in computing. Reactive programming is an attempt to capture that knowledge in order to apply it to a new generation of software.
When I began to learn Java in 1999 while interning at the Canadian Imperial Bank of Commerce:
- The Internet had 280 million users.
- J2EE was still a dream in the hearts and minds of Sun Microsystems.
- Online banking was in its infancy — 5 years old, give or take.
Even back in 1999 I began to encounter problems of concurrency. The solutions involved threads and locks, complicated things to get right even for experienced developers. The main selling feature of Java was the ability to “write once, run anywhere”, but anywhere was in the context of which operating system the JVM was installed on, not concepts like the cloud or the massive number of concurrent connections that we’re designing for in the age of the Internet of Things.