这是一门 Kotlin 语言从零基础到提高的教程,主要内容包括:Kotlin 语法基础、数据类型、字符串、运算符、程序流程控制、函数、高阶函数、Lambda 表达式、函数式编程 API、面向对象、数组、集合、协程、Kotlin 与 Java 互操作编程、DSL 语言和 SQL 框架 Exposed 等技术,最后还介绍了基于 Kotlin 的 Android 应用开发基础,以及使用 Kotlin Android 框架——Anko。
通过本课程的学习和训练,读者能够掌握 Kotlin 语言语法,熟悉 Kotlin 编程习惯,理解函数式编程精髓,进而能够从事以 Kotlin 为语言基础的 Android 应用开发、服务器端开发和前端开发等工作。
作者介绍关东升,在 IT 领域摸爬滚打20多年的老程序员、软件架构师、高级培训讲师、IT 作家。熟悉 Java、Kotlin、Python、iOS、Android、游戏开发、数据库开发与设计、软件架构设计等多种 IT 技术。
参与设计和开发北京市公交一卡通百亿级大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目。近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。
著有《Java 从小白到大牛》、《Kotlin 从小白到大牛》、《iOS 开发指南》、《Android 网络游戏开发实战》、《Cocos2d-x 实战》系列和《JSP 网络程序设计》等40多部计算机书籍。
课程内容 导读:为什么选择 Kotlin2017年5月19日 Google I/O 大会上,谷歌公司宣布 Kotlin 语言作为 Android 应用开发一级语言。由于工作需要的原因,我在 2015 年就接触到 Kotlin 语言,被它的简洁理念深深地吸引。我将以前用 Java 编写的 QQ 聊天工具用 Kotlin 语言重新编写,代码减少了30%。Kotlin 语言的设计者们,设计这门语言的目的是取代 Java。诞生了20多年的 Java 虽然还是排名第一的语言,但 Java 语言有很多诟病,我们从如下几个方面讨论一下。
对函数式编程的支持Java 对函数式编程的支持不够及时和彻底,直到 Java 8 才开始支持函数式编程,但 Java 8 中并不支持函数类型,不能定义高阶函数;而 Kotlin 彻底支持函数式编程。我们可以比较一些代码:
// Java面向对象代码片段String userId = (String) jsonObj.get("user_id");// 从clientList集合中删除用户for (ClientInfo info : clientList) { if (info.getUserId().equals(userId)) { clientList.remove(info); break; }}// Kotlin函数式编程代码片段val userId = jsonObject["user_id"] as Stringval clientInfo = clientList.first { it.userId == userId}// 从clientList集合中删除用户clientList.remove(clientInfo)
从上述代码比较可见函数式编程中不再需要那些 for 和 if 等流程控制语句,对于数据的处理更加简洁。函数式编程并不能完全取代面向对象编程,函数式编程擅长进行数据处理,如核心业务逻辑、算法实现等;而面向对象擅长构建UI界面编程、搭建系统架构等。
异常处理的理念Java 把异常分为受检查异常和运行期异常,编译器强制要求受检查异常必须捕获或抛出。事实上经过多年的实践,开发者发现即便是捕获了那些受检查异常处理起来也力不从心。受检查异常会使得程序结构变得混乱,代码大量增加。而 Kotlin 把所有的异常都看做是运行期异常,编译器不会强制要求捕获或抛出任何异常,开发人员可以酌情考虑是否捕获处理异常。我们再比较一些代码:
// Java文件复制代码片段try (FileInputStream fis = new FileInputStream("./TestDir/src.zip"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("./TestDir/subDir/src.zip"); BufferedOutputStream bos = new BufferedOutputStream(fos)) { // 准备一个缓冲区 byte[] buffer = new byte[1024]; // 首先读取一次 int len = bis.read(buffer); while (len != -1) { // 开始写入数据 bos.write(buffer, 0, len); // 再读取一次 len = bis.read(buffer); }} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}// Kotlin函数式编程代码片段FileInputStream("./TestDir/src.zip").use { fis -> FileOutputStream("./TestDir/subDir/src.zip").use { fos -> // 复制到输出流 fis.buffered().copyTo(fos.buffered()) println("复制完成") }}
上述代码实现了文件复制,Java 代码需要21行,而 Kotlin 代码只需要7行。
对可空类型的支持空指针异常是 Java 最为头痛的问题之一,Java 数据类型可以接收空值。而 Kotlin 数据类型默认不能接收空值,是非空数据类型,这样保证了数据类型的安全,防止空指针异常的发生。
这里我们只是比较了 Java 和 Kotlin 几个最突出的区别,更多的不同和细微的差别,还需要读者阅读此书,并自己编写其中的每一个示例,感受它们与 Java 的不同,感受 Kotlin 的简洁。
第01课:开篇综述Java 诞生到现在已经有20多年了,Java 仍然是非常热门的编程语言之一,很多平台中使用 Java 开发。但由于历史的原因 Java 语法有些繁琐、冗余,而本书要介绍的 Kotlin 语言设计目标是取代 Java 语言,简化应用开发。
Kotlin 语言简介Kotlin 语言是基于 Java 虚拟机(Java Virtual Machine,简称 JVM)的现代计算机语言。作为一种 Java 虚拟机语言 Kotlin 编写的程序可以运行在任何Java能够运行的地方。
Kotlin 语言历史Kotlin 语言是 JetBrains 公司[1]开发的,该公司是著名的计算机语言开发工具提供商,最著名的当属 Java 集成开发工具 IntelliJ IDEA。作为开发工具提供商 JetBrains 对于 Java 语言有着深入的理解,有着迫切地化繁为简的需求。JetBrains 从2010年开始构思,2011年推出 Kotlin 项目;2012年将 Kotlin 项目开源;2016年发布一个稳定版1.0;2017谷歌 I/O 全球开发者大会上,谷歌宣布 Kotlin 语言成为 Android 应用开发一级语言。
至于这种新的语言为什么命名为 Kotlin?这是因为新语言是由 JetBrains 的俄罗斯圣彼得堡罗斯团队设计和开发的,他们想用一个岛来命名新语言,或许有因为 Java 命名源自于爪哇(Java)岛,这里盛产 Java 咖啡。他们找到了位于圣彼得堡以西约30公里处芬兰湾中的一个科特林岛,科特林的英文是 Kotlin,因此将新语言命名为 Kotlin。
Kotlin 语言设计目标Kotlin 首先被设计为用来取代 Java 语言。目前主要的应用场景:
- 服务器端编程,基于 JavaEE 的 Web 服务器端开发和数据库编程等。
- Android 应用开发,替代 Java 语言编写 Android 应用程序。
Kotlin 这两种场景的应用都需要 Java 虚拟机(Java Virtual Machine,JVM)也是本书重点介绍的。此外,Kotlin 还有其他目前处于原型阶段的应用场景:
- 编译成 JavaScript 代码。Kotlin 代码还可以编译成 JavaScript 代码,这样就可以应用于 Web 前端开发。
- 编译成本地(Native)代码。Kotlin 代码还可以编译成本地(Native)代码,本地代码运行不再需要 Java 虚拟机,类似于 C 语言。
Kotlin 具体现代计算机语言特点,如类型推导、函数式编程等。下面详细解释一下。
简洁简洁是 Kotlin 最主要的特点,实现同样的功能 Kotlin 代码量会 Java 代码量缩减很多。Kotlin 中数据类、类型推导、Lambda 表达式和函数式编程都可以大大减少代码行数,使得代码更加简洁。
安全Kotlin 可以有效地防止程序员疏忽所导致的类型错误。Kotlin 与 Java 一样都是静态类型语言[2],编译器会在编译期间检查数据类型,这样程序员会在编码期间发现自己的错误,避免错误在运行运行期发生而导致系统崩溃。另外,Kotlin 与 Swift[3] 类似支持非空和可空类型,默认情况下 Kotlin 与 Swift 的数据类型声明的变量都是不能接收空值(null)的,这样的设计可以防止试图调用空对象而引发的空指针异常(NullPointerException),空指针异常也会导致系统崩溃。
类型推导Kotlin 与 Swift 类似都支持类型推导,Kotlin 编译器可以根据变量所在上下文环境推导出它的数据类型,这样在变量时可以省略明确指定数据类型。
支持函数式编程作为现代计算机语言 Kotlin 支持函数式编程,函数式编程优点:代码变得简洁、增强线程安全和便于测试。
支持面向对象虽然 Kotlin 支持函数式编程,但也不排除面向对象。面向对象与函数式编程并不是水火不容,函数式编程是对面向对象重要补充,而且面向对象仍然是编程语言的主流,面向对象便于系统分析与设计。
Java 具有良好的互操作性Kotlin 与 Java 具有100%互操作性,Kotlin 不需要任何转换或包装就可以调用 Java 对象,反之亦然。Kotlin 完全可以使用现有的 Java 框架或库。
免费开源Kotlin 源代码是开源免费的,它采用 Apache 2 许可证,源代码下载地址 详见这里。
Kotlin 与 Java 虚拟机Kotlin 是依赖于 Java 虚拟机运行的语言,因此初学者有必要熟悉一下 Java 虚拟机作用。
Java 虚拟机Java 应用程序能够跨平台运行,主要是通过 Java 虚拟机实现的。如图1-1所示,不同软硬件平台 Java 虚拟机是不同的,Java 虚拟机往下是不同的操作系统和 CPU,使用或开发时需要下载不同的 JRE 或 JDK 版本。Java 虚拟机往上是 Java 应用程序,Java 虚拟机屏蔽了不同软硬件平台,Java应用程序不需要修改,不需要重新编译直接可以在其他平台上运行。
图1-1 Java 虚拟机
Kotlin 应用程序运行过程要了解 Kotlin 应用程序运行过程,则需要先了解 Java 应用的运行过程。
Java 程序运行过程如图1-2所示,首先由 Java 编译器将 Java 源文件(*.java文件
)编译成为字节码文件(*.class文件
),这个过程可以通过 JDK(Java 开发工具包)提供的 javac 命令进行编译。当运行 Java 字节码文件时,由 Java 虚拟机中的解释器将字节码解释成为机器码去执行,这个过程可以通过 JRE(Java 运行环境)提供的 Java 命令解释运行。
图1-2 Java 程序运行过程
基于 Java 虚拟机的 Kotlin 应用程序运行过程类似于 Java 程序运行过程,其过程如图1-3所示,首先由 Kotlin 编译器将 Kotlin 源文件(*.kt 文件
)编译成为字节码文件(* Kt.class 文件
),注意这个过程中文件名会发生变化,会增加 Kt 后缀,例如,Hello.kt 源文件编译后为 HelloKt.class 文件。编译过程可以通过 Kotlin 编译器提供的 kotlinc 命令进行编译。当运行 Kotlin 字节码文件时,由 Java 解释器将字节码解释成为机器码去执行,这个过程也是通过 java 命令解释,但需要 Kotlin 运行时库支持才能正常运行。
图1-3 Kotlin 基于 Java 虚拟机的应用程序运行过程
如何获得帮助对于一个初学者必须要熟悉如下几个 Kotlin 相关网址:
- Kotlin 源代码网址
- Kotlin 官网
- Kotlin 官方参考文档
- Kotlin 标准库
下面重点说明 Kotlin 标准库,其他的网址不再赘述。Kotlin 标准库是由 Kotlin 官方开发的,Kotlin 语言是基于 Java 的,能够与 Java 完全地互操作,所以 Kotlin 可以调用 Java 对象,反之亦然。所以,Kotlin 语言尽可能利用 Java 自带库,然后在这些库上进行一些扩展(Extension)和必要的封装,这就是 Kotlin 标准库所包含的内容。
提示:扩展(Extension)是 Kotlin、C#、Swift 和 Objective-C 等语言特有的新功能,类似于继承机制,它可以在一个已有的类上扩展函数或属性,从而为该类添加新功能。有关扩展后面第10章会详细介绍。
作为 Kotlin 程序员应该熟悉如何使用 Kotlin 标准库的 API 文档。打开 Kotlin 标准库网址,页面如图1-4所示。
图1-4 Kotlin 标准库的 API 文档
下面介绍一下如何使用 API 文档,熟悉一下 API 文档页面中的各个部分含义,如图1-5所示是 Array 类 API 文档,从图中可见类中包含:构造函数、函数和扩展函数,此外,还包含属性和从父类继承下来的函数和属性等内容。接口与类 API 的类似这里不再赘述。
图1-5 API 文档页面各个部分
[1] JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄罗斯的圣彼得堡及美国的波士顿设有开发团队。
[2] 静态类型语言会在编译期检查变量或表达式数据类型,如 Java 和 C++ 等。与静态类型语言相对应的是动态类型语言,动态类型语言会在运行期检查变量或表达式数据类型,如 Python 和 PHP 等。
[3] Swift 语言是苹果公司推出的编程语言,目前主要应用于苹果的 macOS、iOS、tvOS 和 watchOS 4 等应用开发。
第02课:开发环境搭建《论语•魏灵公》曰:“工欲善其事,必先利其器”,做好一件事,准备工作非常重要。在开始学习 Kotlin 技术之前,先介绍如何搭建 Kotlin 开发环境是非常重要的一件事件。
开发 Kotlin 主要的 IDE(Integrated Development Environments,集成开发环境)工具有:IntelliJ IDEA、Eclipse 和 Android Studio,IntelliJ IDEA 和 Eclipse 可以编写一般的 Kotlin 程序,使用 Eclipse 开发 Kotlin 程序需要安装插件。要想编写 Android 应用程序需要使用 Android Studio 工具,如果使用 Android Studio 3 之前版本需要安装 Kotlin 插件。
另外,JetBrains 提供的工具 Kotlin 编译器,开发人员可以使用文本编辑工具来编写 Kotlin 程序,然后再使用 Kotlin 编译器来编译程序。
本课介绍 IntelliJ IDEA、Eclipse 和 Kotlin 编译器,以及 JDK 的安装和配置,而 Android Studio 安装配置超出了本书的范围。
提示:考虑到大部分读者使用的还是 Windows 系统,因此本书重点介绍 Windows 平台下 Kotlin 开发环境的搭建。
JDK 工具包JDK(Java Development Kit,JDK)工具包是最基础的 Java 开发工具,IntelliJ IDEA、Eclipse 和 Kotlin 编译器等工具也依赖于 JDK。
JDK 下载和安装截止本书编写完成为止,Oracle 公司对外发布了最新 JDK 9,但 JDK 8 是主流版本,因此本书推荐使用 JDK 8。图2-1所示是 JDK 8 下载页面,它的下载地址请单击这里。其中有很多版本,支持的操作系统有 Linux、Mac OS X[1]、Solaris[2] 和 Windows。
注意选择对应的操作系统,以及32位还是64位安装的文件。
如果电脑是 Windows 10 64 位系统,则首先选中 Accept License Agreement(同意许可协议),然后单击 jdk-8u131-windows-x64.exe 下载 JDK 文件。
图2‑1 下载 JDK8 页面
下载完成后就可以安装了,双击 jdk-8u131-windows-x64.exe 文件即可安装,安装过程中会弹出如图2-2所示的“内容选择”对话框,其中“开发工具”是 JDK 内容;“源代码”是安装 Java SE 源代码文件,如果安装源代码,安装完成后会见如图2-3所示的 src.zip 文件就是源代码文件;公共 JRE 就是 Java 运行环境了,这里可以不安装,因为 JDK 文件夹中也会有一个 JRE,如图2-3所示的 jre 文件夹。
图2‑2 安装内容选择对话框
图2‑3 JDK 安装后的内容
设置环境变量完成之后,需要设置环境变量,主要包括:
JAVA_HOME
环境变量,指向 JDK 目录,很多 Java 工具运行都需要的JAVA_HOME
环境变量,所以笔者推荐大家添加这变量。将 JDK\bin 目录添加到 Path 环境变量中,这样在任何路径下都可以执行 JDK 提供的工具指令。
首先需要打开 Windows 系统环境变量设置对话框,打开该对话框有很多方式,如果 Windows 10 系统,则打开步骤是:右击屏幕左下角的 Windows 图标,单击“系统”菜单,然后弹出如图2-4所示的 Windows 系统对话框,单击左边的“高级系统设置”超链接,打开如图2-5所示的高级系统设置对话框。
图2‑4 Windows 系统对话框
图2‑5 高级系统设置对话框
在如图2-5所示的高级系统设置对话框中,单击“环境变量”按钮打开环境变量设置对话框,如图2-6所示,可以在用户变量(上半部分,只配置当前用户)或系统变量(下半部分,配置所有用户)添加环境变量。一般情况下,在用户变量中设置环境变量。
图2‑6 环境变量设置对话框
在用户变量部分单击“新建”按钮,系统弹出对话框,如图2-7所示。设置“变量名”设置为JAVA_HOME
,“变量值”设置为 JDK 安装路径。最后单击“确定”按钮完成设置。然后追加 Path 环境变量,在用户变量中找到 Path,双击 Path 弹出 Path 变量对话框,如图2-8(a)所示,单击“新建”按钮,追加%JAVA_HOME%\bin
,如图2-8(b)所示。追加完成单击“确定”按钮完成设置。
图2‑7 设置 JAVA_HOME
图2‑8 追加 Path 变量对话框
下面测试一下环境设置是否成功,可以通过在命令提示行中输入 javac 指令,看是否能够找到该指令,如图2-9所示,则说明环境设置成功。
图2‑9 通过命令提示行测试环境变量
提示:打开命令行工具,也可以通过右击屏幕左下角的 Windows 图标,单击“命令提示符”菜单实现。
IntelliJ IDEA 开发工具IntelliJ IDEA 是 JetBrains 官方提供的 IDE 开发工具,主要用来编写 Java 程序,也可以编写 Kotlin 程序。JetBrains 公司开发的很多工具都好评如潮,如图2-10所示 JetBrains 开发的工具,这些工具可以编写 C/C++、C#、DSL、Go、Groovy、Java、JavaScript、Kotlin、Objective-C、PHP、Python、Ruby、Scala、SQL 和 Swift 语言。
图2-10 JetBrains 公司工具
单击这里下载IntelliJ IDEA,如图2-11所示页面可以见,IntelliJ IDEA 有两个版本:Ultimate(旗舰版)和 Community(社区版)。旗舰版是收费的,可以免费试用30天,如果超过30天,则需要购买软件许可(License key)。社区版是完全免费的,对于学习 Kotlin 语言社区版已经足够了。在图2-11页面下载 IntelliJ IDEA 工具,完成之后即可安装了。
图2-11 下载 IntelliJ IDEA
Eclipse 开发工具Eclipse 是著名的跨平台 IDE 工具,最初 Eclipse 是 IBM 支持开发的免费 Java 开发工具,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟 Eclipse 基金会管理。Eclipse 的本身也是一个框架平台,它有着丰富的插件,例如 C++、Python、PHP 等开发其他语言的插件。另外,Eclipse 是绿色软件不需要写注册表,卸载非常方便。
Eclipse 下载和安装本书采用 Eclipse 4.6[3] 版本作为 IDE 工具,请单击这里下载 Eclipse 4.6,如图2-12所示是 Windows 系统的下载 Eclipse 下载页面,单击“DOWNLOAD 64 bit”按钮页面会跳转到,如图2-13所示的选择下载镜像地址页面,单击 Select Another Mirror 连接可以改变下载镜像地址,然后单击 DOWNLOAD 按钮开始下载。
图2‑12 Eclipse 4.6 下载页面
图2‑13 选择下载镜像地址
下载完成后的文件是 eclipse-inst-win64.exe,事实上 eclipse-inst-win64.exe 是安装各种 Eclipse 版本客户端,双击 eclipse-inst-win64.exe 弹出如图2-14所示的界面,选择 Eclipse IDE for Java Developers 进入如图2-15所示的界面,在该界面中 Installation Folder 可以改变安装目录,选中 create start menu entry 可以添加快捷方式到开始菜单,选中 create desktop shortcut 可以在桌面创建快捷方式,设置完成后单击 INSTALL 按钮开始安装,安装完成如果2-16所示,单击 LAUNCH 按钮启动 Eclipse。
图2‑14 安装各种 Eclipse 版本客户端
图2‑15 Eclipse 安装
图2‑16 Eclipse 安装完成
在 Eclipse 启动过程中,会弹出如图2-17所示,选择工作空间(Workspace)对话框,工作空间是用来保存项目的目录。默认情况下每次 Eclipse 启动时候都需要选择工作空间,如果你觉得每次启动时都选择工作空间比较麻烦,可以选中 Use this as the default and to not ask again 选项,设置工作空间默认目录。初次启动 Eclipse 成功后,会进入如图2-18所示的欢迎界面。
图2‑17 选择工作空间
图2‑18 Eclipse 欢迎界面
安装 Kotlin 插件Kotlin 插件可以通过 Eclipse Marketplace 在线安装,Eclipse Marketplace 是 Eclipse 插件市场。安装 Kotlin 插件过程如下,首先启动 Eclipse,选择菜单 Help→Eclipse Marketplace 弹出如图2-19所示的对话框,在 Find 文本框中输入“kotlin”查询关键字,然后再单击 Go 按钮进行查询。查询结果如图2-20所示,单击 Install 按钮就可以安装了。
图2‑19 安装插件
图2‑20 查询结果
Kotlin 编译器IDE 开发工具提供了强大开发能力,提供了语法提示功能,但对于学习 Kotlin 的学员而言语法提示并不是件好事,笔者建议初学者采用文本编辑工具 +Kotlin 编译器学习。开发过程就使用文本编辑工具编写 Kotlin 源程序,然后使用 Kotlin 编译器提供的 kotlinc 指令编译 Kotlin 源程序,再使用 Kotlin 编译器提供的 kotlin 指令运行。
下载 Kotlin 编译器截止本书编写完成为止,Kotlin 最新版本是 1.1.5,Kotlin 发布网址请单击这里,打开该网址看到如图2-21所示页面,其中 kotlin-compiler-1.1.51.zip 可以下载 Kotlin 编译器。另外,Source code (zip) 和 Source code (tar.gz) 感兴趣可以下载。
图2‑21 下载 Kotlin 页面
在图2-21页面单击 kotlin-compiler-1.1.51.zip 超链接下载 Kotlin 编译器压缩文件,下载完成之后解压该文件,其中 kotlinc\bin 存放了各种平台的 kotlin 和 kotlinc 指令。
设置 Kotlin 编译器环境变量设置 Kotlin 编译器环境变量与 JDK 设置环境变量类似。需要设置环境变量,主要包括:
KOTLIN_HOME
环境变量,指向 Kotlin 编译器目录。将 Kotlin 编译器下的 bin 目录添加到 Path 环境变量中,这样在任何路径下都可以执行 Kotlin 编译器提供的工具指令。
首先参考2.1.1节添加JAVA_HOME
变量的过程添加KOTLIN_HOME
变量,如图2-22所示,设置“变量名”设置为KOTLIN_HOME
,“变量值”设置为 Kotlin 编译器解压路径。然后参考2.1.1节将 Kotlin 编译器下的 bin 目录追加到 Path 环境变量,如图2-23所示追加%KOTLIN_HOME%\bin
。
图2‑22 设置KOTLIN_HOME
图2‑23 追加 Path 变量对话框
下面测试一下环境设置是否成功,可通过在命令提示行中输入 kotlinc –version或kotlin -version 指令,如果出现如图2-9所示的内容,则说明环境设置成功。
图2‑24 通过命令提示行测试环境变量
文本编辑工具Windows 平台下的文本编辑工具有很多,常用如下:
- 记事本:Windows 平台自带的文本编辑工具,关键字不能高亮显示。
- UltraEdit:历史悠久强大的文本编辑工具,可支持文本列模式等很多有用的功能,请参见官网。
- EditPlus:历史悠久强大的文本编辑工具,小巧、轻便、灵活,请参见官网。
- Sublime Text:近年来发展和壮大的文本编辑工具,所有的设置没有图形界面,在 JSON[4] 格式的文件中进行的,初学者入门比较难,请参见官网。各个平台都有 Sublime Text 版本。
由于目前开源社区为 Sublime Text 提供了一些扩展功能,而且各个平台都有 Sublime Text 版本,因此本书重点介绍 Sublime Text。下面介绍在 Sublime Text 中安装 Kotlin 语言包和 Sublime Text 与 Kotlin 编译器集成。
在Sublime Text 中安装 Kotlin 语言包在 Sublime Text 中安装 Kotlin 语言包后,Kotlin 关键字等内容会高亮显示。GitHub 上有开发人员提供了一个针对 Sublime Text 2 的 Kotlin 语言包,这个语言包也适用于 Sublime Text 3。打开上述 Github 网址,找到下载和安装说明,如图2-25所示,笔者推荐下载 Kotlin.sublime-package,这种包文件安装方便。
图2‑25 Kotlin 语言包下载和安装说明
在如图2-25所示的页面中单击 Kotlin.sublime-package 超链接下载该文件,下载完成后将 Kotlin.sublime-package 文件复制到 \Data\Installed Packages 中,然后重启 Sublime Text,打开 Kotlin 源文件,会看到如图2-26所示界面中 Kotlin 的关键字等内容会高亮显示。
图2‑26 安装 Kotlin 语言包
Sublime Text 与 Kotlin 编译器集成Sublime Text 与 Kotlin 编译器集成后,就可以在 Sublime Text 中编译和运行 Kotlin 程序了,而不用在命令提示行等终端中编译和运行。GitHub 上也有人提供了一个针对 Sublime Text 与 Kotlin 编译器集成文件 kotlin.sublime-build,文件内容如下:
{ "cmd": ["path\\to\\Kotlinc\\bin\\kotlinc.bat", "$file", "-include-runtime", "-d", "$file_path\\\\$file_base_name.jar"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "working_dir": "$file_path", "selector": "source.Kotlin", "windows": { "encoding": "utf-8" }, "variants": [ { "name": "Run", "cmd": ["java", "-jar", "$file_path\\\\$file_base_name.jar"] } ]}
重新编辑 kotlin.sublime-build 内容,修改第一行中的“path\to\Kotlinc\bin\kotlinc.bat”修改为“C:\kotlinc\bin\kotlinc.bat”,其中 C:\kotlinc 是笔者自己的 Kotlin 编译器安装目录,读者根据自己情况修改这个路径。修为完成将 kotlin.sublime-build 文件复制到 \Data\Packages\User 中,然后重启 Sublime Text,如果安装成功可以在 Sublime Text 菜单 Tools→Build System 中找到 kotlin 子菜单项,如图2-27所示。
图2‑27 安装成功
具体使用是选择菜单 Tools→Build With 或快捷键 Ctrl+Shift+B,则打开如图2-28所示的选择对话框,其中选择 kotlin 是编译当前 Kotlin 源文件,如图2-29所示,选择 kotlin-Run 是运行 Kotlin 程序,如图2-30所示。
图2‑28 选择对话框
图2‑29 编译 Kotlin 源文件
图2‑30 运行 Kotlin 程序
每一种文本编辑工具的配置方式都有很大差别,这里笔者不能一一穷尽,其他工具的配置过程读者可以参考工具的官方资料。
小结通过对本课的学习,读者可以了解 Kotlin 开发工具,其中重点是 IntelliJ IDEA 工具的下载、安装和使用。此外,还介绍了其他的一些工具:Eclipse 和 Kotlin 编译器+Sublime Text 文本编辑工具的配置过程。
[1] 苹果桌面操作系统,基于 UNIX 操作系统,现在改名为 macOS。
[2] 原 Sun 公司 UNIX 操作系统,现在被 Oracle 公司收购。
[3] Eclipse 4.6 开发代号是 Neon(氖气),Eclipse 开发代号的首字母是按照字母顺序排列的。Eclipse 4.7 开发代号是 Oxygen(氧气)。
[4] JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式,采用键值对形式,如:{"firstName": "John"}。
第03课:第一个 Kotlin 程序 第04课:Kotlin 语法基础 第05课:数据类型 第06课:字符串 第07课:运算符 第08课:程序流程控制 第09课:Kotlin 函数式编程 第10课:Kotlin 面向对象 第11课:数组和集合 第12课:Kotlin 并发访问技术——协程 第13课:Kotlin 与 Java 互操作编程 第14课:DSL 语言与轻量级 SQL 框架——Exposed 第15课:基于 Kotlin 的 Android 应用开发与 Anko 框架阅读全文: http://gitbook.cn/gitchat/column/5a4ccd9a5e04d7622ba2ab93