Kotlin 命令行編譯
我們一般編寫代碼都會借助 IDE 工具,因為這樣可以快速提高開發效率。但是需要去理解一個 Kotlin源文件是如何編譯運行的,所以這篇文章將教你如何使用command
來編譯運行 Kotlin 源碼。
1. 下載 Kotlin 編譯器
在 Kotlin 每個版本中都會附帶一個獨立版本的編譯器kotlin-compiler-xxx.zip
. 目前 Kotlin 的最新版本是1.3.71
. 只要在 Kotlin github 的對應1.3.71
版本 tag 中下載即可。
2. 編譯器安裝
2.1 基于kotlin-compiler zip包手動安裝
將下載好的 Kotlin 編譯器zip包,解壓縮到一個目錄中,并把bin
所在目錄路徑添加到環境變量中。bin
目錄包含了在 Windows、OS X 及 Linux 上編譯與運行 Kotlin 所需的腳本。
以下是bin
目錄中腳本文件,其中.bat
是用于Windows
平臺編譯運行的腳本。kotlinc
是用于編譯 Kotlin 源碼,kotlin
是運行Kotlin編譯后產物的。
把bin
所在目錄添加到系統PATH
中,這里以Mac
為例,Windows
平臺就和普通的環境變量添加PATH
一致。
#kotlin
export PATH=${PATH}:"/Users/imooc/Desktop/imooc/kotlinc/bin" #這個路徑就是解壓縮目錄的路徑
2.2 基于 SDKMAN! 安裝
在基于 UNIX
的系統(如 OS X、Linux、Cygwin、FreeBSD 和 Solaris, Windows不支持)上安裝 Kotlin 的更簡單方法是使用 SDKMAN!。 只需在終端中運行以下命令并按照說明操作即可:
curl -s https://get.sdkman.io | bash
接下來會打開一個新終端并安裝 Kotlin:
sdk install kotlin
2.3 基于 Homebrew 安裝
如果使用的是 OS X操作系統,可以通過 Homebrew 安裝編譯器。
brew update
brew install kotlin
2.4 基于 MacPorts 安裝
如果是 MacPorts 用戶,那么可以使用以下命令安裝編譯器:
sudo port install kotlin
2.5 基于 Snap 包安裝
如果使用的是 Ubuntu 16.04 或更高版本,那么可以在命令行直接使用 Snap 安裝編譯器:
sudo snap install --classic kotlin
2.6 基于 Chocolatey 包安裝
如果是Windows 下的 Chocolatey 用戶, 有一個社區維護的軟件包 kotlinc 可供使用, 你可以在命令行通過 choco install
進行安裝。
2.7 驗證安裝環境
安裝好 Kotlin 編譯器后,只需要在command
中輸入kotlinc
, 如果出現下面這樣信息說明安裝成功:
3. 創建并運行第一個應用程序
3.1 創建kt源碼文件
隨便使用一個文本編輯器,記事本之類工具,創建一個 hello.kt 的新文件,然后在文件中編寫以下代碼:
fun main(args: Array<String>) {
println("Hello Kotlin!")
}
3.2 編譯hello.kt
源碼文件
在command
中執行以下編譯命令:
kotlinc hello.kt -include-runtime -d hello.jar
## -d 選項表示生成的類文件的輸出路徑,可以是目錄,也可以是一個 .jar 文件。-include-runtime 選項通過在其中包含 Kotlin 運行時庫,使得生成的 .jar 文件中自包含運行時庫且可運行。 如果要查看所有可用選項,請運行以下命令:
# kotlinc -help
會在hello.kt
同級目錄生成一個應用程序hello.jar
。
3.3 運行應用程序 hello.jar
在command
中執行以下運行命令:
java -jar hello.jar
4. 編譯庫
如果你正在開發一個供其他 Kotlin 應用程序使用的庫,那么可以構建 .jar 文件,而不將 Kotlin 運行時包含在其中。
kotlinc hello.kt -d hello2.jar
可以通過 jar 查看工具來看:
相比下面這種運行時方式編譯后的產物是不一樣的,下面包含一個運行時打包:
kotlinc hello.kt -include-runtime -d hello.jar
可以通過 jar 查看工具來看:
由于以這種方式編譯的二進制文件依賴于 Kotlin 運行時,因此無論何時使用編譯庫,都應確保后者存在于類路徑中。還可以使用 kotlin
腳本來運行 Kotlin 編譯器生成的二進制文件:
kotlin -classpath hello.jar HelloKt # HelloKt 是 Kotlin 編譯器為名為 hello.kt 的文件生成的主類名。
5. Kotlin 執行的交互式 shell
可以運行沒有參數的編譯器來擁有交互式 shell??梢暂斎肴魏斡行У?Kotlin 代碼并查看結果。
由于之前安裝的時候配置好了kotlin-compiler
,所以我們只需要在command
中輸入kotlinc
就能進入交互式的shell, 退出交互shell,只需要輸入:quit
即可。
使用交互式shell,輸出 hello kotlin!
:
使用交互式 shell,計算三個數之和:
6. 運行 Kotlin 腳本
Kotlin 也可以用作腳本語言。腳本是具有頂層可執行代碼的 Kotlin 源文件(.kts)。
實例:
實現一個輸出當前目錄所有文件的 kotlin 腳本(-dir 后跟目錄):
import java.io.File
val filePath = if(args.contains("-dir")) args[1 + args.indexOf("-d")] else "."
File(filePath).listFiles { file ->
println(file)
return@listFiles true
}
要運行腳本,我們只需使用相應的腳本文件將 -script
選項傳遞給編譯器。
kotlinc -script read_files.kts -- -dir xxx
從 Kolint 1.3.0 開始,Kotlin 對腳本定制提供了實驗性支持,例如添加外部屬性、提供靜態或動態依賴關系等。自定義由所謂的 腳本定義 帶有適當支持代碼的帶注釋的 kotlin 類定義。腳本文件擴展名用于選擇適當的定義。
當適當的 jar 文件包含在編譯類路徑中時,會自動檢測并正確應用正確編寫的腳本定義?;蚩梢允褂镁幾g器的 -script-templates
選項來手動定義:
kotlinc -script-templates org.example.CustomScriptDefinition -script custom.script1.kts
7. 小結
到這里有關 kotlin 命令行編譯就結束,這篇文章很全面闡述了有關 Kotlin 源碼編譯、運行過程以及 Kotlin 的腳本編寫和運行。下一節將正式進入 Kotlin 的語法學習。