最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java入門教程-Java的反編譯

2018-10-29 09:09 作者:動(dòng)力節(jié)點(diǎn)  | 我要投稿


  一、什么是編譯


  1、利用編譯程序從源語(yǔ)言編寫的源程序產(chǎn)生目標(biāo)程序的過(guò)程。


  2、用編譯程序產(chǎn)生目標(biāo)程序的動(dòng)作。編譯就是把高級(jí)語(yǔ)言變成計(jì)算機(jī)可以識(shí)別的2進(jìn)制語(yǔ)言,計(jì)算機(jī)只認(rèn)識(shí)1和0,編譯程序把人們熟悉的語(yǔ)言換成2進(jìn)制的。編譯程序把一個(gè)源程序翻譯成目標(biāo)程序的工作過(guò)程分為五個(gè)階段:詞法分析;語(yǔ)法分析;語(yǔ)義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語(yǔ)法分析,又稱為源程序分析,分析過(guò)程中發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,給出提示信息。


  二、什么是反編譯


  計(jì)算機(jī)軟件反向工程(Reverseengineering)也稱為計(jì)算機(jī)軟件還原工程,是指通過(guò)對(duì)他人軟件的目標(biāo)程序(可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過(guò)程、運(yùn)行方法等設(shè)計(jì)要素,某些特定情況下可能推導(dǎo)出源代碼。反編譯作為自己開(kāi)發(fā)軟件時(shí)的參考,或者直接用于自己的軟件產(chǎn)品中。


  三、Java類的編譯與反編譯


  我們?cè)谧畛鯇W(xué)習(xí)Java的時(shí)候,會(huì)接觸到兩個(gè)命令:javac和java,那個(gè)時(shí)候我們就知道,javac是用來(lái)編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。


  class文件打破了C或者C++等語(yǔ)言所遵循的傳統(tǒng),使用這些傳統(tǒng)語(yǔ)言寫的程序通常首先被編譯,然后被連接成單獨(dú)的、專門支持特定硬件平臺(tái)和操作系統(tǒng)的二進(jìn)制文件。通常情況下,一個(gè)平臺(tái)上的二進(jìn)制可執(zhí)行文件不能在其他平臺(tái)上工作。而Javaclass文件是可以運(yùn)行在任何支持Java虛擬機(jī)的硬件平臺(tái)和操作系統(tǒng)上的二進(jìn)制文件。


  那么反編譯呢,就是通過(guò)helloworld.class文件得到j(luò)ava文件(或者說(shuō)是程序員能看懂的Java文件)


  四、什么時(shí)候會(huì)用到反編譯


  1、我們只有一個(gè)類的class文件,但是我們又看不懂Java的class文件,那么我們可以把它反編譯成我們可以看得懂的文件。


  2、學(xué)習(xí)Java過(guò)程中,JDK的每個(gè)版本都會(huì)加入越來(lái)越多的語(yǔ)法糖,有些時(shí)候我們想知道Java一些實(shí)現(xiàn)細(xì)節(jié),我們可以借助反編譯。


  五、反編譯工具


  1、javap


  2、Jad(墻裂推薦)


  可以在官網(wǎng)下載可執(zhí)行文件,找到對(duì)應(yīng)的操作系統(tǒng)的對(duì)應(yīng)版本,然后進(jìn)行安裝使用。


  因?yàn)槲沂褂玫氖莑inux操作系統(tǒng),所以我下載的是Linux版本的工具,這個(gè)工具下載好之后會(huì)有一個(gè)執(zhí)行文件,只要在執(zhí)行文件所在目錄執(zhí)行./jadhelloworld.class就會(huì)在當(dāng)前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼


  Eclipse插件:


  在官網(wǎng)下載插件的jar包,然后將jar包放到eclipse的plugins目錄下‘在打開(kāi)Eclipse,Eclipse->Window->Preferences->Java,此時(shí)你會(huì)發(fā)現(xiàn)會(huì)比原來(lái)多了一個(gè)JadClipse的選項(xiàng),單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時(shí)文件的目錄。當(dāng)然在JadClipse下還有一些子選項(xiàng),如Debug,Directives等,按照默認(rèn)配置即可?;九渲猛戤吅?,我們可以查看一下class文件的默認(rèn)打開(kāi)方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我們可以看到class文件的打開(kāi)方式有兩個(gè),JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認(rèn)的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼

Java入門教程-Java的反編譯的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
英德市| 磐安县| 西华县| 宁南县| 梓潼县| 叙永县| 商南县| 土默特右旗| 麦盖提县| 巴塘县| 万全县| 渝中区| 镇远县| 文山县| 安陆市| 隆化县| 尉氏县| 桦南县| 集安市| 拉孜县| 南充市| 新民市| 梁山县| 陆丰市| 芦溪县| 四川省| 溆浦县| 密云县| 兰州市| 濉溪县| 奇台县| 永春县| 榆树市| 五指山市| 高州市| 固原市| 磐安县| 珲春市| 祥云县| 尚志市| 西丰县|