
はじめに
これは以下のKotlinのチュートリアルページのざっくり日本語訳です。ところどころ意訳しています。
Kotlinをコマンドラインでコンパイルして動かす
このチュートリアルではコマンドラインコンパイラでKotlinをコンパイルしてHello Worldをしてみます。
コンパイラのダウンロード
コンパイラは GitHubのReleasesページ でダウンロードできます。この記事執筆時の最新バージョンは 1.2.21 です。
GitHub からダウンロードしてインストールする方法
上記GitHubのからkotlin-compilerをダウンロードして解凍して、PATHに bin ディレクトリを追加します。
bin ディレクトリはWindows, Mac OS X, LinuxでKotlinをコンパイルするのに必要なスクリプトが入っています。
SDKMAN!を使う方法
もっと簡単なのは SDKMAN! を使う方法です。OS X, Linux, Cygwin, FreeBSD, SolarisなどUNIXベースのシステムならSDKMAN!が使えます。以下のコマンドでSDKMAN!がインストールできます。
$ curl -s https://get.sdkman.io | bash
そして、新しくターミナルを開いて、以下のコマンドでKotlinをインストールできます。
$ sdk install kotlin
Homebrewを使う方法
OS Xであれば Homebrew を使う方法があります。
$ brew update $ brew install kotlin
MacPortsを使う方法
MacPorts を使っていれば、以下でコンパイラをインストールできます。
$ sudo port install kotlin
はじめてのKotlinアプリケーション
- Hello World を表示するだけの簡単なことりんアプリケーションを作ります。お好きなエディタを使って、
hello.ktというファイルを作ります。内容は以下の通りです。
fun main(args: Array<String>) {
println("Hello, World!")
}
- Kotlinコンパイラーでこれをコンパイルします。
$ kotlinc hello.kt -include-runtime -d hello.jar
-d オプションは出力するクラスファイルが置かれるディレクトリ名や、や .jar ファイルの名前を指定します。
-incliude-runtime は、結果の.jarファイルに、Kotlinの実行環境ライブラリなどを含めて、.jarがそれ単体で動くようにします。
全てのオプションを知りたい場合は以下のコマンドで見られます。
$ kotlinc -help
- コンパイルしたアプリケーションを実行します。
$ java -jar hello.jar
ライブラリをコンパイルする
ライブラリを開発している場合は、Kotlinの実行環境をコンパイル結果に含める必要はありません。Kotlin実行環境ライブラリを含めずに.jarファイルを生成する場合は以下のコマンドを実行します。
$ kotlinc hello.kt -d hello.jar
このようにコンパイルしたバイナリは、Kotlin実行環境が含まれていないため、javaコマンドでは実行できません。後述のようにclasspathの情報を与えてkotlinコマンドで実行してあげる必要があります。
$ kotlin -classpath hello.jar HelloKt
HelloKt は hello.kt という名前のファイルをコンパイルして作られたメインクラスの名前です。
REPLを使って実行する
コンパイラを引数なしで実行すると対話型シェルが起動します。ここでKotlinのコードを書くとすぐに結果が見られます。
$ kotlinc-jvm
Welcome to Kotlin version 1.2.21 (JRE 1.8.0_60-b27)
Type :help for help, :quit for quit
>>> 2+2
4
>>> println("Welcome to the Kotlin Shell")
Welcome to the Kotlin Shell
コマンドラインでスクリプト言語のように動かす
Kotlinはスクリプト言語のようにも使えます。Kotlinスクリプトのファイル(.kts)は、(ファンクションの中にではなく)トップレベルに実行可能なコードをそのまま書きます。
import java.io.File
val folders = File(args[0]).listFiles { file -> file.isDirectory() }
folders?.forEach { folder -> println(folder) }
このスクリプトを実行するには、Kotlinコンパイラに-script引数を付けて実行するだけです。
$ kotlinc -script list_folders.kts <list_folders.ktsに渡したい引数>