本书几乎涵盖了Kotlin所有的特性,包括函数特性、面向对象特性、元编程、DSL、跨平台开发、协程、Flow、RxJava、Jetpack等,内容非常丰富。
本书还介绍了使用Kotlin开发的多个实例,如移动端实战、服务端实战、响应式开发实战等,这些例子是对本书知识的综合运用,对使用Kotlin进行开发的读者具备较大的参考价值。
本书是编者系统学习Kotlin和多年实战经验的积累和总结,通过非常简易的代码讲解Kotlin语言的各种特性,代码实例不会涉及过于抽象的业务场景,但会通过具体代码实例对Kotlin语言背后的设计思想和原理进行详细分析,力图使读者通过实际操作快速上手和深入理解Kotlin语言的相关知识。
本书面向所有希望从事 Android 开发和服务端开发的IT从业人员,希望读者通过阅读本书,使用Kotlin开发应用程序的技能更上一层楼。
《Kotlin进阶实战》详细介绍了Kotlin语言方方面面的特性,包括各种类型的函数,贯彻该书始终的Lambda表达式,有别于Java的委托、泛型,灵活、简洁的DSL,常用的语法糖,相比线程更加轻量级的协程,参考RxJava实现的Flow,等等。该书还提供了大量涉及移动端、服务端甚至桌面端的案例,这些案例都是编者使用Kotlin之后的实践和心得,同时包含很多编者封装的library,供读者参考、借鉴和使用。
《Kotlin进阶实战》适合有一定Kotlin语法基础的读者使用,尤其适合移动端和服务端的开发人员使用,也可以用作大专院校和培训机构的教学参考书。
目 录
第1章 认识Kotlin 1
1.1 Kotlin简介 1
1.2 Kotlin的发展 2
1.3 总结 3
第2章 Kotlin的函数与类 4
2.1 函数的基本概念 4
2.2 Kotlin的类(一) 11
2.3 Kotlin的类(二) 18
2.4 总结 24
第3章 Kotlin的函数式编程 25
3.1 函数式编程与高阶函数 25
3.2 Lambda表达式 29
3.3 集合、序列和Java中的流 38
3.4 总结 41
第4章 内联函数与扩展函数 42
4.1 内联函数 42
4.2 内联属性 48
4.3 扩展函数 48
4.4 扩展属性 56
4.5 总结 60
第5章 委托 61
5.1 委托介绍 61
5.2 Kotlin的委托模式和委托属性 64
5.3 lateinit和by lazy 69
5.4 总结 73
第6章 泛型 74
6.1 类型擦除 74
6.2 型变 80
6.3 泛型约束、类型投影与星号投影 83
6.4 总结 86
第7章 元编程 87
7.1 元编程 87
7.2 Kotlin反射概述 88
7.3 Java反射和Kotlin反射(上) 90
7.4 Java反射和Kotlin反射(下) 96
7.5 总结 99
第8章 DSL的构建 100
8.1 DSL介绍 100
8.2 构建一个DSL的多种方式 101
8.3 总结 108
第9章 常用语法糖与设计模式 110
9.1 运算符重载 110
9.2 中缀表达式 112
9.3 作用域函数 114
9.4 Contract契约 118
9.5 在data class中使用MapStruct 122
9.6 更好地使用设计模式 126
9.7 总结 130
第10章 跨平台开发 131
10.1 跨平台的简单介绍 131
10.2 利用Ktor-Client实现跨平台网络请求 132
10.3 总结 142
第11章 协程及其应用 143
11.1 协程的基本概念 143
11.2 Coroutine builders 149
11.3 挂起函数 152
11.4 协程的上下文和调度 156
11.5 协程的作用域 CoroutineScope 162
11.6 Channel机制 164
11.7 总结 170
第12章 Flow的基本使用 171
12.1 Flow的使用 171
12.2 Flow和RxJava 177
12.3 Flow的异常处理 182
12.4 Flow的线程操作 185
12.5 Flow其他的操作符 189
12.6 总结 195
第13章 RxJava的新特性及常用操作符 198
13.1 RxJava入门 198
13.2 RxJava 3新特性描述 204
13.3 常用操作符讲解 207
13.4 总结 227
第14章 RxJava的核心机制 229
14.1 ObservableSource、Observable、Observer的同流合污 229
14.2 恐怖的Function机制 230
14.3 线程的决策者Scheduler 231
14.4 Observeable五兄弟的差异性 235
14.5 背压策略 241
14.6 总结 243
第15章 Jetpack 244
15.1 Jetpack介绍 244
15.2 Lifecycle 249
15.3 ViewModel 254
15.4 LiveData 261
15.5 Room的用法 267
15.6 Navigation用法详解 276
15.7 总结 287
第16章 Android实战 288
16.1 构建一个日志框架 288
16.2 网络诊断工具 297
16.3 使用Netty构建一个在Android上运行的Web服务器 304
16.4 实现协程版本的EventBus 313
16.5 总结 322
第17章 响应式开发实战 323
17.1 封装一个基于RxJava的任务框架RxTask 323
17.2 基于Kotlin、RxJava实现的有限状态机 339
17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用 353
17.4 总结 361
第18章 服务端实战 362
18.1 使用Ktor快速开发Web项目 362
18.2 使用WebFlux + R2DBC开发Web项目 369
18.3 使用NetDiscovery开发网络爬虫 376
18.4 实现智能硬件的远程控制系统(上) 388
18.5 实现智能硬件的远程控制系统(下) 397
18.6 总结 408
★在看到沈哲兄这本《Kotlin进阶实战》的时候,其实市面上关于Kotlin的文档资料有不少,但很少有书能将一些细节特性与Java细细对比,与其说是对比,我更觉得作者是想引导我们将以前的经验过渡到Kotlin上来,同时对Java和Kotlin的一些特性有进一步的了解,更关键的是,这本书紧紧围绕着开发过程中经常使用的技术要点来讲解,让我觉得真的很实用。
——Java编程方法论系列图书作者 知秋
★Kotlin是-门充满活力、富有创造力的语言,加上支持多平台,使其具有很大的应用潜力。可惜开发者往往仅注意到语法糖,容易忽略Kotlin的核心设计精神,变成只是用Java思维来写Kotlin,非常可惜。沈老师作为Kotlin早期使用者,对如何将Kotlin应用在服务端、移动端有非常务实的经验。《Kotlin进阶实战》一书讲解了Kotlin的各种进阶主题,如DSL.协程、Flow等皆有专门的章节,另外在跨平台开发、Android.服务端也有具体的示例,可以说是非常贴心。作者的贴心就是读者的福利,相信各位读者看完该书后,能够大幅提升Kotlin功力。
——JetBrains技术布道师 范圣佑
★我认识沈哲快10年了,从最初两个人一起做CV4J的开源项目开始,那个时候Kotlin才刚刚出来,他就在使用Kotlin语口开发Android应用,到如今看到他把对Kotlon技术的积累与沉淀整理成一本书付梓出版,作为朋友我替他高兴。他是一个对技术特别较真的人,一直秉持着对技术的热情,孜孜以求,精益求精,这本书也是他仔细打磨的上乘之作,相信读者读完之后一定会觉得我此言不虚,感同身受。
——公众号OpenCV学堂、图书作者、OpenVINO中文社区创始成员、inteI网联网创新大使 贾志刚
★Kotlin是一门非常酷的语言,它不仅适用于移动端开发,也适用于服务端开发。该书由浅入深,不仅介绍了Kotlin丰富的语法糖、函数式编程、协程等知识,还通过案例讲解了大量实战场景。对于想系统学习Kotlin的读者,该书是Kotlin编程的必读经典。
——《高可用可伸缩微服务架构》《Spring 5设计模式》联合作者 梁桂钊
★Kotlin是由JetBrains开发的针对JVM、Android和浏览器的静态编程语言,Kotlin简单务实,语法简洁强大,安全且表达力强,极富生产力。该书从内容结构上非常注重Kotlin基础知识的实用性和可操作性,整体结构的描述提纲挈领,内容讲解由浅入深、循序渐进,遵循和尊重阅读者对编程语言学习的认知规律。
——阿里巴巴技术专家,Apache Sharding Sphere&RocketMQ Committer,负责实时计算引擎开发 蒋晓峰