改进翻译

使用命令行编译器

作者 Hadi Hariri,johnpoint、高金龙(翻译)
本教程将引导我们使用命令行编译器创建 Hello World 应用程序。

下载编译器

每个版本都附带一个独立版本的编译器。可以从 GitHub Releases 页下载最新版本(kotlin-compiler-1.4.20.zip)。

手动安装

将独立的编译器解压缩到一个目录中,并将 bin 目录添加到系统路径中。bin 目录包含了在 Windows、OS X 及 Linux 上编译与运行 Kotlin 所需的脚本。

SDKMAN!

在基于 UNIX 的系统(如 OS X、Linux、Cygwin、FreeBSD 和 Solaris)上安装 Kotlin 的更简单方法是使用 SDKMAN!。 只需在终端中运行以下命令并按照说明操作即可:

$ curl -s https://get.sdkman.io | bash

接下来打开一个新终端并安装 Kotlin:

$ sdk install kotlin

Homebrew

或者,在 OS X上,可以通过 Homebrew 安装编译器。

$ brew update
$ brew install kotlin

Snap

如果使用的是 Ubuntu 16.04 或更高版本,那么可以在命令行安装编译器:

$ sudo snap install --classic kotlin

创建并运行第一个应用程序

  1. 在 Kotlin 中创建一个显示 "Hello, World!" 的简单应用程序。使用喜欢的编辑器,创建一个名为 hello.kt 的新文件,内容如下:

    fun main() {
        println("Hello, World!")
    }
    
  2. 使用 Kotlin 编译器编译应用程序:

     $ kotlinc hello.kt -include-runtime -d hello.jar
    

    -d 选项表示生成的类文件的输出路径,可以是目录,也可以是一个 .jar 文件。-include-runtime 选项通过在其中包含 Kotlin 运行时库,使得生成的 .jar 文件中自包含运行时库且可运行。 如果要查看所有可用选项,请运行以下命令:

     $ kotlinc -help
    
  3. 运行该应用程序。

     $ java -jar hello.jar
    

编译库

如果你正在开发一个供其他 Kotlin 应用程序使用的库,那么可以构建 .jar 文件,而不将 Kotlin 运行时包含在其中。

$ kotlinc hello.kt -d hello.jar

由于以这种方式编译的二进制文件依赖于 Kotlin 运行时,因此无论何时使用编译库,都应确保后者存在于类路径中。

还可以使用 kotlin 脚本来运行 Kotlin 编译器生成的二进制文件:

$ kotlin -classpath hello.jar HelloKt

HelloKt 是 Kotlin 编译器为名为 hello.kt 的文件生成的主类名。

运行 REPL

可以运行没有参数的编译器来拥有交互式 shell。可以输入任何有效的 Kotlin 代码并查看结果。

Shell

使用命令行运行脚本

Kotlin 也可以用作脚本语言。脚本是具有顶层可执行代码的 Kotlin 源文件(.kts)。

import java.io.File

// 获取传入的路径,即“-d 一些/路径”或使用当前路径。
val path = if (args.contains("-d")) args[1 + args.indexOf("-d")]
           else "."

val folders = File(path).listFiles { file -> file.isDirectory() }
folders?.forEach { folder -> println(folder) }

要运行脚本,我们只需使用相应的脚本文件将 -script 选项传递给编译器。

$ kotlinc -script list_folders.kts -- -d <path_to_folder_to_inspect>

自 1.3.0 以来,Kotlin 对脚本定制提供了实验性支持,例如添加外部属性、提供静态或动态依赖关系等。自定义由所谓的 脚本定义 带有适当支持代码的带注释的 kotlin 类定义。脚本文件扩展名用于选择适当的定义。

当适当的 jar 文件包含在编译类路径中时,会自动检测并正确应用正确编写的脚本定义。或可以使用编译器的 -script-templates 选项来手动定义:

$ kotlinc -script-templates org.example.CustomScriptDefinition -script custom.script1.kts

有关其他详细信息,请参阅KEEP-75