什么是科特林?
Kotlin 是 JetBrains 创建的基于 JVM 的编程语言,那么 JetBrains 是什么? 相信很多Java程序员都用过IntelliJ IDEA,这个伟大的Java IDE(集成开发环境)是JetBrains的杰作。 如果您还没有听说过或使用过 IntelliJ IDE,那么这也没有多大关系。 相信读过本书的读者或多或少都对Android有所了解。 Android 官方推荐的 IDE 是 Android Studio,简称 AS。 该IDE是基于IntelliJ IDEA社区版开发的。 JetBrains 不仅有 IntelliJ IDEA 作为产品,Kotlin 也是 JetBrains 这种编程语言的产品。 这种编程语言运行在 JVM 上,即 Kotlin 编译器会将 Kotlin 源代码编译成 Java 字节代码(Java Byte Code),可以直接在 JVM 上运行。 从这一点可以看出,在技术层面上,Java和Kotlin处于同一水平,都是以Java Byte Code的形式运行在JVM上。 当然,Kotlin 编译器也可以将 Kotlin 源代码编译为 JavaScript 代码,以便在没有 JVM 的情况下运行。 未来,Kotlin 编译器还可以将 Kotlin 源代码编译为本地代码,与任何虚拟机完全分离。 也就是说,Kotlin 相对于 Java 的优势之一就是多目标编译语言,而 Java 只能编译生成 Java Byte Code(.class 文件)。
第1章 课程导学与准备工作2 节 | 8分钟
在这一章,我们将为大家从整体呈现课程的讲法思路、内容编排,帮助大家做好课程的学习准备。希望大家都能通过这门课程,学有所成,学有所归。
- 图文:1-1 课前必读(不看会错过一个亿)
- 视频:1-2 课程介绍及学习指南 (07:36)试看
-
第2章 开发环境搭建7 节 | 65分钟
在这一章,我们将为大家展示如何在主流操作系统(Mac OSX、Ubuntu、Windows)上使用命令行、Eclipse、IntelliJ、Android Studio 开发 Kotlin 程序,并对 Gradle 的使用以及常见问题做介绍。
- 视频:2-1 Kotlin 开发环境配置 (13:08)
- 视频:2-2 Kotlin 开发环境配置 – Eclipse (02:39)
- 视频:2-3 Kotlin 开发环境配置 – IntelliJ (11:00)试看
- 视频:2-4 Kotlin 开发环境配置 – Android Studio (07:56)
- 视频:2-5 Gradle 工程简介 (15:58)
- 视频:2-6 Gradle 常见问题解决 (10:31)
- 视频:2-7 本章小结 (03:06)
-
第3章 内置类型7 节 | 99分钟
在这一章,我们将为大家介绍 Kotlin 标准库中原生支持的类型,这包括大家熟悉的数值类型、字符串、集合框架以及新晋『一等公民』函数类型等,其中函数类型的知识尤其重要。
- 视频:3-1 基本类型 (19:53)
- 视频:3-2 数组 (15:20)
- 视频:3-3 区间 (10:03)
- 视频:3-4 集合框架 (13:43)
- 视频:3-5 函数 (21:23)试看
- 视频:3-6 案例:四则计算器 (11:53)
- 视频:3-7 本章小结 (06:35)
-
第4章 类型初步7 节 | 81分钟
在这一章,我们将为大家讲解如何自定义类型,如何为任意类型定义扩展成员,以及类型空安全和智能类型转换等知识,学完这一章,大家就可以按照 Java 的方式来编写 Kotlin 程序了。
- 视频:4-1 类和接口 (23:04)
- 视频:4-2 扩展方法 (12:14)
- 视频:4-3 空类型安全 (14:59)
- 视频:4-4 智能类型转换 (07:52)
- 视频:4-5 案例:使用 Retrofit 发送网络请求 (17:10)
- 视频:4-6 本章小结 (04:59)
- 作业:4-7 关于空类型安全
-
第5章 表达式7 节 | 61分钟
在这一章,我们将为大家讲解 Kotlin 当中比较有特色的表达式。与 Java 不同的是,Kotlin 当中 if 语句、try catch 以及类似 switch 的 when 语句都是表达式,它们与 Lambda 表达式一同在构建 Kotlin 风格的程序设计中起到了至关重要的作用。…
- 视频:5-1 常量和变量 (06:13)
- 视频:5-2 分支表达式 (04:04)
- 视频:5-3 运算符与中缀表达式 (14:38)
- 视频:5-4 Lambda 表达式 (11:14)
- 视频:5-5 案例:为 Person 实现 equals 和 hashCode (06:42)
- 视频:5-6 案例:为 String 实现四则运算 (13:11)
- 视频:5-7 本章小结 (04:01)
-
第6章 函数进阶10 节 | 106分钟
在这一章,我们将为大家剖析函数类型的本质,也将带着大家充分实践高阶函数,深度体验函数为 Kotlin 注入的活力。
- 视频:6-1 高阶函数 (08:20)
- 视频:6-2 内联函数 (12:10)
- 视频:6-3 几个有用的高阶函数 (06:47)
- 视频:6-4 集合变换与序列 (20:31)
- 视频:6-5 SAM 转换 (15:40)
- 视频:6-6 案例:统计字符个数 (08:25)
- 视频:6-7 案例:HTML DSL (18:41)
- 视频:6-8 实践:体验 Gradle Kotlin DSL (10:58)
- 视频:6-9 本章小结 (04:14)
- 作业:6-10 函数也是一种类型,这该怎么理解?
-
第7章 类型进阶15 节 | 165分钟
在这一章,我们再回过来对 Kotlin 的类型做进一步细致的探索,介绍类成员的可见性,探讨类成员初始化的最佳实践,讲解重量级特性对象代理,并在本章的后半部分逐一介绍 Kotlin 支持的高级类型。
- 视频:7-1 类的构造器 (13:54)
- 视频:7-2 类与成员的可见性 (14:48)
- 视频:7-3 类属性的延迟初始化 (07:43)
- 视频:7-4 代理 Delegate (16:01)
- 视频:7-5 案例:使用属性代理读写 Properties (11:29)
- 视频:7-6 单例 object (06:45)
- 视频:7-7 内部类 (09:53)
- 视频:7-8 数据类 data class (17:14)
- 视频:7-9 枚举类 enum class (07:55)
- 视频:7-10 密封类 sealed class (07:57)
- 视频:7-11 内联类 inline class (13:01)
- 视频:7-12 案例:数据类的 Json 序列化 (14:33)
- 视频:7-13 案例:递归整型列表的简单实现 (15:37)
- 视频:7-14 本章小结 (08:03)
- 作业:7-15 Kotlin中的可见性
-
第8章 Kotlin泛型10 节 | 101分钟
在这一章,我们将为大家介绍泛型。面向对象让我们对事物的抽象插上了翅膀,而泛型则让我们能够进一步提升自己对类型的认识,实现在类型层面的抽象。
- 视频:8-1 泛型的基本概念 (09:03)
- 视频:8-2 泛型约束 (04:52)
- 视频:8-3 泛型的型变 (14:04)
- 视频:8-4 UnsafeVariance (05:35)
- 视频:8-5 星投影 Start Projection (14:07)
- 视频:8-6 泛型的实现类型与内联特化 (13:50)
- 视频:8-7 案例:模拟 Self Type (09:04)
- 视频:8-8 案例:基于泛型实现 Model 实例的注入 (20:46)
- 视频:8-9 本章小结 (08:50)
- 作业:8-10 泛型的型变的概念有什么实际意义?
-
第9章 Kotlin反射7 节 | 95分钟
在这一章,我们将为大家用丰富的案例介绍反射这一让人又爱又恨的高级特性,反射不仅能够让我们在运行时读取类型相关的元信息,实现更强大的功能,还能对于固定模式的逻辑进行抽象,减少模板代码。
- 视频:9-1 反射的基本概念 (16:55)
- 视频:9-2 实践:获取泛型实参 (13:15)
- 视频:9-3 案例:为数据类实现 DeepCopy (13:09)
- 视频:9-4 案例:Model 映射 (06:56)
- 视频:9-5 案例:可释放对象引用的不可空类型 (13:05)
- 视频:9-6 案例:插件化加载类 (24:22)
- 视频:9-7 本章小结 (06:50)
-
第10章 Kotlin注解7 节 | 107分钟
在这一章,我们将同样以案例为主,来为大家展示注解在编译期、运行时的各种使用场景,注解与反射结合使用还能有更好的效果。
- 视频:10-1 注解的基本概念 (08:30)
- 视频:10-2 常见内置注解的使用 (11:05)
- 视频:10-3 案例:仿 Retrofit 反射读取注解请求网络 (28:49)
- 视频:10-4 案例:注解加持反射版 Model 映射 (17:27)
- 视频:10-5 案例:注解处理器版 Model 映射 (25:14)
- 视频:10-6 拓展:Kotlin 编译器插件介绍 (09:05)
- 视频:10-7 本章小结 (06:20)
-
第11章 协程初步13 节 | 207分钟
在这一章,我们将横向对比几个主流的语言的协程实现来深入协程的概念,进而介绍 Kotlin 协程的基本要素,并通过运用这些基本要素来实现主流语言的协程 API (包括 Generator、Async/Await等等)来加深对协程的理解和认识。
- 图文:11-1 Kotlin 协程学习指引
- 视频:11-2 协程的基本概念 (18:32)
- 视频:11-3 协程的常见实现1 (15:03)
- 视频:11-4 协程的常见实现2 (16:49)
- 视频:11-5 Kotlin 协程的基本要素1 (15:14)
- 视频:11-6 Kotlin 协程的基本要素2 (15:41)
- 视频:11-7 案例:Generator 与标准库的序列生成器 (28:22)
- 视频:11-8 案例:仿 Lua 协程实现非对称协程 API (30:18)
- 视频:11-9 案例:基于非对称协程 API 实现对称协程 (23:07)
- 视频:11-10 案例:仿 Go 的 Channel 实现协程通信 (14:28)
- 视频:11-11 案例:仿 Js 实现 async await (10:35)
- 视频:11-12 延伸:揭秘 suspend fun main (07:18)
- 视频:11-13 本章小结 (11:20)
-
第12章 协程进阶12 节 | 188分钟
在这一章,我们将基于 Kotlin 协程的基本要素带领大家从无到有地构建一套高仿官方协程框架的轻量级的框架 CoroutineLite,让大家进一步理解 Kotlin 协程的基本要素的运用,并为官方协程框架的学习和使用奠定扎实的基础。
- 视频:12-1 案例:仿官方框架实现 launch 1 (17:53)
- 视频:12-2 案例:仿官方框架实现 launch 2 (17:36)
- 视频:12-3 案例:仿官方框架实现 delay (06:29)
- 视频:12-4 案例:仿官方框架实现调度器 (18:48)
- 视频:12-5 案例:仿官方框架实现 runBlocking (15:40)
- 视频:12-6 案例:仿官方框架实现 async (11:46)
- 视频:12-7 案例:仿官方框架实现取消响应1 (17:50)
- 视频:12-8 案例:仿官方框架实现取消响应2 (17:34)
- 视频:12-9 案例:仿官方框架实现异常处理 (14:06)
- 视频:12-10 案例:仿官方框架实现作用域1 (19:49)
- 视频:12-11 案例:仿官方框架实现作用域2 (19:39)
- 视频:12-12 本章小结 (10:35)
-
第13章 协程应用11 节 | 195分钟
在这一章,我们将主要专注于将协程运用于实践。实践过程中主要基于官方的协程框架,除重点介绍 Channel、Select、Flow 等特性的运用以外,我们还将通过案例为大家展示协程在 Android、Spring、Ktor 当中的实践运用。
- 视频:13-1 协程框架概述 (20:56)
- 视频:13-2 实践:回调转协程的完整写法 (22:55)
- 视频:13-3 Channel (22:41)
- 视频:13-4 Select (14:21)
- 视频:13-5 案例:统计代码行数 (21:21)
- 视频:13-6 Flow (15:03)
- 视频:13-7 案例:协程在 Ktor 服务中的应用 (18:35)
- 视频:13-8 案例:协程在 Spring 服务中的应用 (23:35)
- 视频:13-9 案例:协程在 Android 中的应用 (29:27)
- 视频:13-10 本章小结 (06:04)
- 作业:13-11 Kotlin 的协程到底是什么?它能解决什么问题?
-
第14章 课程总结1 节 | 11分钟
在这一章,我们将对整个课程的内容进行统一梳理和总结。
- 视频:14-1 课程总结 (10:18)
-
第15章 【赠送】弹药补充1 节 | 24分钟
不定期加餐,补充Kotlin一手干货。
- 视频:15-1 Kotlin1.4 新特性介绍 (23:11)