Jad(Jadclipse) の終焉? − Java Decompiler(JD) −
Java Decompiler(JD)というものを見つけたので試してみた.
スタンドアローンで使用するJD-GUIと,Eclipseのプラグインとして使用するJD-Eclipseがある.
JD-GUI(0.3.1)の画面
JD-Eclipse(0.1.3)の画面
Webサイトに挙げられている特徴から主なものを抜粋すると以下のとおり.
- Core部分はC++で実装されている(だから速い?)
- JD-GUIは,Javaの実行環境を必要としない
- JDK1.1.8〜JDK1.6を始め,jikesとかjrockitなど様々なコンパイラに対応
- .classファイルだけでなく,.jarもOK
- JD-GUIで,ログファイルを読み込み,StackTraceから逆コンパイルしたソースコードを参照可能
- Annotation(RetentionPolicy.SOURCEはもちろん不可),Generics,enumに対応
- マルチプラットフォーム対応(Windows,Linux,Mac)
JD-Eclipseは,Windowsでは以下のVC++のランタイムを必要とする.
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86), Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)
また,Eclipse3.4の場合は「Equinox p2 Provisioning」を事前に入れておかないといけないらしい.詳細はJD-Eclipseページを参照.
手元のEclipse3.5では,特に何も事前にインストールしなくてもJD-Eclipseをインストールできた.
JD-GUIが,インストールが簡単なだけでなく,Javaキーワードに対応した色づけ,ナビゲーションなど必要な機能は備えている.ログファイルのStackTraceからもジャンプできるので,ちょっとした障害解析をするのにも使える.
しかも,.classファイル中にソースの行数が残っていれば,逆コンパイルして生成されたソースコードの行番号でなく,元のソースコードの行番号が表示され,StackTraceからも正確にジャンプできる.これはかなり嬉しい.
#JD-Eclipseの場合は,EclipseのJavaエディタが行番号を付けるので,元のソースコードの行番号はコメントとして挿入されているので少し見辛くなる.
残念ながら.javaは開くことができないが逆コンパイラなので仕方ないか。。。
Javaの逆コンパイラと言えば,Jadが定番だった。Eclipse用プラグインJadclipseと組み合わせて使用している人は多数いるだろう。だが,これからはJDを使っていこうかなと思った.
まだ,試したことのない方も一度触ってみることをお奨め!