関ジャバ会
今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のバイトコードを理解するのにはとても良い