描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121334818
Kotlin的底层是基于Java虚拟机(JVM)的,而《揭秘 Kotlin 编程原理》的作者恰恰是口碑畅销好书《揭秘Java虚拟机:JVM设计原理与实现》的作者,他对Kotlin语言的透彻理解和分析,以浅显易懂的形式完整地浓缩在本书中。
因此,在《揭秘 Kotlin 编程原理》中,读者不仅能清晰地了解Kotlin的语法、高级特性,还能真正地掌握Kotlin背后的实现机制和设计哲学,形成对Kotlin语言既直观、又深刻的认识——在此基础上,读者能准确、快速地上手实践,大大提升自己的移动开发能力。
例如,Kotlin在不违反JVM规范的基础上,融合了众多编程语言的特性:它打破了Java封闭的彻底性,让开发者可以体验“面向过程”编程的感觉;它充分吸收了其他编辑语言中的好特性,提供了诸如VB语言中的“with语法”……此外,它提供了这样一种能力,不用修改原有类,也无须通过继承的方式,就能为某个类增加新的行为,等等。
Kotlin的这些特性和实现机制,可以帮助开发者扫清开发道路上的一些障碍,让开发变得更加简单!《揭秘Kotlin编程原理》是一本值得拥有,能切实帮助读者加薪提职的好书!
Kotlin被谷歌宣布为官方语言以来,引发了极大的关注,并成为学习的热点。
《揭秘Kotlin编程原理》主要从封装、继承和多态三个方面全面介绍了Kotlin面向对象设计的语法特性及其背后实现方式。全书可分为基础篇、实战篇与提高篇,内容上层层深入,揭示了Kotlin对属性包装、多种形态的函数定义方式、以及各种特殊类型的定义等方面的背后实现机制。
《揭秘Kotlin编程原理》适合各种编程语言的开发者阅读,不管你是Java开发、Kotlin开发、Android开发,还是PHP、JSP,或者是C、C 、VB、Go语言的爱好者,都可以翻开阅读。因为里面总会有让你感到熟悉的一些语言特性,当你看到Kotlin中也有这样一种特性的时候,你一定会会心一笑!
1 快速入门 1
1.1 简介 1
1.2 编写第一个Hello World程序 3
1.3 程序结构 10
1.3.1 Kotlin源码结构 10
1.3.2 包声明与导入 11
1.3.3 后缀名 14
1.4 Kotlin标准库 14
2 基本语法 19
2.1 基本类型 19
2.1.1 数字 20
2.1.2 字符串 23
2.2 变量与常量 24
2.2.1 常量 24
2.2.2 属性包装 25
2.3 函数 30
2.3.1 函数声明 30
2.3.2 闭包 35
2.3.3 lambda表达式 40
2.3.4 内联函数 54
3 封装 58
3.1 构造函数与实例化 60
3.1.1 构造函数漫谈 60
3.1.2 Kotlin构造函数 62
3.1.3 简化的主构造函数 63
3.1.4 二级构造函数 66
3.1.5 C 构造函数与参数列表 69
3.1.6 默认构造函数与覆盖 71
3.1.7 构造函数访问权限与缺省 73
3.2 内存分配 75
3.2.1 JVM内存模型 75
3.2.2 类元信息 80
3.2.3 创建类实例 87
3.3 初始化 89
3.3.1 用构建器自动初始化 89
3.3.2 成员变量初始化 90
3.3.3 init{}初始化 92
3.3.4 声明时初始化 96
3.3.5 初始化顺序 98
3.4 类成员变量 103
3.4.1 赋初值 103
3.4.2 访问权限 111
3.5 数组 115
3.5.1 通过Array接口声明数组 116
3.5.2 数组读写 119
3.5.3 声明引用型数组 120
3.5.4 使用其他方式声明数组 123
3.5.5 多维数组 129
3.5.6 数组与列表转换 131
3.6 静态函数与伴随对象 132
3.6.1 伴随对象 133
3.6.2 名称省略与实例化 135
3.6.3 伴随对象中的属性 136
3.6.4 伴随对象的初始化 137
3.6.5 伴随对象的原理 139
3.6.6 匿名类 145
4 继承 149
4.1 继承基础概念 149
4.1.1 继承语法 149
4.1.2 接口 152
4.1.3 虚类 165
4.2 多重继承 168
4.2.1 类与接口的多重继承 168
4.2.2 构造函数继承 170
4.2.3 接口方法的多重继承 174
4.3 继承初始化 176
4.4 类型转换 179
5 多态 183
5.1 概念 183
5.1.1 重写 184
5.1.2 重载 185
5.2 扩展 189
5.2.1 概念 189
5.2.2 Kotlin的扩展 191
5.2.3 扩展与重载 193
5.2.4 函数扩展的多态性 196
5.2.5 函数扩展原理 201
5.2.6 属性扩展 203
5.3 操作符重载 204
5.3.1 Kotlin中的操作符重载 205
5.3.2 通过扩展函数重载操作符 207
5.3.3 操作符重载原理 208
5.3.4 操作符重载限制 209
5.3.5 中缀符 211
5.4 指针与传递 212
5.4.1 Java中的类型与传递 213
5.4.2 按值/引用传递的终结者 216
5.4.3 this指针 218
5.4.4 类函数调用机制与this 222
6 Kotlin的I/O 224
6.1 Java I/O类库 224
6.2 Kotlin I/O类库 231
6.3 终端I/O 234
6.4 文件I/O 237
6.5 文件压缩示例 239
6.6 序列化 241
6.6.1 Kotlin的序列化 242
6.6.2 序列化控制 245
7 Kotlin机制 247
7.1 函数定义 247
7.1.1 顶级函数 247
7.1.2 内联函数 250
7.2 变量与属性 257
7.2.1 属性包装 257
7.2.2 延迟初始化 261
7.2.3 let语法糖 264
7.3 类定义 266
7.3.1 Java内部类 267
7.3.2 Kotlin中的类 272
7.3.3 Kotlin类对顶级属性和方法的访问 274
7.3.4 Kotlin类中的成员变量 276
7.3.5 单例对象 279
谷歌作为世界级的科技公司巨头,强悍的技术研发与创新能力使其一直是业界的楷模,其在各个领域的每一次创新,都能够引领一个新的时代!
Kotlin便是其最新的一个创新力作。
编程语言的历史已经超过了半个世纪,从最初的机器二进制码,到汇编、B语言,再到C语言,再到由C语言所开发出的其他若干种编程语言。每一种编程语言都有其特定的用途,例如C语言通常用于开发底层系统软件或者驱动程序,而部分更底层的功能则必须要由汇编甚至是直接的机器指令去完成。再如C 、Delphi曾经统治了PC桌面软件的开发领域,而应用服务器端的开发则长期被PHP、ASP、JSP垄断,浏览器端的嵌入式脚本则几乎由JavaScript语言一统天下。
这几年互联网领域先后经历了几次大革命,包括物联网、大数据、云计算等,如今则处于人工智能的火热时代。在这个时代,人们极其努力地开启机器智慧,在大数据样本下,通过算法,让机器进行一定的模糊识别,从而解决很多传统办法解决不了的棘手问题。伴随其中的一个重要的编程语言便是Java,因为Java的口号是“write once, run anywhere”(即:一次编写,到处运行)。Java由于其强大的跨平台(主要指操作系统)能力,而备受各种中间件组件开发人员的钟爱。而Java之所以能够跨平台,主要归功于JVM虚拟机。
JVM虚拟机内部针对不同的底层平台进行了通用性抽象,从而可以让Java这种上层编程语言对外提供统一的API,例如在进行多线程开发时,开发者无须在不同的平台上引入不同的类库,而在开发界面视图时,Java也提供统一的界面组件类库。平台的差异化工作都交给底层的JVM虚拟机进行适配处理,从而让高层业务开发人员可以专心进行业务设计与逻辑实现,不用再关心底层各种纷繁复杂的硬件和平台特性。开发人员唯一需要感知的平台差异性仅仅在于需要在不同的平台上下载平台相关的JVM软件而已。
在Java刚推出来的几年里,由于JVM的性能低下,导致不太被认可。但是后来随着各种黑科技的引入,例如JIT即时编译、基于Java字节码的栈顶缓存技术、垃圾回收算法的改进、JDK高性能类库(例如并发包、NIO等)的发布,等等,JVM的性能得到长足改进和飞速提升,早已今非昔比,在部分场景下甚至比C/C 的性能还要高,例如运行期所进行的方法与线程级的逃逸分析以及C1、C2分级动态编译等技术。人们再也没有任何理由拒绝使用Java,所以Java得到了飞速发展,多年来稳居服务端应用编程语言使用率第一的宝座。
同时,JVM是一个开源的产品,在技术体系上也是开放的,当然,并不是无条件的开放,而是在统一的技术规范下,不对实现做任何约束。因此各种基于JVM规范的编程语言也得以被发明出来,例如Scala、Clojure、Groovy等,甚至PHP、Ruby等程序也可以转换到JVM规范。不管高级编程语言是Java还是Scala,只要能够被翻译成Java字节码,JVM都能够执行,这便是技术规范的开放性。
虽然Java与JVM在最近这些年取得了巨大的成功,但是也并非没有缺点。例如Java是一种严格的面向对象设计的编程语言,一切编程要素都被严格编写在Java类型内部,你不可能像C语言那样,直接在源程序中定义一个函数。这种完全的面向对象设计的特性也给Java自己造成了很多不便,例如无法对底层类库进行扩展,除非你去继承并实现一个新的类型。
同时,Java编程语言的语法太过于严格和死板,不像很多其他编程语言那样,有不少让人心动的功能特性,这种死板和严格往往会造成工作效率的低下。
于是,Kotlin诞生了。
当笔者刚看到Kotlin时,并没有多少惊讶。因为Kotlin底层仍然是基于JVM虚拟机的,主要是“仍然”哟!因为基于JVM的编程语言太多了,它们都有自己的“脾气”和鲜明的“性格”,很难说谁比谁好。更何况,笔者刚刚读完了JVM底层的源代码,并汇编成书——《揭秘Java虚拟机:JVM设计原理与实现》(有兴趣的读者可以上淘宝、京东、亚马逊、东东等主流平台上选购),因此笔者并没有觉得Kotlin会“玩”出啥新的花样来。然而,随着对Kotlin特性了解的加深,笔者越来越发现Kotlin真的不是随随便便搞出来的一个全新的编程语言——如果你有多年的编程开发经验,并且熟知很多的编程语言,你会对Kotlin感到很惊讶!因为这真的是一门融合了众多编程语言特性的编程语言,并且是在不违反JVM规范的基础上,将其他众多语言的特性融入了进来,说其是博采众家之长,一点也不为过。
在惊讶之余,笔者将对Kotlin的理解写了下来,并形成了本书。本书着重为你介绍Kotlin各种高级特性背后的实现机制,希望我们可以一起探讨Kotlin背后的设计哲学。
本书主要从封装、继承和多态这三方面介绍Kotlin的面向对象设计的语法特性及其背后的实现方式。
其中详细讲解了Kotlin在面向对象封装方面所作出的努力,Kotlin保留了Java封装好的一面,勇敢地摒弃了其不好的一面,例如对静态字段和方法的舍弃与变通。而在方法封装上,Kotlin更是玩出了新花样,打破了Java封装的彻底性,让Java开发者可以体验“面向过程”编程的感觉。同时,Kotlin充分吸收其他编程语言中的好的语言特性,提供了诸如VB语言中的“with语法”。
在继承方面,Kotlin也有自己的思考,其综合了Java和C 等面向对象编程语言继承的优缺点,设计出自己的一套独特的继承机制。不过Kotlin依然保留了Java语言中一个类不能同时继承多个类的强制约束。
Kotlin给人最多的惊艳,都集中在“多态”这一领域。其中,最让笔者惊叹的便是Kotiln提供了这样一种能力:不用修改原有类,也无须通过继承的方式,就能为某个类增加新的行为。虽然Kotlin仅仅是取巧,仅仅实现了一个语法糖的包装,但是这种小的改变却秀出了“美”的新高度。或许,这都不能算是继承,这里姑且将其与继承混为一谈吧。
另外,操作符重载也是Kotlin中一个非常惊艳的功能,给了笔者不小的冲击力——也许是知识的贫乏限制了笔者的想象力。
如果仅仅讲解Kotlin的语法,多么无聊。所以,本书并没有只停留于以往内容层面的介绍,作为一名对技术抱有极大热情、凡事喜欢刨根问底的极客(姑且是往自己脸上贴金吧^_^),笔者进一步研究了Kotlin各种高级特性背后的实现机制。本书主要揭示了Kotlin中属性包装、多种形态的函数定义及各种特殊类型的定义等背后的实现机制。由于Kotlin并没有自己的虚拟机,而是完全托管于JVM虚拟机,所以Kotlin最多只能将技术玩到“Java字节码”这一层,而笔者对此则是再熟悉不过的。
本书适合各种编程语言的开发者阅读,不管你是使用Java、Kotlin、Android开发,还是使用PHP、JSP开发,甚至是使用C、C 、VB、GO开发,都可以阅读本书。因为你总会从本书中读到一些熟悉的语言特性,当你看到Kotlin中也有这样一种特性的时候,你一定会心一笑!
Kotlin语言对Java语言特性的易用性进行了全方位的改进,越来越贴近广大开发者的习惯。我本人*看中的是Kotlin未来对JavaScript和Native的支持,那时Kotlin会在各个编程领域得到广泛应用。
《揭秘Kotlin编程原理》从语言的本质方面对Kotlin进行了全面讲解,对于学习Kotlin语言的Java开发者,是一本难得的技术书籍。
——张建锋,永源中间件共同创始人
Kotlin语言刚刚出来时,便令人眼前一亮!它的函数式编程、各种语法糖、代码精简性以及和Java代码的兼容性,让很多人觉得它取代Java只是时间问题,引发了业界极大的学习热情。
目前市面上还没有见到剖析Kotlin内部机制的著作。畅销好书《揭秘Java虚拟机:JVM设计原理与实现》的作者,基于多年来对Java虚拟机的深刻理解,在*时间研究了Kotlin语言,并将自己对Kotlin的透彻理解条分缕析地分享在这本《揭秘Kotlin编程原理》中:从浅显易懂的入门知识到豁然开朗的原理分析,使读者不仅能够知其然,并且能够知其所以然,从而能得心应手地运用好Kotlin。
——占军(公众号:占小狼的博客),美团点评基础架构组技术专家
Java是过去的20年里非常成功的编程语言,但是由于它是一种通用的静态类型的语言,在解决特定领域问题时会显得非常“笨重”,于是涌现出了很多能在JVM上使用的非Java语言。Kotlin是JVM上众多语言中的新宠,它完全兼容Java,提供了很多非常有趣的语法糖,支持函数式编程,*关键的是,和Java相比,它能大幅度地减少代码量。
《揭秘Kotlin编程原理》对Kotlin的关键语法和核心特性进行了深入的讲解,通过与其他语言(Java、C )的比较以及直达JVM字节码的分析,为有编程经验尤其是对Java语言有经验的读者迅速掌握Kotlin语言构建了一条快速通道。让我们跟着作者一起加速一起飞。
——骆昊,北京千锋互联(成都)科技有限公司技术总监
评论
还没有评论。