RxJava反应式编程
上QQ阅读APP看书,第一时间看更新

译者序

随着Spring 5引入对反应式编程的支持,反应式编程模式在Java领域中也得到了前所未有的关注。其实在其他语言中,反应式编程的理念出现和应用得更早一些,比如Angular很早就将RxJS纳入HTTP请求等使用场景了。

Java静态化的特点,导致一些函数式或回调式的编程模式很难便利地应用到Java程序员日常的开发中。正是在这样的背景下,RxJava、Reactor等反应式编程框架得到了社区和广大开发人员的青睐。RxJava广泛应用于Android应用程序的开发,借助RxJava开发的Hystrix更是成为了现代微服务应用程序的标准配置。反应式编程的特点在于语法简洁、运行高效、性能开销可控,未来将是一种主流的开发模式。

就目前来看,反应式编程在企业级应用中的直接应用还比较少。主要的困难有两个:一个是关系数据库的访问,另一个是网络请求的调用。这在很大程度上是因为JDBC和HTTP本身具有阻塞式的特点。不过情况正在改变:R2DBC项目致力于将反应式编程API应用到关系型数据存储中,而RSocket项目则致力于提供一个符合反应式流语义的应用层协议。相信随着这些项目在技术和社区方面的不断成熟,反应式编程在开发人员的工具箱中会占据越来越重要的地位。

本书全面阐述了反应式编程的理念,以及这些理念是如何在RxJava中实现的。尤为难能可贵的是,除了从头构建完整的反应式应用程序之外,作者还细致阐述了如何向已有的应用程序逐步引入RxJava框架。

稍微美中不足的是本书撰写得较早,是基于RxJava 1.x版本的。虽然1.x版本非常成熟,而且得到了广泛的应用,但是现在的2.x版本是基于反应式流规范重新编写的。不过,从RxJava 1.x到RxJava 2.x,核心的设计理念是一脉相承的。为了便于读者实现从RxJava 1.x到RxJava 2.x的迁移,经允许,我翻译了RxJava项目领导者Dávid Karnok的两篇关于RxJava 2.0的文章,并作为本书的附录C,供读者参考。除此之外,我和《反应式设计模式》一书的译者何品分叉(fork)编写了本书的源代码,会逐步将本书中较为独立的章节的源码升级为RxJava 2.0。读者可以参见https://github.com/ReactivePlatform/Reactive-Programming-With-RxJava,也欢迎各位读者一起参与这项工作。为了本书的完整性,书中的源代码不再进行单独调整。

在本书的翻译过程中我得到了何品的很多帮助和指导,在此表示感谢。同时感谢图灵公司的朱巍老师。另外,还要感谢我的家人,他们包容并且支持我把大量的业余时间都投入到了本书的翻译之中。

虽然在本书的翻译过程中我花费了较长的时间去斟酌和修改,但是限于我的知识水平,难免会有纰漏,欢迎读者指正。读者可以通过levinzhang1981@126.com或者微信levinzhang1981联系我。

希望这本书对读者有用,祝阅读愉快!