Kotlin 深度探索

《Kotlin 深度探索》深入剖析 Kotlin 的"如何"与"为什么",从核心语言基础和内部机制到 API 设计。涵盖 Kotlin 基础、标准库、协程、kotlinx 库、编译器内部原理和 Kotlin 多平台开发。

本书不仅停留在 API 表面,而是深入 Kotlin 内部:逐步讲解真实的 Kotlin 函数实现,解密生成的字节码,解释 Kotlin 编译器如何解析语言。同时直接引用 KEEP 提案、JetBrains YouTrack 讨论和编译器源代码,将概念与其起源和设计理念联系起来。

Kotlin 深度探索书籍封面
492
PDF 页数
5
章节
70
深度主题
50+
专业技巧

纸质版和精装版正在 Amazon 上准备中

Jaewoong Eum (skydoves)

Google 开发者专家 (Android 和 Firebase)

我是 Jaewoong Eum(也叫 skydoves),Android 和 Firebase 的 Google 开发者专家 (GDE),之前也是 Kotlin GDE。我创建了超过 80 个开源库和项目,每年被全球开发者下载超过 1500 万次。我也是 Dove Letter 的创始人,这是一个订阅制的知识库,我在这里分享、探索和讨论 Android、Jetpack Compose 和 Kotlin 相关的主题。

这是我的第二本书,继 Manifest Android Interview 之后,该书在全球 Android 开发者社区中非常成功并广受好评。

我希望这本书能帮助你获得新的视角,提升解决问题的能力,并建立对 Kotlin 的全面理解,从语言基础到协程、编译器和多平台开发等高级主题。学习应该是一个持续的旅程,你克服的每一个挑战都会让你成为更好的工程师。

一如既往,祝编程愉快,祝你的 Kotlin 之旅一切顺利!

精通 Kotlin 所需的一切

深入探索 Kotlin 基础,成为更优秀的 Kotlin 开发者

📖 深度解析

每个主题都提供超越表面知识的详细解释,不仅探索 Kotlin 功能如何工作,还解释为什么这样设计。你将理解设计决策背后的原因和权衡。

💡 专业技巧

"专业技巧"部分深入探讨高级主题,揭示 Kotlin 基础的内部结构,提供可以立即应用的专家见解,帮助你写出更好的代码。

🔍 源码参考

你将看到 KEEP(Kotlin 演进和增强过程)提案、JetBrains YouTrack 讨论和编译器源代码的引用,直接了解语言设计决策背后的原因。

📚 全面覆盖

从语言基础到标准库、协程、编译器和插件,以及 Kotlin 多平台 - 本书涵盖的实用知识将真正改变你编写、调试和优化 Kotlin 代码的方式。

本书涵盖内容

五个全面的章节涵盖 Kotlin 开发的各个方面

第 0 章

24 个主题

Kotlin 语言

涵盖 Kotlin 的基础构建模块,从空安全和类型系统设计到高级特性如密封类、内联函数和委托。你将通过参考 KEEP 提案和 Kotlin 语言工程师的讨论来探索语言的设计理念。

第 1 章

7 个主题

Kotlin 标准库

深入探索 Kotlin 丰富的标准库,包括集合、序列、作用域函数以及使 Kotlin 代码富有表现力和简洁的工具。理解这些工具对于编写地道的 Kotlin 代码至关重要。

第 2 章

19 个主题

协程

全面探索 Kotlin 的异步编程方法。从挂起函数和协程构建器等基本概念到结构化并发、Flow 和异常处理等高级主题。

第 3 章

4 个主题

KotlinX 库

探索由 JetBrains 开发的官方 Kotlin 库,这些库为语言扩展了额外的功能。这些库为序列化、日期/时间处理和不可变集合提供专门的能力。

第 4 章

7 个主题

Kotlin 编译器和插件

带你深入了解 Kotlin 代码如何转换为可执行程序。你将学习编译器的架构、K2 编译器及其改进、FIR、IR,以及如何创建编译器插件。

第 5 章

9 个主题

Kotlin 多平台

探索 Kotlin 的跨平台能力,涵盖项目结构、源集层次结构、平台互操作性,以及用于共享 UI 开发的 Compose Multiplatform。随着多平台采用的增长,这些知识变得越来越有价值。

开发者们的评价

"自从 Kotlin 被指定为 Android 开发的官方语言以来,它一直深受众多开发者的喜爱。如今,它已经超越了 Android,并在广泛的平台上继续证明其潜力。

在实际的 Kotlin 开发中,你不可避免地会遇到各种各样的问题。当你解决这些问题时,自然会开始探索底层原理,我们中的许多人最终都想更深入地理解 Kotlin。

