什么是編譯
1、利用編譯程序從源語言編寫的源程序產(chǎn)生目標(biāo)程序的過程
2、用編譯程序產(chǎn)生目標(biāo)程序的動作。 編譯就是把高級語言變成計(jì)算機(jī)可以識別的2進(jìn)制語言,計(jì)算機(jī)只認(rèn)識1和0,編譯程序把人們熟悉的語言換成2進(jìn)制的。 編譯程序把一個(gè)源程序翻譯成目標(biāo)程序的工作過程分為五個(gè)階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息,具體參考 Javac編譯與JIT編譯
什么是反編譯
計(jì)算機(jī)軟件反向工程(Reverse engineering)也稱為計(jì)算機(jī)軟件還原工程,是指通過對他人軟件的目標(biāo)程序(可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運(yùn)行方法等設(shè)計(jì)要素,某些特定情況下可能推導(dǎo)出源代碼。反編譯作為自己開發(fā)軟件時(shí)的參考,或者直接用于自己的軟件產(chǎn)品中
Java類的編譯與反編譯
我們在最初學(xué)習(xí)Java的時(shí)候,會接觸到兩個(gè)命令:javac和java,那個(gè)時(shí)候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件
那么反編譯呢,就是通過helloworld.class文件得到j(luò)ava文件(或者說是程序員能看懂的Java文件)
什么時(shí)候會用到反編譯
1、我們只有一個(gè)類的class文件,但是我們又看不懂Java的class文件,那么我們可以把它反編譯成我們可以看得懂的文件
2、學(xué)習(xí)Java過程中,JDK的每個(gè)版本都會加入越來越多的語法糖,有些時(shí)候我們想知道Java一些實(shí)現(xiàn)細(xì)節(jié),我們可以借助反編譯。以下是小編推薦的七款開源Java反編譯工具,一起來了解一下。
7款開源Java反編譯工具
1、Java反編譯插件 —— Jadclipse
JadClipse是Jad的Eclipse插件,是一款非常實(shí)用而且方便地Java反編譯插件,我們只需將下載的插件包復(fù)制到eclipse的plugins目錄下,然后修改window -》 Preferences -》 Java -》 JadClipse 下的Path to decompiler ,如:C:\pin\jadnt158\jad.exe,最后在Windows -》 Perference -》 General -》 Editors -》 File Associations中修改“*.class”默認(rèn)關(guān)聯(lián)的編輯器為“JadClipse Class File Viewer” 即可。
官方網(wǎng)站:http://sourceforge.net/projects/jadclipse/
2、Java反編譯工具 jad
jad是一款使用非常廣泛地Java反編譯工具,上面這款Jadclipse就是基于jad的反編譯插件,JAD 文件包含 MIDlet 套件的標(biāo)題信息,例如開發(fā)應(yīng)用程序的公司、應(yīng)用程序名稱和大小。
官方網(wǎng)站:http://varaneckas.com/jad/
3、Java 反編譯器 JD-GUI
JD-GUI 是一個(gè)用 C++ 開發(fā)的 Java 反編譯工具,由 Pavel Kouznetsov開發(fā),支持Windows、Linux和蘋果Mac Os三個(gè)平臺。而且提供了Eclipse平臺下的插件JD-Eclipse。JD-GUI不需要安裝,直接點(diǎn)擊運(yùn)行,可以反編譯jar,class文件。
官方網(wǎng)站:http://jd.benow.ca/
4、Java反編譯器 jdec
jdec是一個(gè)Java反編譯器。它能夠把出現(xiàn)在一個(gè).class文件中的字節(jié)碼還原成Java源代碼,反編譯的結(jié)果幾乎與原始Java文件相同。它還自帶一個(gè)利用swing開發(fā)的用戶操作界面。
官方網(wǎng)站:http://jdec.sourceforge.net/
5、uuDeJava
uuDeJava是Java Class文件的反編譯工具。反編譯的Java源程序被輸出到Class的相同目錄。內(nèi)部使用jad.exe。反編譯Class文件時(shí),可以直接點(diǎn)擊Class文件(關(guān)聯(lián)后),或者選中文件或目錄發(fā)送到uuDeJava的快捷方式。還可以拖動文件或目錄到uuDeJava的主窗口。
官方網(wǎng)站:http://www.uuware.com/uudejava_cn.htm
6、Java 反向工程軟件 Minjava
Minjava 是一個(gè) Java 反向工程軟件,可幫助理解已存在一些 Java 軟件的架構(gòu)和行為。
官方網(wǎng)站:https://code.google.com/p/minjava/
7、Java Decompiler
這款反編譯器叫 “Java Decompiler”, 由 Pavel Kouznetsov開發(fā),目前最新版本為0.2.5. 它由 C++開發(fā),并且官方可以下載 windows、linux和蘋果Mac Os三個(gè)平臺的可執(zhí)行程序。
官方網(wǎng)站:http://jd.benow.ca/
-
JAVA
+關(guān)注
關(guān)注
19文章
2967瀏覽量
104751 -
編譯工具
+關(guān)注
關(guān)注
0文章
10瀏覽量
6957
發(fā)布評論請先 登錄
相關(guān)推薦
評論