RxJava 起源
Rx 诞生的起因是 2005 年 10 月 28 日,微软首席架构师 Ray Ozzie 的一封员工内部邮件,提醒大家复杂性设计带来的危害。(在当时复杂性可能很流行吧,大家觉得越复杂的东西越厉害)。这提醒了 Rx 发明者想要去发明一种编程模型,来构建大规模异步和数据密集型的互联网服务架构。
经过两年的探索尝试,2007 年夏,Rx 发明者在对 Iterable/Iterator 的处理上得到了一对表示异步事件流的接口(这个估计就是后面的核心 Observable, Observer)以及一些操作符。
又过了两年的编程实践,2009 年冬,Rx 发明者推出了 Rx.NET。随后又尝试了 JavaScript, C++, Ruby, Object-C 等等。
后来微软的一位员工 Jafar Husain,在 2011 年去了 Netflix(嗯,就是出品很多好看美剧的那家公司),他将 Rx 技术带去了那里。Netflix 里有位做中间层 API 的大佬叫 本·克里斯滕森,也是书的作者之一,他将 Rx 技术引入到了工作中,因为中间层 API 用的是 Java,所以 RxJava 正式在 2012 年开始起步,2013 年初在 GitHub 开源。
另一个分支是,微软的另一位员工 Paul Betts,他去了 GitHub,促成了 ReactiveCocoa 的产生,这个是针对 Object-C 的 Rx 技术。
随后 Rx 发明者也从微软走了,开始自己干,并继续推进着 Rx 技术,使 Rx 标准化以异步实时的功能处理数据流。
2016 年起 Rx 开始流行起来,并得到很多厂牌的支持,RxAndroid 也是这时的一个分支。后来 JavaScript 社区太喜欢 RxJS 了,顺带维护了 ReactiveX 的官网。
RxJava 的诞生原因是起初作者想要友好的解决并发和异步网路请求问题,随着 Rx 技术的不断理解和掌握,发现将这项技术运用在 Java 上能更优雅,有效的处理这类问题。于是 RxJava 就这么来了。但 RxJava 也做了很多的本地化,例如 Subscriber,回压,JVM 的多语言支持等。
在 RxJava 发展的这些年,得到了很多支持,以至于到现在已经出了第三个版本了,并且每个版本还有还是独立维护的,后面将从第一个版本开始,逐个版本进行了解。
参考内容
摘自「RxJava反应式编程」