使用Kotlin命令行工具学习Kotlin

2018-01-11  本文已影响0人  stefanJi

1. 安装Kotlin compiler

1. 手动操作

Github Releases下载最新版。
解压得到:

├── bin
│   ├── kotlin
│   ├── kotlin.bat
│   ├── kotlinc
│   ├── kotlinc.bat
│   ├── kotlinc-js
│   ├── kotlinc-js.bat
│   ├── kotlinc-jvm
│   ├── kotlinc-jvm.bat
│   ├── kotlin-dce-js
│   └── kotlin-dce-js.bat

包含kotlin编译器的一些命令。可以将这些添加到系统bin目录,用来全局使用。

kotlin compiler的运行还依赖一些jar包,在lib目录下,查看kotlinc命令脚本可以发现:

findKotlinHome() {
    local source="${BASH_SOURCE[0]}"
    while [ -h "$source" ] ; do
        local linked="$(readlink "$source")"
        local dir="$(cd -P $(dirname "$source") && cd -P $(dirname "$linked") && pwd)"
        source="$dir/$(basename "$linked")"
    done
    (cd -P "$(dirname "$source")/.." && pwd)
}

KOTLIN_HOME="$(findKotlinHome)"

if [ -n "$KOTLIN_RUNNER" ];
then
    java_args=("${java_args[@]}" "-Dkotlin.home=${KOTLIN_HOME}")
    kotlin_app=("${KOTLIN_HOME}/lib/kotlin-runner.jar" "org.jetbrains.kotlin.runner.Main")
else
    [ -n "$KOTLIN_COMPILER" ] || KOTLIN_COMPILER=org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
    java_args=("${java_args[@]}" "-noverify")

    kotlin_app=("${KOTLIN_HOME}/lib/kotlin-preloader.jar" "org.jetbrains.kotlin.preloading.Preloader" "-cp" "${KOTLIN_HOME}/lib/kotlin-compiler.jar" $KOTLIN_COMPILER)
fi
"${JAVACMD:=java}" $JAVA_OPTS "${java_args[@]}" -cp "${kotlin_app[@]}" "${kotlin_args[@]}"

脚本会判断是否存在KOTLIN_RUNNER环境变量,如果存在就会建立一个kotlin_app变量,最后调用java命令执行。创建kotlin_app的过程中会写入一些jar作为lib使用。而 KOTLIN_HOME 是通过findKotlinHome方法放回的当前shell执行的绝对路径,所以手动安装需要将这些lib拷贝到和bin目录同级的地方。

例如:
bin目录下命令拷贝到系统/usr/local/bin/里,那么lib里的 jar 就要拷到 /usr/local/lib/里,然后就可以在系统任何使用 kotlin 的命令了。

最后安装好是这样:

/usr/local/bin
$ ls | grep "kotlin*"
kotlin
kotlinc
kotlinc-js
kotlinc-jvm
kotlin-dce-js
/usr/local/lib
$ ls | grep "kotlin*"
...
kotlin-ant.jar
kotlin-compiler.jar
kotlin-daemon-client.jar
kotlin-jslib.jar
kotlin-jslib-sources.jar
kotlin-preloader.jar
kotlin-reflect.jar
kotlin-reflect-sources.jar
kotlin-runner.jar
kotlin-runtime.jar
kotlin-runtime-sources.jar
...

2. 自动安装

2. 第一个Application

  1. 创建 hello.kt 源码文件
fun main(args: Array<String>){
    println("Hello Word")
}
  1. 使用 Kotlin 的编译器(kotlinc)编译源文件

kotlinc -h 可以查看各参数帮助

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

-include-runtime 参数:Include Kotlin runtime in to resulting .jar

  1. 运行Applicatioin
$ java -jar hello.jar

编译一个库

如果正在开发要由其他Kotlin应用程序使用的库,则可以在不包括Kotlin运行时的情况下生成.jar文件。

$ kotlinc hello.kt -d hello.jar

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

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

$ kotlin -classpath hello.jar HelloKt

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

使用交互式编程环境

可以运行不带参数的编译器来创建交互式shell。 然后输入任何有效的Kotlin代码并查看结果。

$ kotlinc-jvm
Welcome to Kotlin version 1.2.10 (JRE 1.8.0_131-b11)
Type :help for help, :quit for quit
>>> :help
Available commands:
:help                   show this help
:quit                   exit the interpreter
:dump bytecode          dump classes to terminal
:load <file>            load script from specified file
>>> println("Hello KT")
Hello KT
>>>

使用命令行运行Kotlin脚本

Kotlin也可以用作脚本语言。 脚本是后缀为(.kts)的Kotlin源文件。

// hello.kts
println("print args")
for(arg in args){
    println(arg)
}

使用 -script 参数指定执行脚本文件

$ kotlinc -script hello.kts 1 2 3 4 5
print args
1
2
3
4
5
上一篇下一篇

猜你喜欢

热点阅读