by shigemk2

当面は技術的なことしか書かない

まとめ ScalaコードはJVMでどのように表現されているのか #ScalaMatsuri #sm_a

関ジャバ会

今furyu

  • JVMのバイトコード初心者向け
  • Scalaはコンパイルするとクラスファイルを作る
  • JavaのHello, World

前に似たような内容で発表しました。

  • magic cafebabeから始まる
  • major_version
  • minor_version

  • javapで逆アセンブル

  • javacでコンパイル

コンスタントプールはシンボル情報のテーブル http://www.ne.jp/asahi/hishidama/home/tech/java/bytecode.html

  • JVMの命令は200くらいある
  • JVMの初期設計は優秀
  • invoke(virtual/interface/static/special) がわかるとメソッド呼び出しもわかる
  • Traitとその実装のあるScalaコードをコンパイルすると、2つのクラスファイルが出来上がるし、TraitのクラスファイルはInterfaceになる

  • Scalaコンパイラは少ないコードから多くの機能を生成している
  • 部分適用の箇所ごとに作ってる

まとめ

  • JVMはすごい
  • クラスファイルはフォーマット
  • javapはScalaのバイトコードを理解するのにはとても良い