Kotlin/Native を試してみる
概要
Kotlin/Native という,Kotlin のコードをネイティブのバイナリにコンパイルするツールがリリースされたというニュースを目にし,気になったのでちょっとだけ試してみました.
Kotlin で書いたネイティブな Hello world! を実行できるようにしてみます.
基本的には,Kotlin Tutorials にある A Basic Kotlin/Native Application の通りにやっていけば,Hello world! できます.
下準備
Docker イメージ
今回は Kotlin/Native を動かす Docker コンテナを用意して試しました.
Java 8 と Kotlin 1.3 と Kotlin/Native 1.3 が必要なので, これらが使える環境を作成します.
次のような Dockerfile ファイルを書きました.
FROM openjdk:8 RUN wget -O /tmp/kotlin.zip https://github.com/JetBrains/kotlin/releases/download/v1.3.10/kotlin-compiler-1.3.10-linux-x64.zip && \ unzip /tmp/kotlin.zip -d /usr/lib && \ wget -O /tmp/kotlin-native.tar.gz https://github.com/JetBrains/kotlin/releases/download/v1.3.0/kotlin-native-linux-1.3.0.tar.gz && \ tar -xf /tmp/kotlin-native.tar.gz -C /usr/lib && \ rm /tmp/kotlin.zip /tmp/kotlin-native.tar.gz ENV PATH $PATH:/usr/lib/kotlinc/bin:/usr/lib/kotlin-native-linux-1.3.0/bin CMD [ "/bin/bash" ]
Java はベースイメージを openjdk:8
にして使えるようにしました.
他は適当にダウンロードしてきて展開し,パスを通しているだけです.
Dockerfile を作成したら,ビルドしておきましょう.
docker build -t kotlin-native .
ソース
Hello world! 的な Kotlin プログラムを書きます:
fun main(args: Array<String>) { println("Hello Kotlin!") }
実行
Docker イメージを実行して,Kotlin のソースをネイティブコンパイルし,バイナリを実行してみましょう.
$ docker run -it kotlin-native (以下,コンテナ内の世界) $ kotlinc-native hello.kt (program.kexe というファイルができる) $ ./program.kexe => Hello Kotlin!
出力されるファイルが .kexe
という見慣れない怪しげな拡張子になっていますが,これは Java バイトコードとかそんなんではなく,ネイティブに実行可能なバイナリです.
Hello world! 的なメッセージが得られて,めでたしめでたし!
やってて気にかかったこと
~/.konan に依存ライブラリが入る
Mac でも Tutorial に書いてある通りにやれば実行できることは確認したのですが, ~/.konan というディレクトリに Kotlin/Native の依存ライブラリなどがインストールされてなんとなく嫌だったので,Docker の使い捨て環境でやることにしました.
おわり
ごくごく簡単でしたが Kotlin/Native を試してみました.
まぁ,個人的に今後使う予定もいまのところないのですが,好奇心を満たせたのでよし!