谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

デコンパイルツール「Java Decompiler」を試してみた。

Jadが大好きなんだけど、Java5以降の文法に対応してないから
若干やきもきしつつもガッカリしている皆さん、こんばんは。


名前そのまま、Java Decompilerというツールがありました。
http://java.decompiler.free.fr/


Java6まで対応しており、
Eclipseプラグインとしても、単体のGUIアプリとしても使えるスグレモノです。


Java5のアノテーションやGenrics、foreach文なんかの復元にも対応しており
Jadが「デコンパイル失敗しました(><)」とすぐに根を上げていたクラスも
開けるようになるんじゃないかと思います。


ということで、早速試してみました。

GUI

http://java.decompiler.free.fr/?q=jdgui#downloads
ここからダウンロードして、解凍して実行するだけです。簡単です。


GUI版では、.jarファイルや.classファイルを読み込むと、
ソースコードブラウザが開きます。
デコンパイルに待たされることはありません。


また、このソースコードブラウザがなかなか使いやすく、
テキスト検索機能や、JARファイル内の別クラスへのリンク機能があり、
普通にソースを追う分には不便を感じないレベルでした。


ただ、自宅で実行してみたら、いきなりNorton2010が怒り出して

プログラムがコンピュータ上で疑わしい動作をしていました。
遮断して削除するという選択をしました。

って言って、exeを削除しちゃいました(><)


疑わしい動作って、何をしようとしたのか、ちっとも分かりません。
もうちょっとログ出してくれても良いんじゃないか>Norton


何かご存知の方がいらっしゃれば、情報をください m(_ _)m


追記
どうもNortonの誤検出のようですね。
http://d.hatena.ne.jp/cero-t/20100216/1266336649

Eclipseプラグイン

Eclipseのアップデートサイトを使って、インストールするだけです。
http://java.decompiler.free.fr/jd-eclipse/update


サイトにはVisual C++ 2008のライブラリが必要だと記載されているんですが、
私の環境には既に入っていたんでしょうか、特にインストールすることなく、
Eclipseプラグインを使えるようになりました。


Eclipseプラグイン版では、Jadなどと同様、
クラスをダブルクリックするだけでソースコードが開くようになります。


ただ残念なことに、Jadにはあった
デコンパイルしたソースコードの行番号」と「元のクラスの行番号」を
合わせる機能が見当たりません。


これがあれば、ブレークポイントを張りやすくなり、
デバッグ時には大いに助かるのですが、、、
今後に期待、でしょうか。

まとめ

Java Decompilerは、動作も軽く、
Jadでは対応できなかった、Java5以降の文法にも対応している、
かなり使いやすいデコンパイラです。


ただ、GUI版を実行すると、Norton先生に怒られちゃうことと、
行番号を合わせる機能がないことだけが、残念です。