前言 2011年,JetBrains公司宣布开发Kotlin编程语言,这是一种在Java虚拟机上运行的替代Java或Scala编写代码的语言。6年后,Google公司宣布Kotlin成为Android操作系统官方支持的开发语言。 作为一个前途光明的编程语言,Kotlin很快成为全世界最重要的移动操作系统应用程序的编程语言。Kotlin具有语法简洁,可以与传统Java代码无缝互操作等特点,包括Google、Uber、Netflix、Amazon等,都因其突出的优点选择了Kotlin。 为什么是Kotlin 要想理解Kotlin强大的吸引力,首先需要了解Java在现代软件开发领域中的作用。这两种语言密切相关,因为Kotlin代码通常是为Java虚拟机编写的。 Java是一种强大且经受了时间考验的语言,多年来一直是生产代码库中最常用的语言之一。然而,自从Java在1995年发布以来,我们对于什么是优秀的编程语言有了很多新的认识。对于使用更现代化语言的开发人员来说,Java缺少许多先进的功能。 Kotlin受益于从Java(以及其他语言,如Scala等)中获得的经验教训,因为一些设计决策在Java中已经过时。Kotlin在老旧语言的基础上不断进化,并纠正了它们的缺陷。在接下来的章节将介绍更多有关Kotlin如何改进Java并提供更可靠开发体验的内容。 Kotlin不仅是一个能在Java虚拟机上运行的语言,它还是一种跨平台语言,旨在成为通用的编程语言: Kotlin可用于编写本机macOS、iOS、Windows、JavaScript以及Android等应用程序。近年来,JetBrains公司一直致力于投资这些跨平台功能。Kotlin跨平台提供了一种独特的方式来共享应用程序之间的代码,并且使得Kotlin的应用范围超越了Java。 本书面向的读者 这是一本面向各类开发人员的书: 有经验的Android开发人员; 想要超越Java提供的现代功能; 对Kotlin的功能感兴趣的服务器端开发人员; 想要在本机或Web应用程序之间共享Kotlin代码的开发人员; 想要进入高性能编译语言领域的新手开发人员等。 本书并不仅限于Kotlin在Android上的编程,实际上,本书中所有的Kotlin代码都与Android框架无关。当然,如果有兴趣使用Kotlin进行Android应用程序开发,本书也展示了一些常见的用Kotlin编写Android应用程序模式。 尽管Kotlin受到许多其他语言的影响,但也可以不需要了解其他语言的细节直接学习Kotlin。书中随时会讨论Kotlin代码与Java代码的等效性,以及Kotlin与其他语言的相似之处。如果有这些语言的使用经验,将有助于理解Kotlin与所支持平台之间的关系。即使不熟悉这些,但看到另一种语言如何解决相同的问题也有助于掌握Kotlin开发的原则。 如何使用本书 本书不是一本参考指南。其目标是指导读者理解Kotlin编程语言中最重要的部分,通过项目实例逐步学习并积累知识。为了充分利用本书,建议在阅读过程中将书中的示例代码逐字输入。通过完成这些项目,可以帮助建立肌肉记忆,并为后续章节的学习提供支持。 此外,本书的每章节都建立在上一章节所介绍的主题之上,因此建议不要跳跃式地阅读。即使觉得自己熟悉其他语言中的某个主题,也建议读者按顺序阅读——Kotlin以独特的方式处理许多问题。从变量和控制流等入门主题开始,逐步掌握面向对象和函数式编程技术,尝试使用Kotlin的官方方法运行异步代码,并涉猎Kotlin的跨平台能力。通过本书的学习,读者可以从一个初学者逐渐转变为一个更高级的开发者,并逐步建立对Kotlin的深入理解。 扫描书中提供的二维码可获得Kotlin参考文档,供读者深入了解任何感兴趣的内容,并进行实验。本书旨在为读者提供一个全面的入门指南,但学习编程需要时间和实践,所以不要急于求成。 好奇之处 本书的大部分章节中包括一个或两个名为“好奇之处”的小节,此部分着重介绍Kotlin语言的底层机制。章节中的示例并不依赖此部分内容,但它们提供了额外的信息,有利于Kotlin学习,有助于更深入地理解Kotlin,进一步扩展知识。如果对某个主题感到好奇或想要深入了解,建议阅读这些附加内容。 挑战之处 本书的很多章节都以一个或多个“挑战之处”结尾,通过这些附加的问题,进一步加深对Kotlin的理解。建议读者尝试解决这些问题,以提升Kotlin技能。这些挑战可以巩固所学知识,并将其应用于实际的编程场景中。 其他章节通常会在先前的解决方案基础上进行构建,为了不影响到后续章节的学习,建议在尝试挑战之前对已完成项目进行备份,还可以扫描书中提供的二维码获得网址,下载书中练习题的解答。 排版约定 在构建本书中的项目时,首先会介绍一个主题,然后展示如何应用新学习的知识。为了清晰起见,书中遵循以下的排版约定。 (1) 变量、值和类型使用等宽字体显示。类、函数和接口名称使用加粗字体。 (2) 所有程序清单都以等宽字体显示。如果需要在程序清单中键入某些代码,该部分代码将用粗体表示。如果需要在程序清单中删除某些代码,该部分代码将使用删除线划掉。在以下示例中,删除定义变量y的行,并添加一个名为z的变量: var x = "Python" var y = "Java" var z = "Kotlin" (3) Kotlin是一门成熟的语言,其编码规范随着时间的推移仍在不断发展。虽然每位读者都可能会形成自己的编码风格,但书中遵循了JetBrains和Google的Kotlin编码规范。JetBrains的编码规范和Google的风格指南可扫描相关二维码获得链接。 展望未来 在学习过程中慢慢消化书中的示例,一旦掌握了Kotlin的语法,就会发现书中示例的开发过程清晰、务实而流畅。在此之前,请继续努力,学习一门新的语言会带来丰厚的回报。