JJUGナイトセミナー「JVM言語を作ろう! GraalVMで遊ぼう!」 行ってきた | Advent Calendar 2019
IT系の勉強会行ってきた Advent Calendar 2019 - Adventar の6日目
じゃばじゃばしてる人は気になってるGraalVMのお話を聞きに行った。
JVM言語の動き方・動かし方
- 言語処理系の構成
翻訳系:書かれたものを実行に適した形にする。バイナリーとか
実行系:実行に適した表現をコンピューター上で実行 - コンピューターがどうやってプログラム動かすか
仮想アドレス空間の確保、プログラムをアドレス空間にロード
メモリに対して命令用ポート、レジスタ、プログラムカウンター、演算装置を制御 - JVMはどう動かすか
javacでソースコードからJavaバイトコード、JVMがバイトコードを実行
JVM=バイトコードインタプリタ&JITコンパイラ - JITコンパイラ:実行系に内蔵された翻訳系のプログラム
高校生の情報処理の授業を思い出すような内容で懐かしかった。
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
- GraalVM:Oracleが出したJVMを超える何か
HotSpotVM + α(GraalというJITコンパイラ、Truffleとらふる言語実装、SubstrateVM) - GraalVM≠Graal
- Polyglot、多言語対応
- ASTのインタプリタとしてJavaコードとして実行してる
JavaScriptでもAST(抽象構文木)って出てくるような気がする。
TruffleでPHPぽい言語を実装したら爆速だった
低レイヤに近い話が多くあって学生時代を思い出し懐かしかった。
ASTとかって最近はJavaScript界隈でよく聞くようになってたので言語関係ない共通の概念なのかーという発見。
同じようなので、DIコンテナはJavaは昔からよく聞くけど、JavaScript界隈でもAngular出てきた頃からよく聞くようになった印象。