首页>参考读物>计算机科学与技术>软件与程序设计

Kotlin极简教程
作者 : 陈光剑 编著
出版日期 : 2017-09-11
ISBN : 978-7-111-57993-9
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 508
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

Kotlin是一门与Swift类似的静态类型JVM语言,由谷歌支持并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,它与Java高度可互操作,可以同时用在一个项目中。本书系统介绍Kotlin语言的基础知识和实战案例,帮助读者快递入门Kotlin语言。
主要内容包括:Kotlin简介和快速入门,Kotlin语言基础,如语言、标识符、函数等,类型系统、OOP、FP等基本概念,Kotlin与Java的互操作,Kotlin集合类与范型,Kotlin协程,使用Kotlin开发Web应用、DSL、Android应用等,本书作者有多年开发经验,理论结合实际,案例丰富,讲解清晰,适合Web与移动开发人员参考。

图书特色

本书是不可多得的优秀图书,内容翔实,描述简洁,作者对编程语言有深刻的理解,融入了自己多年的开发经验……Kotlin非常新,而且发展也非常快,是一门非常有前景的开发语言,我希望Android和Java程序员都能停下来阅读这本Kotlin的图书,以系统地了解这项技术。
雷卷 阿里巴巴70后Java程序员
这是一本精彩有趣的好书。阅读本书,你会再次感受到编程的乐趣。我读过许多编程的书籍,但是这本书对程序设计的深刻见解依然深深触动了我。
雷影 阿里巴巴技术专家
光剑的这本书是非常不错的Kotlin教程。书中有大量有趣而实用的代码实例,理论与实践相结合,强烈推荐大家阅读。
木羽 阿里巴巴高级技术专家
身处互联网大潮汹涌席卷的时代里,对新知识的无限渴望和孜孜不倦的探求,是一名技术人员对自己的基本要求。陈光剑的这本书是Kotlin语言领域中非常值得借鉴的学习资料,无论是刚入门的技术小白,还是需要进阶的技术痴汉,都可在这本书中找到另一番天地。 
郁磊 有赞测试专家
Kotlin具备简洁的语言、与Java的无缝互译、很棒的IDE支持,且不断进化,如果你刚刚从事或者一直从事Android开发,Kotlin都将成为你很好的起点或新的助手。本书作为对Kotlin语言编程上手和基本使用都是不错的参考资料,必定对大家有所帮助。
石舟 阿里巴巴测试专家
在快速发展与创新的今天,不断孕育出各种新语言。Kotlin非常具有代表性,具有简明性和独特的表达能力,同时易于“并发编程”。这本书丰富而全面地介绍了这门优秀的语言。任何对编程语言感兴趣的程序员都不妨阅读一下,相信你定会有收获。
林文国 二维火资深架构师
作为JetBrains IDE的忠实用户,也一样喜欢上了它的Kotlin,而这本书绝对是Kotlin难得的教程,内容全面,理论和实战兼得。对我来说,读这本书的收获比自己想象的更多。
刘鼎亮 挖财资深工程师
我清楚地记得当初从Eclipse切换到JetBrains的Intelij时带来的效率提升和极致的用户体验,其中细节只有真正用过才能体会到。可以想见,JetBrains出品的Kotlin必然也会带来各种令人惊喜的提升。光剑在许多人还没注意到Kotlin的时候就已经开始动手实践了,并带来了一本语言精练、内容全面、示例丰富的教程,他亲自使用并检验过Kotlin的很多特性,有许多心得和深刻理解,这是一本不可多得的带领程序员领略Kotlin的便捷和高效的指南。 
有山 阿里巴巴技术专家
这是一本Kotlin入门的好书,内容翔实全面,并且由浅入深,通过大量的案例,引导读者一步步了解Kotlin的方方面面,于开卷者大有裨益。
张立柱 策道科技CTO

图书前言

