前 言
当下,互联网、大数据和云计算迅猛发展,数以百万计的应用程序在服务器和移动端运行。这些应用程序的开发语言有很大一部分是用软件界已经流行了20年之久的主力编程语言Java编写的。
毫无疑问,Java语言历史悠久,影响力巨大。历经20多年的发展,它已经成为一门非常成熟的编程语言,性能强大而稳定。Java虚拟机JVM的生态也繁荣昌盛,经久不衰。但Java也背负着历史的包袱,如它有空指针、语法啰嗦和不支持一等函数等缺点。如果用一辆汽车来比喻编程语言,Java拥有一个高效而可靠的发动机,但其防抱死刹车系统和动力转向系统却不是那么可控。Java语言在使用时需要小心检查可能出现的空指针,还要处理异常、重复生成冗长而单调的样板代码行等问题。
对于开发人员而言,编程语言的防危性(safety)和安全性(security)是至关重要的。要是有一门语言既能继承Java的所有优点及其强大而完备的生态库,又能更加简单、安全和可控,那真是再好不过了。我们很高兴地看到,Kotlin就是一门这样的语言。
目前,图书市场上Kotlin相关图书还很少,尤其是实用性强的书更是凤毛麟角。为了帮助广大的编程人员系统地学习这门开发语言,笔者编写了本书。本书从Kotlin 语言的基础语法讲起,逐步介绍了Kotlin的扩展函数、一等函数支持、Lambda表达式、强大的DSL支持、运算符重载与约定、无编程、注解与反射等特性,并配合项目实战案例,详细介绍了使用Kotlin+Spring Boot进行服务端开发和使用Kotlin进行Android应用程序开发的内容。通过阅读本书,读者不但可以系统地学习Kotlin编程的相关知识,而且还能对Kotlin应用开发有更为深入的理解。
本书特色
1.内容全面,讲解由浅入深,符合学习规律
本书内容涵盖了Kotlin语言的基础语法和大部分最常用的核心知识点和开发技巧,还详细介绍了两个实用性很强的项目开发案例。讲解遵循由浅入深、循序渐进的原则,让读者的学习曲线更加平滑。这样的内容梯度安排和讲解,符合读者的编程语言学习规律,可以取得较好的学习效果。
2.图文并茂,讲解生动有趣,阅读起来不枯燥
技术学习,有时一图胜千言。本书在介绍知识点时尽量给出简单易懂的图示帮助读者理解,这使得整个学习过程变得简单、有趣。
3.用代码示例引导学习,可以大大提高动手编程能力
本书非常注重内容的实用性和可操作性,书中重点介绍的知识点都给出了大量代码示例,并且对代码做了详细的注释和讲解,这样可以大大提高读者实际动手编程的能力。
4.偏重于实战讲解,不涉及不常用的知识
相比笔者的另外一本书《Kotlin极简教程》,本书内容更加偏重于Kotlin编程实战讲解。书中对于Kotlin基础知识和语言特性的讲解更加精简,重点突出;而对于编程实战中不常用的一些内容不做过多介绍,比如没有介绍目前不常用的Kotlin Native和实验阶段的协程(Coroutine)两个专题;但增加了在编程实践中较为常用的元编程、注解与反射,运算符重载与约定两章的内容。
5.项目案例实用性强,可以提高项目开发水平
本书最后两章配合项目实战案例,详细介绍了使用Kotlin+Spring Boot进行服务端开发和使用Kotlin开发Android应用程序的相关内容。这两个项目案例可以带领读者体验实际的Kotlin应用开发,可以大幅度提高读者的项目实战开发水平。
本书内容
第1章主要介绍了Kotlin编程语言的基本特性、编程哲学、学习工具,以及为什么要学Kotlin和JVM语言生态等内容。
第2章主要介绍了Kotlin语法基础,主要内容包括变量和标识符、关键字与修饰符、流程控制语句、操作符与重载、包声明等内容。
第3章主要介绍了Kotlin的类型系统、可空类型、安全操作符、特殊类型、类型检测与类型转换等内容。
第4章主要介绍了Kotlin的类与面向对象编程,包括声明类、抽象类与接口、object对象、数据类、注解、枚举和内部类等内容。
第5章主要介绍了Kotlin函数式编程,包括声明函数、Lambda表达式、高阶函数及Kotlin中的特殊函数等内容。
第6章主要介绍了Kotlin扩展函数与属性,以及扩展函数的实现原理和扩展中的this关键字。
第7章主要介绍了Kotlin集合类,包括常用的3种集合类、不可变集合类、创建集合类、遍历集合中的元素、映射函数、过滤函数、排序函数和元素去重等内容。
第8章主要介绍了Kotlin的泛型,包括为何引入泛型、泛型接口、泛型类、泛型函数、类型上界、协变与逆变、out T与in T、类型擦除等内容。
第9章主要介绍了Kotlin语言的文件I/O操作、网络I/O操作、执行Shell命令、正则表达式和多线程编程等相关内容。
第10章主要介绍了怎样使用Kotlin语言创建DSL,包括什么是DSL、Kotlin的DSL特性支持,同时实现了一个集合类的流式Kotlin DSL实例及一个SQL风格的集合类DSL实例。
第11章主要介绍了Kotlin的运算符重载与约定,包括什么是运算符重载、重载二元算术运算符、重载自增自减一元运算符、重载比较运算符及重载计算赋值运算符等内容。
第12章主要介绍了Kotlin元编程、注解与反射的相关内容,包括元编程简介、声明注解、使用注解、处理注解、反射、类引用、函数引用、属性引用、绑定函数、使用反射获取泛型信息等内容。
第13章介绍Kotlin集成Spring Boot服务端开发,首先用Spring Boot快速开发一个Restful Hello World示例,然后给出了一个完整的图片爬虫Web应用项目案例。
第14章介绍如何使用Kotlin进行Android开发,首先给出了一个简单的Kotlin版本的Hello World Android示例程序,然后详细介绍了用Kotlin开发一个电影指南Android应用程序综合项目案例。
本书读者对象
* Kotlin入门人员;
* Kotlin进阶开发人员;
* Android 程序员;
* Java程序员;
* 其他编程爱好者;
* 相关培训机构的学员。
本书源程序获取方式
本书涉及的源代码需要读者自行下载。请登录清华大学出版社网站www.tup.com.cn,搜索到本书页面,在页面上找到“资源下载”栏目,然后单击“课件下载”或者“网络资源”按钮即可下载。
作者与致谢
笔者现就职于阿里巴巴集团,曾经参与了多种平台工具的开发,主要使用Java、Android、Scala、Groovy和Kotlin等语言或工具进行领域建模、架构设计和工具开发等,积累了大量经验。
感谢在本书写作过程中提供过帮助的各位朋友!也感谢在本书出版过程中提供过帮助的各位编辑,没有你们的付出,本书就不会顺利和读者见面!最后感谢各位读者选择了本书,祝你们学习愉快!
虽然笔者对书中所述内容都尽量核实,并多次进行文字校对,但因时间所限,加之水平所限,书中可能还存在疏漏和错误,敬请广大读者批评指正。联系E-mail:bookservice2008@163.com。
陈光剑
于杭州
