疯狂Kotlin讲义连载之 命令行编译、运行Kotlin

1,923 阅读6分钟

今天介绍使用命令行环境编译、运行Kotlin,与其他编程语言类似,Kotlin同样需要下载并安装对应的SDK,接下来即可使用该SDK提供的命令来编译、运行Kotlin程序。

下载、配置Kotlin的SDK

下载和安装Kotlin SDK请按如下步骤进行。

1)登https://github.com/JetBrains/kotlin/releases,看到Kotlin SDK的最新发布本,即可看到如图

1.1所示页面。本书成书之时,Kotlin SDK的最新版本是1.1.4-2,本书所有的案例也是基于该版本SDK的。


图1.1下载Kotlin SDK的页面

2)单击如图1.1所示页面的链接,即可下载得到一个kotlin-compiler-1.1.4-2.zip压缩包文件。

3)将上面压缩文件解压到任意目录下,即可看到如下文件路径。


 bin:该路径下存放了Kotlin SDK的各种工具命令,常用的kolinckotlin等命令就放在该路径下。

 lib:该目录下包含了Kotlin的各种工具JAR包。

 licenseKotlin项目相关的各种授权文档。

在上面路径中,bin路径是一个非常有用的路径,这个路径下包含了编译和运行Kotlin程序的kotlinckotlin两个命令。除此之外,还包含了kotlinc-jvmkotlinc-js等工具命令。其中kolinc
kotlinc-jvm是一样的,都用于将Kotlin程序编译成适用于JVM的字节码文件,而kotlin-js则用于将Kotlin程序编译成JavaScript代码。

4)将解压路径下的bin目录添加到系统的PATH环境变量中,这样即可保证操作系统能通过PATH环境变量找到kotlinckotlin等工具命令。

5)将解压路径下lib子目录中kotlin-stdlib.jar文件(该文件与kotlin-runtime.jar文件相同,都代表了Kotlin的运行时环境库)添加到CLASSPATH环境变量中,这样即可保证运行Kotlin程序时能正常加载Kotlin的运行时环境库。

提示:本书假设读者已有最基本的Java编程基础,因此本书不会逐步介绍环境变量配置这些基础内容,如果读者需要学习环境变量配置这些基础知识,建议参考《疯狂Java讲义》一书。

第一个Kotlin程序

编辑Kotlin
源代码可以使用任何无格式的文本编辑器,在Windows上可使用记事本(NotePad)、EditPlus等程序,在Linux平台上可使用VI工具等。

提示:编写Kotlin程序不要使用写字板,更不可使用Word等文档编辑器。因为写字板、Word等工具是有格式的编辑器,当使用它们编辑一份文档时,这个文档中会包含一些隐藏的格式化字符,这些隐藏字符会导致程序无法正常编译、运行。

在记事本中新建一个文本文件,并在该文件中输入如下代码:

程序清单:
codes\01\1.2\helloWorld.kt

fun main(args: Array<String>) {

println("Hello, World!")

}

编辑上面的Kotlin文件时,注意程序中粗体字标识的单词,Kotlin程序严格区分大小写。将上面文本文件保存为helloWorld.kt,该文件就是Kotlin程序的源程序,Kotlin源程序的文件名要求以.kt结尾。

Kotlin程序与Java程序不同,Kotlin支持函数式编程,因此Kotlin程序的程序入口只要一个main()函数作为入口,不需要将该main()函数放在任何类中。

提示:仔细看下上面的main()函数,不难发现这个main函数其实就是Java主类中的main()方法的变体。只不过在Kotlin语言中,函数也是一等公民,因此函数可以独立存在,而Java主类中main()方法必须放在类中声明。Java主类的main()方法需要声明一个String[] args形参,而Kotlin
mian()函数同样声明了args: Array<String>形参——它们都是一个字符串数组类型的形参,这表明它们的本质是一样的,只是形式不同而已。至于Kotlin主函数前面的fun关键字,它专门用于声明函数;Swift语言还使用func关键字声明函数呢,其实没有什么特别的,习惯不同而已。

编写好Kotlin程序的源代码后,接下来就应该编译该Kotlin源文件来生成字节码了。

编译、运行Kotlin程序

编译Kotlin程序需要使用kotlinckotlinc-jvm命令(两个命令完全一样),因为前面已经把kotlinc
命令所在的路径添加到了系统的PATH环境变量中,因此现在可以使用kotlinc命令来编译Kotlin程序了。

对于初学者而言,先掌握kotlinc命令的如下用法:

kotlinc -d destdir srcFile

在上面命令中,-d destdirkotlinc命令的选项,用以指定编译生成的字节码文件的存放路径,destdir只需是本地磁盘上的一个有效路径即可;而srcFileKotlinc源文件所在的位置,这个位置既可以是绝对路径,也可以是相对路径。

通常,总是将生成的字节码文件放在当前路径下,当前路径可以用一点(.)来表示。在命令行窗口进入helloWorld.kt文件所在路径,在该路径下输入如下命令:

kotlinc -d . helloWorld.kt

运行该命令后,在该路径下生成一个HelloWorldKt.class文件。

javac编译器类似,使用kotlinc编译文件只需要指定存放目标文件的位置即可,无须指定字节码文件的文件名。因为kotlinc编译后生成的字节码文件有默认的文件名:如果Kotlin源程序中包含一个或多个函数,kotlinc会额外生成一个生成文件,该生成文件的文件名是文件名首字母大写并添加Kt后缀,并以.class作为后缀名;如果Kotlin源程序中包含一个或多个类,kotlinc则会为每个类生成一个字节码文件,文件名以源文件所定义的各个类的类名作为主文件名的,以.class作为后缀名。

事实上,指定目标文件存放位置的-d选项也是可省略的,如果省略该选项,则意味着将生成的字节码文件放在当前路径下。

可能有读者会感觉:这不就是《疯狂Java讲义》所介绍的内容吗?kotlinc的用法与javac的用法何其相似啊?实际上这也是Kotlin设计者希望实现的效果:Java是一门如此深入人心、影响深远的语言,拥有广泛的程序员基础,而Kotlin不仅借助于JVM作为运行平台,而且保持和Java详细的编译、运行方式,这样Kotlin也更容易被广大程序员所接受。

运行Kotlin程序可使用kotlinjava命令(你没看错,可以用java命令),启动命令行窗口,进入
HelloWorldKt.class所在的位置,在命令行输入如下命令。

java HelloWorldKt

运行上面命令,将看到如下输出:

Hello World!

这表明Kotlin程序运行成功

当然了,Kotlin也专门提供了一个kotlinm命令来运行Kotlin程序,因此在命令行输入如下命令。

kotlin HelloWorldKt

运行上面命令,同样可看到如下输出:

Hello World!

以上内容节选自《疯狂Kotlin讲义》:一本让您最直接认识Kotlin的疯狂讲义



本书即将于2017年11月发售 敬请期待


相关书籍疯狂Android讲义