Kotlin是JetBrains团队开发的一门现代的、注重工程实用性的静态类型编程语言,JetBrains团队以开发了世界上最好用的IDE而著称。Kotlin于2010年推出,并在2011年开源。Kotlin充分借鉴并汲取了Java、Scala、Groovy、C#、Gosu、JavaScript、Swift等多门杰出语言的优秀特性,语法简单优雅、表现力丰富、抽象扩展方便、代码可重用性好,同时也支持面向对象和函数式编程的多范式编程。Kotlin可以编译成Java字节码运行在JVM平台和Android平台,也可以编译成JavaScript运行在浏览器环境,而且还可以直接编译成机器码的系统级程序,直接运行在嵌入式、iOS、MacOS/Linux/Windows等没有JVM环境的平台。Kotlin源自产业界,它解决了工程实践中程序设计所面临的真实痛点,例如,类型系统可以避免空指针异常的问题。
我最早是被Kotlin的下面这段代码所吸引:
package com.easy.kotlin

fun compose(f: (B) -> C, g: (A) -> B): (A) -> C {
  return { x -> f(g(x)) }
}

fun isOdd(x: Int) = x % 2 != 0
fun length(s: String) = s.length
fun main(args: Array) {
  val oddLength = compose(::isOdd, ::length)
  val strings = listOf(

上架指导

计算机\程序设计

封底文字

本书是不可多得的优秀图书,内容翔实,描述简洁,对编程语言有深刻的理解,融入了自己多年的开发经验......Kotlin非常新,而且发展也非常快,是一门非常有前景的开发语言,我希望Android和Java程序员都能停下来阅读这本Kotlin的图书,能够系统地了解这项技术。
——雷卷,阿里巴巴70后Java程序员


这是一本精彩有趣的好书。读了她,你会再次感受到编程的乐趣。我读过许多编程的书籍,但是这本书对程序设计的深刻见解依然深深触动了我。
——雷影,阿里巴巴技术专家

光剑的这本书是非常不错的Kotlin教程。书中有大量有趣而实用的代码实例,理论与实践相结合,强烈推荐大家阅读。
——木羽,阿里巴巴高级技术专家

身处互联网大潮汹涌席卷的时代里,对新知识的无限渴望和孜孜不倦的探求,是一名技术人员对自己的基本要求。陈光剑的这本书是Kotlin语言领域中非常值得借鉴的学习资料,无论是刚入门的技术小白,还是需要进阶的技术痴汉,都可在这本书中找到另一番天地。
——郁磊,有赞测试专家

Kotlin具备简洁的语言、与Java的无缝互译、很棒的IDE支持,且不断进化,如果你刚刚从事或者一直从事Android开发,Kotlin都将成为你很好的起点或新的助手。本书作为对Kotlin语言编程上手和基本使用都是不错的参考资料,必定对大家有所帮助。
——石舟,阿里巴巴测试专家

在快速发展与创新的今天,不断孕育出各种新语言。Kotlin非常具有代表性,具有简明性和独特的表达能力,同时易于“并发编程”。这本书丰富而全面地介绍了这门优秀的语言。任何对编程语言感兴趣的程序员都不妨阅读一下,相信你定会有收获。
——林文国,二维火资深架构师

作为JetBrains IDE的忠实用户,也一样喜欢上了它的Kotlin,而这本书绝对是Kotlin难得的教程,内容全面,理论和实战兼得。对我来说,读这本书的收获比自己想象的更多。
——刘鼎亮,挖财资深工程师

我清楚地记得当初从Eclipse切换到JetBrains的Intelij时带来的效率提升和极致的用户体验,其中细节只有真正用过才能体会到。可以想见,JetBrains出品的Kotlin必然也会带来各种令人惊喜的提升。光剑在许多人还没注意到Kotlin的时候就已经开始动手实践了,并带来了一本语言精练、内容全面、示例丰富的教程,他亲自使用并检验过Kotlin的很多特性,有许多心得和深刻理解,这是一本不可多得的带领程序员领略Kotlin的便捷和高效的指南。
——有山,阿里巴巴技术专家

这是一本Kotlin入门的好书,内容翔实全面,并且由浅入深,通过大量的案例,引导读者一步步了解到Kotlin的方方面面,于开卷者大有裨益。
——张立柱 策道科技CTO

图书序言

首先非常感谢我的同事陈光剑在图书还没有正式发布之前能将所有章节发给我阅读,并邀请写一个序言介绍这本书。Kotlin 1.0在2016年初推出后,受到非常多的程序员认可,当然你也可以理解为热捧。越来越多的项目开始使用Kotlin开发,而且很多技术和框架都开始支持Kotlin,其中最知名的就是Google宣布Kotlin为Android开发官方语言,其他如Spring Framework 5.0原生支持Kotlin,Spring Boot 2、JUnit 5等都支持Kotlin。众多的开发者非常看重Kotlin带来的便捷性和代码精简,但是DSL、协程(CoRoutine)、Reactive等高级特性越来越多地被采用。在这里我就不介绍Kotlin众多特性了,本书会一一呈现给大家。
学习一门语言一定会涉及图书和资料,本书是不可多得的优秀图书,内容翔实,描述简洁,对编程语言有深刻的理解,融入了自己多年的开发经验。不可否认,Kotlin官方文档写得非常不错,还有Safari Online Books上的Hadi Hariri的Kotlin视频教程也很好。但是对于学习一项新技术来说,快速掌握、系统了解、理解不要出现偏差,非常重要,如果有这样一本中文图书,对中国程序员会帮助非常大,大家可以花更少的时间了解和学习Kotlin,并在实际的开发中快速使用起来。
Kotlin非常新,而且发展也非常快,是一门非常有前景的开发语言,我个人希望Android和Java程序员都能停下来阅读这本书,系统地了解这项技术。当然没有一本书能够跟得上技术快速发展的步伐,新特性、技术实现总是快速地推陈出新,但是知识原理都是相通的。DSL设计可能很难,但是你如果非常理解书中讲到的Function Literals with Receiver、Invoke Operator和Infix notation,配合基础的Lambda、Operator overloading和Function Extension,那么一切就非常简单啦。
我这一年也在做一些Kotlin相关的研究,主要集中于DSL设计、Reactive、CoRoutine和相关框架整合等,但是真没有能力和精力来写一本关于Kotlin的图书帮助到程序员,因为写本书相当不容易,写本书好书更加烧脑费时,令人佩服的是我的同事陈光剑给大家带来了好书,期待这本书给更多的人带来实惠,使更多的人能够快速学习和使用Kotlin。

雷卷,阿里巴巴70后Java程序员
2017年8月于杭州

图书目录

序 言
前 言
第一部分 Kotlin语言基础
第1章 Kotlin简介 2
1.1 Kotlin简史 2
1.1.1 Kotlin概述 3
1.1.2 Kotlin元年:2016 3
1.2 快速学习工具 4
1.2.1 云端IDE 4
1.2.2 本地命令行环境搭建 5
1.2.3 使用IntelliJ IDEA 9
1.2.4 使用Eclipse 13
1.2.5 使用Gradle构建Kotlin项目 17
1.2.6 编程语言学习小结 18
1.3 本章小结 20
第2章 快速开始HelloWorld 21
2.1 命令行版HelloWorld 21
2.2 应用程序版HelloWorld 21
2.3 Web RESTful HelloWorld 24
2.4 Android版的HelloWorld 34
2.5 JavaScript版HelloWorld 39
2.6 本章小结 49
第3章 Kotlin语言基础 50
3.1 包 50
3.2 声明变量和值 56
3.3 变量类型推断 57
3.3.1 省去变量类型 57
3.3.2 使用is运算符进行类型检测 59
3.4 字符串与其模板表达式 59
3.5 流程控制语句 60
3.5.1 if表达式 60
3.5.2 when表达式 62
3.5.3 for循环 64
3.5.4 while循环 64
3.5.5 break和continue 65
3.5.6 return 66
3.5.7 标签 69
3.5.8 throw表达式 71
3.6 代码注释 72
3.7 语法与标识符 73
3.7.1 修饰符 73
3.7.2 关键字(保留字) 75
3.7.3 操作符和操作符的重载 81
3.7.4 操作符优先级 82
3.7.5 一元操作符 83
3.7.6 二元操作符 85
3.8 扩展函数和扩展属性 90
3.8.1 扩展函数 90
3.8.2 扩展属性 93
3.9 空指针安全 93
3.10 标准库API简介 96
3.11 本章小结 97
第4章 基本数据类型与类型系统 98
4.1 什么是类型 98
4.2 编译时类型与运行时类型 100
4.2.1 弱类型与强类型 100
4.2.2 静态类型与动态类型 101
4.2.3 显式类型与隐式类型 101
4.3 根类型Any 101
4.4 基本类型 102
4.4.1 数字类型 104
4.4.2 字符类型与转义符 109
4.4.3 布尔类型 111
4.4.4 字符串类型 112
4.4.5 数组类型 117
4.5 可空类型 120
4.5.1 Kotlin中的null 120
4.5.2 可空类型String 与安全调用 . 122
4.5.3 可空性的实现原理 124
4.5.4 可空类型层次体系 126
4.6 kotlin.Unit类型 127
4.7 kotlin.Nothing类型 128
4.8 类型检测与类型转换 131
4.8.1 is与!is运算符 131
4.8.2 as运算符 133
4.9 本章小结 134
第二部分 编程进阶
第5章 集合类 136
5.1 集合类的基本概念 136
5.1.1 集合类是一种数据结构 137
5.1.2 集合类是ADT 137
5.1.3 连续存储和离散存储 138
5.2 Kotlin集合类简介 138
5.3 List 139
5.3.1 创建不可变List 140
5.3.2 创建可变集合MutableList 142
5.3.3 遍历List元素 143
5.3.4 List元素操作函数 146
5.3.5 List集合类的基本运算函数 151
5.3.6 过滤操作函数 159
5.3.7 映射操作函数 166
5.3.8 分组操作函数 169
5.3.9 排序操作符 170
5.3.10 生产操作符 171
5.4 Set 174
5.4.1 空集 174
5.4.2 创建Set 176
5.4.3 使用Java中的Set类 177
5.4.4 Set元素的加减操作plus minus 179
5.5 Map 179
5.5.1 创建Map 180
5.5.2 访问Map的元素 184
5.5.3 Map操作符函数 186
5.6 本章小结 192
第6章 泛型 193
6.1 泛型简介 193
6.1.1 泛型与多态 193
6.1.2 为何引进泛型 194
6.1.3 Java与Kotlin中的泛型 195
6.2 型变 197
6.2.1 Java的类型通配符 197
6.2.2 泛型和数组的型变 201
6.3 Kotlin中的泛型 205
6.3.1 out T与in T 205
6.3.2 声明处型变 206
6.3.3 类型投影 206
6.4 泛型类 207
6.5 泛型函数 208
6.6 本章小结 208
第7章 面向对象编程 209
7.1 面向对象编程思想 209
7.1.1 一切皆是映射 209
7.1.2 二进制01与易经阴阳 211
7.1.3 从面向过程到面向对象 212
7.2 类与构造函数 215
7.2.1 声明类 216
7.2.2 构造函数 216
7.2.3 类的属性 218
7.2.4 函数(方法) 219
7.3 抽象类 219
7.3.1 抽象类的定义 219
7.3.2 抽象函数 220
7.3.3 抽象属性和抽象类 221
7.4 接口 223
7.4.1 接口定义 223
7.4.2 实现接口 224
7.4.3 覆盖冲突 225
7.4.4 接口中的属性 225
7.5 抽象类和接口的差异 226
7.6 继承 227
7.6.1 open类 227
7.6.2 多重继承 228
7.7 枚举类 230
7.7.1 枚举类基本用法 231
7.7.2 初始化枚举值 231
7.7.3 使用枚举常量 232
7.8 注解类 233
7.8.1 声明注解 233
7.8.2 使用注解 234
7.9 单例模式与伴生对象 234
7.9.1 单例模式 234
7.9.2 object对象 235
7.9.3 嵌套object对象 236
7.9.4 匿名object 238
7.9.5 伴生对象 239
7.10 密封类 242
7.11 数据类 243
7.11.1 构造函数中的val/var 243
7.11.2 领域实体类 245
7.11.3 数据类的概念 245
7.11.4 数据类的限制 246
7.11.5 数据类的解构 248
7.11.6 标准数据类Pair和Triple 248
7.12 嵌套类 249
7.12.1 嵌套类:类中的类 249
7.12.2 内部类 250
7.12.3 匿名内部类 250
7.13 委托 252
7.13.1 代理模式 252
7.13.2 类的委托 253
7.13.3 委托属性 255
7.14 本章小结 260
第8章 函数式编程 261
8.1 函数式编程概述 261
8.1.1 函数式编程与面向对象编程 262
8.1.2 函数式编程基本特性 265
8.1.3 函数式编程核心思想 266
8.2 在Kotlin中使用函数式编程 284
8.2.1 Kotlin中的函数 284
8.2.2 扩展函数 286
8.2.3 中缀函数 286
8.2.4 函数参数 287
8.2.5 函数返回类型 289
8.2.6 单表达式函数 289
8.2.7 函数作用域 289
8.2.8 泛型函数 290
8.2.9 高阶函数 290
8.2.10 匿名函数 291
8.2.11 Lambda表达式 291
8.2.12 it:单个参数的隐式名称 292
8.2.13 闭包 292
8.2.14 带接收者的函数字面值 293
8.2.15 具体化的类型参数 293
8.2.16 尾递归tailrec 294
8.3 本章小结 295
第9章 轻量级线程:协程 296
9.1 协程的基本概念 296
9.2 协程的基本操作 297
9.2.1 搭建项目 297
9.2.2 简单协程示例 298
9.2.3 使用launch函数启动协程 299
9.2.4 CommonPool对象 299
9.2.5 挂起函数 301
9.2.6 runBlocking函数 302
9.2.7 等待一个协程任务执行完毕 303
9.2.8 取消协程 306
9.2.9 协程取消失效 307
9.2.10 计算代码协程的取消方式 308
9.2.11 在f inally中的协程代码 310
9.2.12 协程中不被取消的代码块 312
9.2.13 设置协程超时时间 313
9.3 挂起函数 314
9.3.1 按默认顺序执行 314
9.3.2 使用异步并发执行 315
9.4 协程上下文与调度器 316
9.4.1 调度和线程 316
9.4.2 父子协程 318
9.5 通道与管道 319
9.5.1 通道vs阻塞队列 319
9.5.2 关闭通道和迭代遍历元素 320
9.5.3 生产者-消费者模式 321
9.5.4 使用管道生产无限序列 322
9.5.5 管道与无穷质数序列 323
9.5.6 通道缓冲区 324
9.5.7 构建无穷惰性序列 324
9.6 协程与线程 325
9.6.1 轻量级的协程 325
9.6.2 协程vs守护线程 326
9.6.3 区别 327
9.6.4 协程的好处 328
9.6.5 Kotlin协程的内部机制 328
9.7 本章小结 329
第10章 Kotlin与Java互操作 330
10.1 在Kotlin中调用Java 330
10.1.1 调用Okhttp库示例 331
10.1.2 使用Java的集合类 332
10.1.3 调用Java中的Getter和Setter 333
10.1.4 调用Java中返回void的方法 334
10.1.5 调用来自Java中的null 335
10.1.6 使用Java的泛型 336
10.1.7 数组的互操作 337
10.1.8 可变参数的互操作 337
10.1.9 检查Java中的异常 337
10.1.10 调用Java的Object方法 338
10.1.11 访问Java静态成员 340
10.1.12 使用Java的反射 340
10.1.13 SAM转换 341
10.2 在Java中调用Kotlin 342
10.2.1 访问Kotlin属性 342
10.2.2 调用Kotlin的包级函数 344
10.2.3 调用Kotlin中的实例字段 347
10.2.4 调用Kotlin中的静态字段 348
10.2.5 调用Kotlin中的静态方法 349
10.2.6 Kotlin与Java的可见性 350
10.2.7 生成默认参数函数的重载 352
10.2.8 显式声明Kotlin中的异常 353
10.2.9 关键字冲突的互操作 355
10.2.10 Nothing类型 355
10.3 类型映射 356
10.4 Kotlin与Java的简单实例对比 357
10.5 本章小结 364
第三部分 综合实战
第11章 使用Kotlin集成Spring Boot开发Web服务端 366
11.1 Spring Boot简介 366
11.2 系统架构技术栈 367
11.3 准备工作 367
11.3.1 创建工程 367
11.3.2 Gradle配置文件说明 369
11.4 数据库层开发 370
11.4.1 Endpoint监控接口 373
11.4.2 实体类 375
11.4.3 数据访问层代码 377
11.5 后端逻辑开发 379
11.5.1 控制器逻辑层 379
11.5.2 启动初始化CommandLine-Runner 380
11.5.3 应用启动类 380
11.5.4 Model数据绑定 382
11.5.5 模板引擎视图页面 383
11.5.6 运行测试 383
11.6 前端后端集成 384
11.6.1 引入前端组件 384
11.6.2 实现写文章模块 386
11.6.3 加上导航栏 388
11.6.4 抽取公共模板文件 389
11.6.5 写文章的控制器层接口 390
11.6.6 前端Ajax请求 390
11.6.7 文章详情页 391
11.6.8 添加Markdown支持 393
11.6.9 文章列表分页搜索 395
11.7 Spring 5.0对Kotlin的支持 397
11.8 本章小结 399
第12章 使用Kotlin集成Gradle开发 400
12.1 使用Gradle构建Kotlin工程 400
12.2 使用Kotlin编写Gradle构建配置文件 405
12.3 本章小结 407
第13章 使用Kotlin和Anko的Android开发 408
13.1 什么是Anko 408
13.2 快速入门实例 409
13.2.1 功能介绍 410
13.2.2 使用Android Studio新建项目 411
13.2.3 设计UI界面主题颜色 415
13.2.4 核心依赖配置 417
13.2.5 代码编写 421
13.2.6 运行测试 435
13.3 本章小结 437
第14章 使用 Kotlin DSL 438
14.1 什么是DSL 439
14.2 Kotlin的DSL特性支持 441
14.3 使用kotlinx.html DSL写前端代码 442
14.4 实现一个极简的HTTP DSL 447
14.5 本章小结 454
第15章 Kotlin 文件IO操作与多线程 455
15.1 Kotlin IO基本操作 455
15.1.1 终端IO操作 455
15.1.2 读文件 456
15.1.3 写文件 457
15.1.4 遍历文件树 458
15.1.5 网络IO操作 459
15.1.6 kotlin.io标准库 460
15.1.7 执行Shell命令行 461
15.2 正则表达式 463
15.2.1 构造Regex表达式 463
15.2.2 Regex类中的函数 463
15.2.3 使用Java正则表达式类 465
15.3 Kotlin的多线程 466
15.3.1 创建线程 466
15.3.2 同步方法和块 467
15.3.3 可变字段 468
15.4 本章小结 469
第16章 使用 Kotlin Native 470
16.1 Kotlin Native简介 470
16.2 快速开始Hello World 471
16.3 Kotlin Native与C语言互操作 477
16.4 Kotlin Native编译器konan简介 486
16.5 本章小结 494

教学资源推荐
作者: (美)Y.Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: [美]罗伯特·W. 塞巴斯塔(Robert W. Sebesta) 著
参考读物推荐
作者: [美] 凯· S. 霍斯特曼(Cay S. Horstmann) 著
作者: 洪石丹
作者: 麻地河 赵 恒
作者: 张克发 赵兴 谢有龙 等著