對於長年使用Java的程序員,大部分應該都會或多或少的使用到反編譯軟件。畢竟,不可能你所使用到的每一個包都會提供完善的javadoc,而且,有時候代碼比javadoc更容易理解。這里將講述筆者所了解的一些反編譯軟件以及它們各自的IDE插件版。
簡介
現在業內的反編譯軟件據說有幾十種。其中有jad,以及基於jad而開發的其他反編譯軟件(Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和國產的小穎JAVA源代碼反編譯專家);還有jode,以及以jode為核心開發的JCavaj Java Decompiler、BTJ (Back To Java)、jEdit’s JavaInsight plugin);還有DAVA等,以及當前筆者最推崇的Java Decompiler。
在這些反編譯軟件中,筆者使用過jad,jode,Java Decompiler以及基於這些軟件開發的其他軟件如Cavaj,小穎等,還有這些軟件的eclipse插件版。
其中,jad是一個使用VC++開發的著名反編譯引擎,性能非常快;jode是一個使用java開發的開源的反編譯引擎,而Java Decompiler似乎也是java開發的反編譯軟件,並且這三款軟件都有相應的eclipse插件版。
使用效果對比
筆者在eclipse中使用了以上三款軟件。
使用環境為:eclipse Galileo,jad 1.5.8g + jadclipse 3.3.0,jodeEclipse 1.0.6,JD-Eclipse 0.1.3。
試用結果如下:
反編譯性能: jad == jode > Java Decompiler
反編譯品質:Java Decompiler > jode >= jad
從速度方面來看,你會明顯的感覺到Java Decompiler比較的慢,總是以慢一拍的速度展示反編譯后的代碼;而jode和jad都表現的非常高速,接近於打開源代碼的速度。
從反編譯的品質來看,無疑是Java Decompiler最好。最根本的原因就是,jad和jode的最新版都是在JDK 5.0出來以前發布的,所以對JDK 5.0及以上版本的特性基本上不支持。之所以認為jode的反編譯效果比jad好,是因為jad的eclipse插件不怎么好用,自己添加的jar包有時候不能反編譯出來。
插件的使用
插件的使用方面,需要稍微的注意一下。
jode和JD-Eclipse都是直接安裝好就可以使用;而jad則需要另外指定jad.exe的路徑,可以把jad.exe文件放到“%JAVA_HOME%/bin”目錄下,然后在eclipse中按照以下順序找到jad的設置窗口,Window -> Preferences, 打開Preferences窗口,然后依次選擇 Java -> JadClipse,確保"Path to decompiler:"的值為"jad.exe"。
其中,jad和jode還有一些別的IDE的插件版,有需要的話,可以到sourceforge上去搜索。
總結
如果使用的是JDK 5.0及以上,請使用Java Decompiler,畢竟效果才是最重要的。如果使用的是JDK 1.4的話,還是建議使用jode,如果不在eclipse中使用的話,可以選擇jad,加以復雜的命令,可以實現很多的功能。
本文主要是稍微介紹一下三款反編譯軟件的對比結果,所以具體的使用方法等可以見參考資料中的文章。
參考資料
Jad官網:http://www.kpdus.com/jad .html (好久沒有更新了,下載請使用下面網址)
jad下載:http://www.varaneckas.com/jad
jadclipse:http://sourceforge.net/projects/jadclipse/
jode:http://sourceforge.net/projects/jode/
jodeeclipse:http://sourceforge.net/projects/jodeeclipse/
Java Decompiler: http://java.decompiler.free.fr/
java 反編譯插件的介紹總結:http://zhidao.baidu.com/question/79760697.html
http://hi.baidu.com/darmn/blog/item/56678e7f14f81a0129388af7.html
http://hi.baidu.com/zhangge9477/blog/item/adeced08c9663a3ae8248849.html