读了这篇文章《》,写一点自己的感想。
首先,反应式编程这个概念有很多含义,可能指 React JS 代表的前端技术,可能指的是函数式编程。但是,这里要说的是 RxJava 这样技术代表的,基于异步编程和非阻塞 IO 技术的异步编程技术。
虽然 Java 多线程、非阻塞 IO 等技术已经发展了有超过10年的时间(从 Java 1.4 开始),但是现如今在 Java 时间广泛使用的还是同步式的编程模型。代码一行行地执行,虽然稳健,但是一些场景下却显得效率低下。在有很多 IO 调用的场景中,异步编程模型虽然可以充分发挥非阻塞 IO 的威力,但是代码编写起来很负责,对开发人员的技术要求非常高,不是普通开发人员可以完成的。
于是,近些年反应式编程的概念逐渐成熟,相关的模型和技术也涌现出不少。既有像 Netty 这样打造稳健高效的 IO 通信的技术,也有 Akka 这样基于 Actor 模型实现的异步框架。而随着 Java 8 的出现,Stream 编程的概念逐渐成熟。虽然 Java 8 中的 Stream 在异步方面还是显得很薄弱,但是却使 Stream 的概念逐渐普及(当然实际工作中用的还是很有限)。在 Java 9 中,Flow 的出现将使JDK 的并发编程模型和 Stream 模型更好地融合。
当然,开源社区的动作要更快一点,在反应式编程领域,Netflix 的 RxJava、Spring 的 Reactor 和 TypeSafe 的 Akka 可谓是三驾马车。这三个技术逐渐地将 Reactive Programming 这个镜花水月般的技术(当然更主要地是因为自己修道太浅,久久参不透其中的道理)从概念转变为切切实实的技术。在即将发布的 Spring 5 中,Reactor 也将作为核心的技术被引入。
所以,各位同行,是时候认真研究反应式编程技术,从而真正享受到异步编程和非阻塞 IO 所带来的“飞”一般的享受。