三言两语闲聊 Reactive Programming
读了这篇文章《 Notes on Reactive Programming Part I: The Reactive Landscape 》,写一点自己的感想。 首先,反应式编程这个概念有很多含义,可能指 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 的并发编程模型和