Kotlin 在控制台下的编译和运行
有时候会把 kotlin 当成脚本使用,同时在命令行环境下使用,毕竟 kotlin 源码的 kt 文件完全可以当成脚本编写,可以通过官方提供的编译器将脚本编译为 class 或 jar,或者直接运行脚本;
Kotlin 控制台编译工具配置
当要在控制台下直接编译 kotlin 文件时,可以使用官方提供的编译工具:
https://github.com/JetBrains/kotlin/releases/tag/v1.1.50
,下载解压后将文档 bin 目录添加到系统 path 变量,以方便调用;
之后可以通过 “kotlin -version”测试编译工具是否正确安装;
kotlin文件的编译和运行
假设需要编译的kotlin文件为以下:
hello.kt
fun main(args: Array<String>) {
println("Hello world!");
}
在命令行中将其编译为 jar 文件
kotlinc hello.kt -include-runtime -d hello.jar
之后会在该目录下编译产生一个“hello.jar”文件,运行如下
java -jar hello.jar
输出 “Hello World!”
kotlin 脚本的编译和运行
当然可以把kotlin完全当成脚本来写,无需编译,直接使用编译器解释运行;
一个简单的 kotlin 脚本如下:
hello.kts
val name = "assad";
println ("Hello,$name");
命令行中直接运行该脚本
kotlinc -script hello.kts
输出:“Hello,assad”;
kotlin 脚本执行系统指令
作为脚本,经常要调用到系统的一些指令,但是目前 kotlin 还没有像 groovy shell 那样对系统指令有较好的封装,kotlin 仍然要借助 Java 的 Runtime或ProcesserBuilder,这里简要介绍 Runtime 的使用;
val p:Process = Runtime.getRuntime().exec("ls");
reader:BufferedReader = BufferedReader(InputStreamReader(p.getInputStream())); //获取指令返回流
p.waitFor();
if(p.exitValue == 0){
str = "";
while((str = reader.readerLine()) != null)
println(str);
}
相比于 groovy ,我个人觉得比起kotlin,groovy 更加适合作为脚本使用,不管是解释还是调用系统指令上,语法都更加灵活简便,至于执行效率都是要先编译为字节码,主要速度差别在于编译器,这方面我没怎么研究,但是一般系统脚本对执行效率也基本没什么要求;