Java
ポエム
JavaDayTokyo

Java Day Tokyo 2017のおもひで

セッションスケジュール

図1.png

参加セッション

図2.png

Panamaを先取り!? JVMCIでJITと遊ぶ

ご本尊

What’s JVMCI?

JEP 243: Java-Level JVM Compiler Interface

Summary
Develop a Java based JVM compiler interface (JVMCI) enabling a compiler written in Java to be used by the JVM as a dynamic compiler

要約:Javaで書いたコンパイラをJVMで動かせるようにする。
→ Javaで(機械語)コンパイラを書く。

すごいじゃあくをかんじる

邪悪ポイント

  • Write once, run anywhere
    • CPU毎に命令セットとにらめっこしてbyte[]書いてください
  • Java API
    • 機械語レベルにそんなものはない(呼べなくはない)
  • JITによる最適化
    • お前がそれを書くのだ

見方を変えよう

  • Write once, run anywhere
    • JDKのセットなのでアプリではなくプラットフォーム側
  • Java API
    • 機械語側じゃなくてそのコンパイラで使う
  • JITによる最適化
    • お前がそれを書くのだ

面白ポイント

  • JITの状態を取得できるAPIがついてる
  • JITの状態を制御できるAPIもついてる
  • JITのプロファイル情報を取得できるAPIまでついてる
  • JNIとか使わなくてもシステムコールとかできる
  • JVM系言語を作成する際にJITと連携した別の最適化構造を導入できる
  • JVMの仕様に沿ったデータをアセンブラで取り扱うとかいう偉業ができる

感想文

  • JDK必須だし通常のアプリケーションレイヤで活用されることはほぼないはず
  • 調査、検証の用途では十分に使いどころはある
  • JVM言語系では使いどころが多そう