Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlinで作ったJVMで動くCLIツールをGraalVMのnative-imageでmacOS向けにバイナリ吐いてみた

 Kotlinで作ったJVMで動くCLIツールをGraalVMのnative-imageでmacOS向けにバイナリ吐いてみた

第31回 学生LT in 東京 にて発表

Yuta Tomiyama

December 08, 2019
Tweet

More Decks by Yuta Tomiyama

Other Decks in Programming

Transcript

  1. Kotlinで作ったJVMで動くCLI ツールをGraalVMのnative imageでmacOS向けにバイナ リ吐いてみた (オタク特有の早口)

  2. 自己紹介 HN: マヤミト 本名: 富山 雄太 会津大学 学部2年 好きな言語: Kotlin

    GitHub: https://github.com/yt8492 なんでもKotlinおじさん Zliという会津大学の技術系LTサークルで活動してます Facebookのすがた Twitterのすがた ID:yt8492
  3. GraalVMとは GraalVM is a universal virtual machine for running applications

    written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Groovy, Kotlin, Clojure, and LLVM-based languages such as C and C++. (公式より) https://www.graalvm.org/ 要するにいろんな言語が動くVMっぽい
  4. native iamge Native images compiled with GraalVM ahead-of-time improve the

    startup time and reduce the memory footprint of JVM-based applications. (公式より) https://www.graalvm.org/docs/reference-manual/native-image/ Javaのプログラムをnative imageと呼ばれるスタンドアローンの実行ファイルにコンパイ ルすることができる
  5. JavaでできるならKotlinでもできるよね

  6. TwiKTer Kotlinで作ったCLIからツイートできるやつ

  7. native image化してみる

  8. None
  9. 時間を比較してみる

  10. おまけ: Ktorのサーバーをnative化してみる リフレクションの対象クラスを列挙したjsonファイルを作ってオプションで渡す必要があっ てめんどい

  11. まとめ - Javaのプログラムをネイティブイメージ化できる - Kotlin、Scala、Groovyで作ったものもできる - 起動時間が早い - Lambdaなどの起動時間が遅い問題が解決するかも? -

    ビルドが遅い&面倒くさい - TwiKTer程度のプログラムでも2分半かかった - リフレクションを使うライブラリ使うとオプション書くのがめんどい - Kotlinでできることが増えたよ!やったね!
  12. ご静聴ありがとうございました!