本书首先讲解了函数式响应式编程的概念,包括Observables、Subject、Processor 等,以及RxJava的优点和用途。然后讲解了RxJava 中必不可少的操作符,包括创建操作符、变换操作符、过滤操作符、条件操作符、布尔操作符、合并操作符和连接操作符。接着详细介绍了RxJava 的线程操作及线程模型,用大量的实例,讲解了RxJava 在Android 上和Java 后端的使用。最后,介绍了Java 8 的函数式编程的特性,以及对未来编程方式的展望。
本书适合Android 开发工程师、Java 后端开发工程师,以及对函数响应式编程、感兴趣的IT 从
业人员。
本书通过完整的体系,深入浅出地讲解了RxJava 2.x的方方面面,并通过案例详细讲解了如何解决一些生产环境的实战问题。
响应式编程正变得越来越流行,越来越多的App 都在使用Rx 相关的技术。在Java 后端,Spring 5 也开始支持响应式编程。在开源的技术社区里,Rx、响应式编程、函数式编程都是热门话题。
本书作者结合自身的学习以及使用情况,尽可能使用通俗易懂的讲解方式带领大家学习RxJava。同时,本书还附有丰富的例子,从Android 开发到Java 后端的开发,相信能够让大家感受到RxJava 的魅力。
沈哲,计算机软件与理论硕士,负责魔窗SDK的架构和研发,主要包括实现deep link(deferred deep link)、移动端原生广告、信息流广告、SDK安全、对第三方框架的裁剪,等等。保障了魔窗SDK多年的线上稳定运行。
超过8年的移动开发经验,负责过京东到家上海的移动团队,全程参与今夜酒店特价App的开发,Decarta Map SDK的开发,参与过格瓦拉App的开发。
多年的服务端开发经验,负责过京东旅行邮轮业务部门的后端团队。
熟悉函数响应式编程,了解计算机视觉。目前关注分布式账本、区块链经济。
前 言
编写这本书的目的
笔者从2015 年开始关注RxJava 以及响应式编程,当时网上的资料很少。三年后的今
天,我们可以看到越来越多的App 都在使用Rx 相关的技术。在Java 后端,Spring 5 也开
始支持响应式编程。在开源的技术社区里,Rx、响应式编程、函数式编程都是热门话题。
我们公司开发的App,笔者也会强制大家使用RxJava 或者RxSwfit。本书通过完整的体系
介绍了RxJava 的方方面面。
对于不了解响应式编程的开发者,RxJava 的入门可能会有一些难度。笔者结合自身的
学习以及使用情况,尽可能使用通俗易懂的讲解方式带领大家学习RxJava。同时,本书还附
有丰富的例子,从Android 开发到Java 后端的开发,相信能够让大家感受到RxJava 的魅力。
读者对象
1)Android 开发工程师。
2)Java 后端开发工程师。
3)对函数式编程、响应式编程感兴趣的IT 从业人员。
如何阅读本书
本书共分为18 章。
第1 章讲述了RxJava 的来龙去脉,以及什么是响应式编程、什么是函数式编程。
第2 章至第7 章讲述了RxJava 的基础概念,以及RxJava 常用的操作符。
第8 章至第10 章为RxJava 的高级部分。
第11 章至第12 章为RxAndroid 的使用篇,介绍了常用的RxBinding、Retrofit 等框架。
第13 章至第15 章为RxJava 的实战篇,介绍了如何实现一个基于RxJava 的Event Bus
框架,以及Spring Boot 如何与RxJava 相结合使用。
第16 章至第18 章介绍了Java 8 函数式编程的特性和Kotlin,并展望未来。
勘误和支持
本书相关例子的源码都在GitHub 上, 地址: https://github.com/fengzhizi715/
RxJavaInAction。
由于笔者水平有限,编写本书时难免会出现错误或者纰漏,恳请
读者批评指正。读者可以关注笔者的公众号与笔者进行互动。或者通
过邮箱:fengzhizi715@126.com,有关本书的任何问题都可以反馈给笔
者,笔者期待与您的技术交流。
致谢
首先要感谢我的家人,最主要是感谢我的妻子。在写书期间,恰逢儿子的出生,她承
担了绝大部分照顾儿子的责任。
感谢公司的支持与同事的帮助,特别是刘志强帮我整理了很多RxJava 相关的资料,以
及对本书部分章节进行了试读,并提出意见。
感谢www.bsfans.com 罗波同学提供UI 支持。
页面内容多写了一个执行结果 “repeatWhen”
原文是 connect、push和refCount,应该改成connect、publish和refCount
原文:push操作符是用来…,应当是:publish操作符是用来…
这段代码中, connect()无须在观察者订阅之后调用之后也能执行。
上述文字结合代码,表述不通顺
页面多了一个”2.0”标题