[Java]JadとJD-GUIのデコンパイルでJVMの気持ちを知ろう!

 

 

こんにちは。ナガオカ(@boot_kt)です。

 

javaファイルをコンパイルするとclassファイルができます

このclassファイルからデコンパイル、つまりソースコードの復活ができるって知ってましたか?

デコンパイルできる2つのツールについて紹介します

この記事のザックリした内容
前回の記事はコレ↓
>> [Java]文字列連結で、+演算子 or StringBuilder どちらを使うべき?
 

◆対象読者

  • Javaの知識が少しはある人
  • バイトコードって聞いたことある人
  • 前回の記事を読んだ人
  • classファイルからのデコンパイルを知りたい人
  • 基本的なDOSコマンドやshellコマンドを使える人

 

◆解決できるかも知れないお悩み

  • Jadの使い方
  • JD-GUIの使い方
  • JadとJD-GUIの違い

 

 

 

 

Javaのデコンパイルツール

僕が知ってるのはこの2つ

  • Jad
  • JD-GUI

どちらもclassファイルからソースコードを起こしてくれます

 

JadとJD-GUIの違い

どっちもデコンパイルしてくれますが、出力されるソースコードは少し違います
classファイルの内容をそれぞれに解釈した上でソースコードにしてくれていますので、もちろん処理は同じです

Jadはバイトコードに、JD-GUIはソースコードに寄っている感じですね

使いやすいのはJD-GUIの方だと思いますが、バイトコードが想像し易いJadの方が僕は好きです

その辺はお好みに合わせて使い分ければ良いでしょう

 

Jadについて

ダウンロード

公式サイトはこちらなので、各自のプラットフォームに合わせてダウンロードしてください。

 

Windowsの場合はこれですね
Windows7でもこれで動きました
Jad 1.5.8g for Windows 9x/NT/2000 on Intel platform

Macならこれですね
Jad 1.5.8g for Mac OS X 10.4.6 on Intel platform

 

使い方

Windowsの場合はダウンロードファイルはzipなので解凍すれば即使えます

jad.exeが入っているフォルダにPATHを通すか、既にPATHの通っているフォルダにjad.exeを入れるかですね

PATHを通すのが面倒なら、classファイルと同じ場所にjad.exeを置けばいいでしょう

  1. コマンドプロンプト(Macならターミナル)起動
  2. jad.exeの置いてあるディレクトリへ移動
    豆知識
    Windowsの場合、エクスプローラーのアドレスバーでcmdEnterと打てば、そのフォルダがカレントとなっている状態でDOSプロンプトが起動します
  3. jad classname.class とか jad *.class と打てば、拡張子がjadのテキストファイルができます
  4. このjadファイルにデコンパイルしたソースコードが書かれています

 

コマンドプション

と打てば、jadが持つオプションが沢山でてきますが…..、面倒なので、1個だけピックアップします

-a – JVM命令をコメントとして生成する(注釈)

バイトコードをコメントとして表示してくれるので、ソースコードと併せて見たい時に使います

 

元のソースコード

 

出力内容(ノーマル)

newのタイミングが分かるので、ループ文の中で毎回newしていないかとかが分かりやすいですね

 

出力内容(-aオプション)

-aオプションを付けることにより、バイトコードとソースコードを併せて見ることができるので、細かい部分も分かりやすいですね

 

JD-GUI

ダウンロード

公式サイトはこちらなので、各自のプラットフォームに合わせてダウンロードしてください。

 

Windowsの場合はこれですね
Windows7でもこれで動きました
jd-gui-windows-1.4.0.zip

Macならこれですね
jd-gui-osx-1.4.0.tar

 

使い方

Jadと違ってGUIですので使い方は簡単です

  1. jd-gui.exeをダブルクリックして起動
  2. 起動したらウィンドウが開きます
  3. classファイルをウィンドウへドラッグ&ドロップ
  4. これで終わりです
    保存やコピーができますので、必要に応じて操作してください

 

元のソースコード

※Jadの場合と同じ

 

出力内容

Jadに比べると、普通のソースコードっぽいですね

 

広告




 

さいごに、

前回の記事ではjavapでバイトコードを見るだけでしたが、JadやJD-GUIを使ってバイトコードをソースコードの形で見るとさらに分かりやすくなります

書いたソースコードが効率の悪いものになっていないか?
バイトコードになった時に思ったような形になっているか?

とかを確認することができます

プログラミングに慣れてきて余裕が出てきたら、ソースコードを書きっぱなしにするだけじゃなく細かい部分も気にするようになると、プログラミングは更に更に更に上達しますよ!

なぜそう書くべきなのか

という事が分かるようになるっていうのは、とっても大切ですよ!

 


 

プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。