概要
プログラミング言語の多くは、人が読めるソースと機械が読めるソースの2つがあります。
Javaの場合、前者は.javaファイル、後者は.classファイルとなります。
開発者は.javaファイルでコーディングを行い、コンパイルで.javaから.classを生成します。実行時に機械が読むのは.classです。
最終的に動かすのに必要なのは.classファイルのみですので、基本はこの.java⇒.classの一方通行ですが、.classから元のソースを読みたい要求は少なくないです。
そんなときに行われるのが逆コンパイル、デコンパイルと呼ばれる逆方向の変換です。
Javaはメジャーな言語ですので、Jadという有名な逆コンパイラがあり、統合開発環境のEclipseでもプラグインとして提供されています。
今まではEclipseのJadプラグインを使っていましたが、もっと軽くて同じくらい見やすいソフトがありました。それが「JD-GUI」です。
ダウンロード
上記の作者さまサイトよりダウンロードできます。
使い方
インストール不要です。解凍直後から使用可能です。
.classファイルをJD-GUIで開くと以下のような感じでソースが参照できます。
参照しているのはSAStrutsのチュートリアル用ソースです。
パッケージ文までしっかりチェックしているのか、ある程度は配置がおかしくても参照できる範囲にあればリンクで辿れるようです。
最初はJavaもJadもPathが通った開発用端末で使用していたので気にしませんでしたが、驚くことにJadどころかJavaがインストールされていない端末でも単独で逆コンパイルしてくれるようでした。
非常に便利です。
なお、コメントに関しては復元できません。
これは、逆コンパイルの可不可以前に、コンパイル時点でコメントが欠落しているためです。
トラブルシューティング
何かあったら加筆します。