バイトコードと友達になること
Javaプログラマかつバイトコード操作??
JVM
- ハローワールド
hexl-find-fileでみると16進数の羅列
バイナリ
ひとつずつ手で書き換えてあたたかみのあるバイトコード
各種ライブラリ
- Javassist
- Byteman
人に優しいバイトコードの書き換え
- いつ書き換えるか
- 実行時
- Java Agent
- ビルド時
- Maven Gradle Ant
- 実行時
- Java Agent
- Javaのアプリケーションとは独立して動作
- Agentのクラスを作ること
Agent Class
- class file transformer
- instrument apiで定義
- manifest.mf
学んだことを試してみる
- ライブラリ(javassist)を使ってクラスファイルを書き換える
- メソッドの引数と戻り値の型を出力する処理を追加する
- なぜそれがそう動くのかを理解してから動かすこと
- byte buddy
- 2015 duke's choice award
- 最も活躍したライブラリ 2015
- https://www.oracle.com/javaone/dukes-choice-award.html
- 2015 duke's choice award
まとめ
- バイトコードを書き換えることで処理をかえられる
- バイトコードを使うライブラリ
- JavaAgent
ところでどうでもいいんだけど、cccってなんだい。