前言

前言

2011年,JetBrains宣布开发Kotlin编程语言。这门新语言可以用来编写在Java虚拟机上运行的代码,是Java和Scala语言之外的又一选择。六年后,Google宣布,Kotlin正式获得官方支持,可用于Android应用开发。

Kotlin的应用范围迅速扩展,它从一门前途光明的编程语言摇身一变,成了这个世界上最重要的移动操作系统的钦定开发语言。Kotlin语法简洁,具备现代高级语言特性,并且能和Java遗留代码无缝互操作。因为具备这些优势,今天,越来越多的大公司已开始接纳Kotlin,如Google、Uber、Netflix、Capital One、Amazon等。

为什么要学Kotlin

要想知道为什么Kotlin广受欢迎,首先要理解Java在现代软件开发领域中所扮演的角色。这两门语言联系得非常紧密,因为很多时候,Kotlin代码的开发目标就是要在Java虚拟机上运行。

Java语言比较稳健,久经考验。多年来,它一直是最常用的一种编程语言,造就了庞大的生产代码库。自从1995年Java问世以来,对于优秀的编程语言应满足什么条件,人们已通过实践积攒了很多经验教训。然而,Java却裹足不前,开发者喜欢的很多现代语言高级特性,它都没有,或者迟迟才加入。

Kotlin从这些经验教训中受益良多,而Java(和其他语言,比如Scala)中的某些早期设计却愈显陈旧。脱胎于旧语言,Kotlin解决了它们的很多痛点,进化成了一门优秀的语言。相比Java,Kotlin进步巨大,带来了更可靠的开发体验。至于它是怎么做到的,本书会一一解答。

作为一门新秀语言,Kotlin不仅支持编写代码在虚拟机上运行,而且还是一门跨平台的通用型语言:你可以用Kotlin开发各种类型的原生应用,如macOS应用、Windows应用、JavaScript应用,当然还有Android应用。平台独立性意味着Kotlin有各种各样的用途。

本书读者对象

本书适合各类开发人员:有经验的Android开发者,他们需要Java所不具备的现代语言特性;对Kotlin感兴趣的后端开发者;想选一门高性能的编译型语言来学习的新手。

支持Android开发可能是你阅读本书的理由,但本书内容并不局限于用Kotlin开发Android应用。事实上,除了专门讨论Android开发的第21章,本书所有的Kotlin代码只是兼容Android开发框架而已。也就是说,如果你对使用Kotlin开发Android应用感兴趣,本书介绍的一些常用编程模式会让基于Kotlin的Android应用开发更轻松些。

Kotlin博采众长,受很多语言影响,但这并不表示你要掌握其他语言才能学习Kotlin。本书时不时会讨论与Kotlin代码等效的Java代码。如果有Java编程经验,理解这两种语言的关系会更容易。没有的话,看Java如何解决同一问题,会帮助你掌握Kotlin语言特性的原理。

如何使用本书

本书不是参考指南。我们的目标是带你学习Kotlin编程语言的关键部分。你将学习搭建各种示例项目,在此过程中,一步步掌握Kotlin的基础知识。为了充分利用本书,建议你一边阅读一边输入并测试各种代码示例。这样会有助于你形成“肌肉记忆”,带着逐渐积累的知识,攻克一章又一章。

另外,每章主题都是基于上一章内容编排的,所以最好不要跳读。即使你觉得某个章节的内容和其他语言里的差不多,也应该读上一遍,因为处理同样的问题,Kotlin有自己特别的地方。本书首先介绍像变量、集合这样的主题,然后学习面向对象编程和函数式编程技术,这么一路走来,你就会明白为什么Kotlin语言这么强大。学完本书,你将掌握Kotlin基础知识,从一名新手蜕变成更高级的开发者。

总之,一定要多花时间。掌握了基础知识之后,还应进一步深入扩展学习。Kotlin语言的参考网站是https://kotlinlang.org/docs/reference。遇到任何新奇的知识点时,请随时查阅并动手实践。

深入学习

大部分章末包含一节或多节名为“深入学习”的内容。其中,有不少小节用来阐述Kotlin语言的底层运行机制。需要说明的是,各章的代码示例不依赖于这些小节的内容,但它们提供了你可能感兴趣或对你有帮助的额外信息。

挑战练习

大部分章末配有练习题。设计这些额外的练习是为了帮你进一步理解Kotlin语言。希望你能接受挑战,多多练习,努力提高Kotlin技能。1

1读者可前往本书图灵社区页面(http://www.ituring.com.cn/book/2610)下载练习题答案。——编者注

排版约定

在创建本书中的一个个项目时,我们会先讨论一个主题,然后一步步带你在项目里运用所学知识。为了方便读者阅读,本书采用以下排版约定。

变量、值和类型,以及类、函数、接口名都以等宽字体显示。

所有代码清单都以等宽字体显示。需要输入的代码总是以粗体显示。应该删除的代码会打上删除线。例如,下列代码表示,你需要删除y变量定义,添加z变量定义。

var x = "Python"
var y = "Java"
var z = "Kotlin"

Kotlin是一门相对年轻的语言,所以很多编码规则还在制定中。时间一长,你可能就会创造出自己的编码风格,不过我们倾向于遵循JetBrains和Google的Kotlin编码风格指南。

展望未来

本书的示例需要你多花点时间。一旦掌握了Kotlin语法,你的开发过程就会变得清晰、务实和顺畅。即便达到了一定水平,你也应坚持前行,不断进步。最终,你会体会到,学习一门新语言真的太有收获了。

电子书

扫描如下二维码,即可购买本书电子版。

目录

  • 版权声明
  • 献词
  • 致谢
  • 前言
  • 第 1 章 Kotlin应用开发初体验
  • 第 2 章 变量、常量和类型
  • 第 3 章 条件语句
  • 第 4 章 函数
  • 第 5 章 匿名函数与函数类型
  • 第 6 章 null安全与异常
  • 第 7 章 字符串
  • 第 8 章 数
  • 第 9 章 标准库函数
  • 第 10 章 List与Set
  • 第 11 章 Map
  • 第 12 章 定义类
  • 第 13 章 初始化
  • 第 14 章 继承
  • 第 15 章 对象
  • 第 16 章 接口与抽象类
  • 第 17 章 泛型
  • 第 18 章 扩展
  • 第 19 章 函数式编程基础
  • 第 20 章 Kotlin与Java互操作
  • 第 21 章 用Kotlin开发首个Android应用
  • 第 22 章 Kotlin协程简介
  • 第 23 章 编后语
  • 附录 A 补充挑战练习
  • 术语表