Kotlin プログラミングのJVM実装を観察するツールセット

このリポジトリは Sapporo.apk #4 で Kotlin Coroutine についてプレゼンするため kotlin Coroutineの動作を理解するために用意したツールセットです。

make

を実行すると、 kts -> class -> java の流れで kotlin のコードが java へ翻訳されます。

install

kotlinc コンパイラを使います。下記の方法でインストールできます。

macOS

brew install kotlin

Windows

choco install kotlinc

kotlinc コンパイラを動かすにはOpenJDKも必要ですが 上記のコマンドで依存パッケージ扱いでインストールされます。

kotlin coroutine のjarも必要です。 mavenリポジトリやプロキシサイトから取得し、libフォルダに展開します。 観察したいコンパイラのバージョンとkotlinxのバージョンの組み合わせは注意して選びましょう。

https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core https://jar-download.com/artifacts/org.jetbrains.kotlinx/kotlinx-coroutines-core

visual studio code で kotlin スクリプトを動かしながらソースを作ると作業がはかどります。

macOS

brew cask install visual-studio-code

Windows

choco install VisualStudioCode

Code Runner という拡張機能を使えば、スクリプトを書いてすぐに実行できます。 kotlin coroutineをスクリプトで動かす場合はclass pathの設定が必要なので settings.jsonを用意しておきます。

kotlinコンパイル

kotlinc launch.kts -include-runtime -cp lib/kotlinx-coroutines-core-1.2.0.jar

Working with the Command Line Compiler https://kotlinlang.org/docs/tutorials/command-line.html

JVMアセンブリ出力

javap -c Launch.class > Launch.as
javap -c Launch$1.class > Launch$1.as

javap コマンド https://docs.oracle.com/javase/jp/7/technotes/tools/windows/javap.html

Javaバイトコード 命令セット https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings

javaデコンパイル

java -jar decompiler/cfr-0.143.jar Launch.class --extraclasspath .\lib > Launch.java
java -jar decompiler/cfr-0.143.jar Launch$1.class --extraclasspath .\lib > Launch$1.java

デコンパイルツール https://www.benf.org/other/cfr/

メモ

ktsファイル名の先頭のASCII文字は大文字にしないと makefileの記述の都合でデコンパイルに失敗してしまいます。