这本书正是为这些开发者而写的。它深入探讨了 Kotlin 的核心原理和内部机制。如果你是一名想要真正理解这门语言并将技术水平提升到新高度的 Kotlin 开发者,我强烈推荐你阅读这本书。"

Sungyong An

Sungyong An

Naver Webtoon 高级 Android 工程师

Google Android 开发者专家

@fornewid
原文

Kotlin은 안드로이드 개발의 공식 언어로 지정되면서 많은 개발자에게 사랑받기 시작했고, 지금은 안드로이드를 넘어 다양한 플랫폼으로 뻗어나가며 그 가능성을 보여주고 있습니다.

실무에서 Kotlin을 사용하다 보면 필연적으로 다양한 이슈를 마주하게 되고, 많은 개발자가 이 과정에서 이슈를 해결하며 내부를 조금씩 들여다보게 되고, Kotlin을 더 깊이 이해하고 싶다는 갈증을 느껴왔을 것 같습니다.

이 책은 바로 그런 분들을 위해 Kotlin의 근본 원리와 내부 메커니즘을 심도 있게 탐구합니다. Kotlin의 깊이를 이해하고 기술 스펙트럼을 한 단계 더 넓히고자 하는 Kotlin 개발자라면 꼭 읽어보시기를 적극 추천합니다.

"《Kotlin 深度探索》是一本非常全面的指南,它超越了语法层面,深入探索 Kotlin 语言的内部机制和设计哲学。Jaewoong 还基于他作为 Google 开发者专家和多产开源贡献者的丰富经验,提供了实用的、经过实战检验的建议。"

John O'Reilly

John O'Reilly

Kraken Technologies 资深软件工程师

Google Android 开发者专家

Bluesky

"Jaewoong 的《Kotlin 深度探索》写得非常出色,将复杂的概念分解为清晰、易懂的解释。这是一本真正优秀的读物,以当今很少有技术书籍能达到的方式提供了深度和清晰度。在 Copilot 等工具使技术内容写作更具挑战性和竞争性的时代,这本书脱颖而出,物超所值。"

Madona S. Wambua

Madona S. Wambua

工程领导者 & 作家

Google Android 开发者专家

LinkedIn

"Kotlin 已经从一门简单的编程语言发展成为多平台开发的核心支柱。这本书远不止列举基本用法,而是深入探讨语言的设计哲学和内部机制。其结构尤其令人印象深刻,引导读者从随意的好奇心一直到对 Kotlin 内部工作原理的深入理解。

对于初级开发者,它将实际开发中遇到的模糊不确定性转化为清晰的信心。对于高级开发者,它将分散的知识碎片整合成一个完整的大图景。这是任何想要真正掌握 Kotlin 核心的工程师必读之书。"

SeongUg (Steve) Jung

SeongUg (Steve) Jung

Grab 首席软件工程师

前 Google Android 开发者专家

LinkedIn
原文

Kotlin은 이제 단순한 언어를 넘어 멀티플랫폼 개발의 핵심으로 자리 잡았습니다. 이 책은 단순한 사용법을 나열하는 데 그치지 않고, 언어의 설계 철학과 내부 메커니즘을 집요하게 파고듭니다. 가벼운 호기심으로 시작해 언어의 심층부까지 도달하는 구성이 매우 인상적입니다.

주니어 개발자에게는 실무에서 마주할 막연한 의구심을 명쾌한 확신으로 바꿔주고, 시니어 개발자에게는 흩어져 있던 지식의 조각을 하나의 큰 그림으로 완성해 주는 필독서입니다. Kotlin의 핵심(Core)을 꿰뚫고 싶은 모든 엔지니어에게 일독을 권합니다.

社区好评与推荐

看看 Kotlin 社区对这本书的评价

社区反馈
社区反馈
社区反馈

书籍预览

购买前先看一看内容

喜欢吗?你可以在这里阅读更多内容:

多语言版本

为全球 Kotlin 开发者社区提供翻译版本

感谢支持

内容目录

