Kotlin/実行方法
< Kotlin
このページは、親コンテンツである「Kotlin」の中から {{:Kotlin/実行方法}} の形式で展開されることを意図して書かれています。
この手法は
- ページ分割すると、[[#inline|inline]] のようなページ内リンクが大量に切れる。
- ページ分割すると、<ref name=foobar /> のような名前のついた参照引用情報が大量に切れる。
- スマートフォンやタブレットではページ遷移は好まれない。
- MediaWikiは、圧縮転送に対応しているので1ページのサイズが大きくなるのはトラフィック的には問題が少なく、ページ分割によりセッションが多くなる弊害が大きい。
- 編集はより小さなサブパート(このページ)で行える。
という技術的背景があります。
- Kotlinのサブページ
実行方法
編集Kotlin/JVM
編集Kotlin/JVM では、Kotlin のソースファイルからJARファイルをコンパイルします。 Kotlin のソースファイルの拡張子は .kt です。
hello.kt
をコンパイルして hello.jar
を得るのであれば
- コンパイル
kotlinc hello.kt -include-runtime -d hello.jar
- とします。
生成された hello.jar を実行するには
- kotlinから生成したJARファイルの実行
java -jar hello.jar
- とします。
- -jar を忘れると
$ java hello.jar Error: Could not find or load main class hello.jar Caused by: java.lang.ClassNotFoundException: hello.jar
- とエラーになります
別のKotlinのソースファイル universe.kt
をコンパイル/実行するには hello
を filename
に読替えて同じ手順を行えばいいのですが、このような単純作業はコンピューターに任せましょう。
make の利用
編集ビルド手順の自動化を行うツールに make があります。 make にはいくつかの方言がありますが、BSD-make と GNU-make に共通した構文を紹介します。
- Makefile
# Makefile for Kotlin .SUFFIXES: .kt .jar .run .kt.jar: kotlinc $^ -include-runtime -d $@ .jar.run: java -jar $^ all:
- この内容をカレントディレクトリーに Makefile の名前で保存します(カレントディレクトリーに hello.kt がある場合)。
- タブと空白には区別され、先頭の空白8つ分はタブです。
コマンドラインでの操作は
- tcshの場合
% cat hello.kt fun main() { println("Hello world!") } % make hello.jar kotlinc hello.kt -include-runtime -d hello.jar % make hello.run java -jar hello.jar Hello world! % sed -e s/world/universe/ hello.kt > universe.kt % cat universe.kt fun main() { println("Hello universe!") } % make universe.run kotlinc universe.kt -include-runtime -d universe.jar java -jar universe.jar Hello universe! rm universe.jar % make universe.jar kotlinc universe.kt -include-runtime -d universe.jar % make universe.run java -jar universe.jar Hello universe!
make hello.jar
とすると- ルール
.kt.jar: kotlinc $^ -include-runtime -d $@
- が適用され
- アクション
kotlinc hello.kt -include-runtime -d hello.jar
- が実行されます。
make hello.run
とすると- ルール
.jar.run: java -jar $^
- が適用され
- アクション
java -jar hello.jar
- が実行されます。
- universe.jar がない状態で
make universe.run
とすると。- ルール
.kt.jar: kotlinc $^ -include-runtime -d $@ .jar.run: java -jar $^
- が連鎖的に適用され
- アクション
java -jar universe.jar Hello universe! rm universe.jar
- となります。
- もともと universe.jar はなかったので最後に rm universe.jar して消しています。
この様に、make を使うとファイルのタイムスタンプから必要な処理を判断し実行します。
make と同じくビルドツールに gradle があり、gradle のビルドルールは Kotlin Script で書けるので、Kolin の学習には gradle が適しているとも言えますが、ビルドルールを書くためにKotlinのコードを読み書きする必要があるという「鶏卵問題」に陥るので、より一般的な make を紹介しました。
ここでは、kotlinソースからJARファイルをコンパイルし実行する最小限のルールを書きましたが、機会をみて、make のチュートリアルを書こうと思います。