Optimizer

Java クラスファイルを最適化するプラグイン.指定した情報を削除するとと もに参照されないコンスタントプールエントリの削除も行う.

Properties

NameDefault ValueDescription
deprecatedtruetrue が指定された場合,対象のクラスファイルの全てのメソッド,フィールドから Deprecated 属性を削除する.(推奨されないというマークを外す)
synthetictruetrue が指定された場合,対象のクラスファイルから Synthetic 属性を削除する.Synthetic 属性はコンパイラにより自動的に作られたことを示している.
exceptionstruetrue が指定された場合,対象のクラスの全てのメソッドから Exceptions 属性を削除する.Exceptions 属性はメソッドの throws 節に相当する.
stackmaptruetrue が指定された場合,StackMap 属性を削除する.この属性は J2ME 環境で使われる.よく知らないけど,消しても大丈夫そう.
linetruetrue が指定された場合,LineNumberTable 属性を削除する.行数を管理する属性で,これがないと stacktrace で行数が表示されない.
localtruetrue が指定された場合,LocalVariableTable 属性を削除する.削除されたクラスではローカル変数名の情報がなくなる.
sourcetruetrue が指定された場合,SourceFile 属性を削除する.ソースファイルのファイル名が参照できなくなる.
unknownfalsetrue が指定された場合,未知の属性を削除する.未知かそうでないかは BCEL に依存する.
unused.methodstruetrue が指定された場合,未使用のメソッドを削除する.
unused.fieldstruetrue が指定された場合,未使用のフィールドを削除する.

Algorithm

  • クラスから削除フラグが立てられた属性を削除する.削除するかどうかを判断する属性は以下の通り.カッコ内は対応するプロパティの名前を示す.
    • SourceFile (source)
    • Deprecated (deprecated)
    • Unknown (unknown)
  • クラスから未使用の private メソッドを削除する.
  • クラスから未使用の private フィールドを削除する.
  • クラスに含まれる各フィールド,各メソッドから削除フラグが立てられた属性を削除する.削除するかどうかを判断する属性は以下の通り.カッコ内は対応するプロパティの名前を示す.
    • Synthetic (synthetic)
    • Deprecated (deprecated)
    • Exceptions (exceptions)
    • Unknown (unknown)
  • 各メソッドの Code 属性から削除フラグが立てられた属性を削除する.削除するかどうかを判断する属性は以下の通り.カッコ内は対応するプロパティの名前を示す.
    • LineNumberTable (line)
    • LocalVariableTable (local)
    • StackMap (stackmap)
    • Unknown (unknown)
  • Constant Pool を最適化する.