第 0 章:Kotlin 语言

  • Q) 0. 解释 Kotlin 中的空安全
  • Q) 1. Any、Unit 和 Nothing 的主要作用是什么?
  • Q) 2. 什么是数据类,它与普通类有什么区别?
  • Q) 3. 什么是密封类,解释其使用场景
  • Q) 4. 什么是内部类,它与嵌套类有什么区别?
  • Q) 5. 什么时候使用枚举类?
  • Q) 6. 什么是值类?
  • Q) 7. 什么是对象,它与普通类有什么区别?
  • Q) 8. 什么是伴生对象?
  • Q) 9. var 和 val 有什么区别?
  • Q) 10. 幕后字段和幕后属性有什么区别?
  • Q) 11. 什么是委托属性?
  • Q) 12. lazy 委托和 lateinit 有什么区别?
  • Q) 13. 存在哪些可见性修饰符?
  • Q) 14. init 块何时被调用,其关键特性是什么?
  • Q) 15. 什么是高阶函数,你能获得什么优势?
  • Q) 16. inline 关键字的优点和限制是什么?
  • Q) 17. 什么是 reified 关键字,使用它有什么好处?
  • Q) 18. 如何使用 lambda 表达式?
  • Q) 19. 什么是函数式(SAM)接口?
  • Q) 20. 什么是扩展,它的优缺点是什么?
  • Q) 21. 什么是结构相等和引用相等?
  • Q) 22. 执行 null + null 操作会发生什么?
  • Q) 23. 什么是 DSL,如何使用它?

第 1 章:Kotlin 标准库

  • Q) 24. Kotlin 中存在哪些集合类型?
  • Q) 25. 集合有哪些类型的转换操作符?
  • Q) 26. 解释迭代器的机制
  • Q) 27. 什么是序列及其机制?
  • Q) 28. 有哪些扩展函数可用于检索集合的部分内容?
  • Q) 29. 如何定义对象的排序?
  • Q) 30. 什么是作用域函数?

第 2 章:协程

  • Q) 31. 什么是协程?
  • Q) 32. 什么是 Continuation,它在内部如何与挂起函数相关联?
  • Q) 33. 协程和线程有什么区别?
  • Q) 34. 什么是协程构建器?
  • Q) 35. 什么是协程上下文?
  • Q) 36. Job 的作用是什么?
  • Q) 37. 协程作用域的目的是什么?
  • Q) 38. 存在哪些协程调度器,它们的用途是什么?
  • Q) 39. 什么是通道,它们如何工作?
  • Q) 40. join() 和 yield() 函数是什么?
  • Q) 41. 如何在协程中处理异常?
  • Q) 42. 冷流和热流有什么区别?
  • Q) 43. 解释 StateFlow 和 SharedFlow 的区别
  • Q) 44. Flow.flowOn() 操作符做什么?
  • Q) 45. Flow.buffer() 操作符如何工作?
  • Q) 46. Kotlin 的内部机制如何通过 FusibleFlow 和 ChannelFlow 优化 Flow
  • Q) 47. launchIn(Scope) 和 Scope.launch() 有什么区别?
  • Q) 48. 什么是 Flow 转换操作符:flatMapLatest、flatMapMerge、flatMapConcat?
  • Q) 49. 什么是 callbackFlow 和 channelFlow,以及它们的内部机制?

第 3 章:KotlinX 库

  • Q) 50. 什么是 kotlinx-serialization,它如何工作?
  • Q) 51. 什么是 kotlinx-datetime,为什么要使用它而不是 Java 时间 API?
  • Q) 52. 什么是 kotlinx-collections-immutable,什么时候应该使用它?
  • Q) 53. 还有哪些值得注意的 KotlinX 库?

第 4 章:Kotlin 编译器和插件

  • Q) 54. 什么是注解处理器、KAPT 和 KSP?
  • Q) 55. Kotlin 编译器的结构是什么?
  • Q) 56. 什么是 K2 编译器?
  • Q) 57. 什么是 FIR(前端中间表示)?
  • Q) 58. 什么是 IR,Kotlin 后端如何工作?
  • Q) 59. 如何编写 Kotlin 编译器插件?
  • Q) 60. 有哪些真实的 Kotlin 编译器插件示例和用例?

第 5 章:Kotlin 多平台

  • Q) 61. 什么是 Kotlin 多平台?
  • Q) 62. Kotlin 多平台如何处理平台特定 API 并共享公共代码?
  • Q) 63. KMP 中有哪些并发或异步编程策略?
  • Q) 64. KMP 中有哪些 HTTP 网络通信策略?
  • Q) 65. 什么是 Compose Multiplatform?
  • Q) 66. Kotlin 多平台项目中的源集是如何组织的?
  • Q) 67. Kotlin/Native 如何处理内存管理和平台互操作性?
  • Q) 68. Kotlin 多平台中有哪些测试策略?
  • Q) 69. Kotlin 多平台中有哪些依赖注入策略?

时间线与里程碑

2026.01.06
销量突破 100 本 🎉
2026.01.03
首版发布

评论

分享您对这本书的看法