by shigemk2

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

メモ バイトコードが君のトモダチになりたがっている

JJUG CCC 2016 Fall

バイトコードと友達になること

  • Javaプログラマかつバイトコード操作??

  • JVM

  • ハローワールド
  • hexl-find-fileでみると16進数の羅列

  • バイナリ

  • ひとつずつ手で書き換えてあたたかみのあるバイトコード

  • 各種ライブラリ

    • Javassist
    • Byteman

人に優しいバイトコードの書き換え

  • いつ書き換えるか
    • 実行時
      • Java Agent
    • ビルド時
      • Maven Gradle Ant
  • Java Agent
    • Javaのアプリケーションとは独立して動作
    • Agentのクラスを作ること

Agent Class

学んだことを試してみる

  • ライブラリ(javassist)を使ってクラスファイルを書き換える
  • メソッドの引数と戻り値の型を出力する処理を追加する
  • なぜそれがそう動くのかを理解してから動かすこと
  • byte buddy

まとめ

  • バイトコードを書き換えることで処理をかえられる
  • バイトコードを使うライブラリ
  • JavaAgent

ところでどうでもいいんだけど、cccってなんだい。