真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼何時(shí)編譯 java是編譯型

Java代碼編譯和運(yùn)行的流程是怎樣的?

java先經(jīng)過編譯源代碼

10年積累的成都網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有北票免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

編譯成class字節(jié)碼文件

運(yùn)行字節(jié)碼文件

什么是Java代碼的編譯與反編譯?

Java代碼的編譯與反編譯

2017-02-21Hollis數(shù)盟

一、什么是編譯

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

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

二、什么是反編譯

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

三、Java類的編譯與反編譯

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

class文件打破了C或者C++等語言所遵循的傳統(tǒng),使用這些傳統(tǒng)語言寫的程序通常首先被編譯,然后被連接成單獨(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)制文件。

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

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

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

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

五、反編譯工具

1、javap

2、Jad:官網(wǎng)(墻裂推薦)

客戶端:

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

java源代碼為什么要編譯

程序設(shè)計(jì)高級(jí)語言的原理都是相似的。JAVA,C,C++,等都類似。

說一下JAVA的:

我們先把自然語言,也就是我們平時(shí)的話寫成程序設(shè)計(jì)高級(jí)語言,這是編程。

然后再通過編譯器生成class也就是字節(jié)碼文件,這個(gè)過程是編譯。此時(shí)的class文件我們也可以稱之為二進(jìn)制碼,就是計(jì)算機(jī)可識(shí)別的0,1文件了。而編譯是計(jì)算機(jī)內(nèi)部運(yùn)行,不需要編程者操作。

.java是以源文件形式存在,是編譯器和我們都可識(shí)別的語言。

編譯器識(shí)別了.java文件后生成.class文件,是編譯器和計(jì)算機(jī)可識(shí)別的語言。

然后計(jì)算機(jī)會(huì)使同名的.java和.class文件關(guān)聯(lián),計(jì)算機(jī)自己有兩次翻譯過程,而這個(gè)過程操作者并不需要操心。之后我們就可以運(yùn)行.java文件了。

如何編譯java程序

三種方法:

1.在IDE中,如eclipse中寫的Java程序,在點(diǎn)擊保存后eclipse就會(huì)調(diào)用javac編譯程序編譯,編譯文件在當(dāng)前項(xiàng)目的bin目錄下。

2.作為一個(gè)獨(dú)立的文件且沒有定義Java環(huán)境變量,需要在cmd窗口中切換到j(luò)ava bin目錄下執(zhí)行Javac程序,執(zhí)行格式為?????javac 空格 Java源文件;如 javac? C://hello.java;

3.作為一個(gè)獨(dú)立的文件且定義了Java環(huán)境變量,打開cmd窗口,可以在任意目錄輸入javac java源文件,如javac D://hi.java。

擴(kuò)展資料

Java也是一種高級(jí)語言,要讓計(jì)算機(jī)執(zhí)行你撰寫的Java程序,也得通過編譯程序的編譯。但是Java編譯程序并不直接將Java源代碼編譯為相依于計(jì)算機(jī)平臺(tái)的0、1序列,而是將其編譯為字節(jié)碼。

Java源代碼的擴(kuò)展名為.java,經(jīng)過編譯程序編譯之后生成擴(kuò)展名為.class的字節(jié)碼。

簡述JAVA程序的編輯編譯和運(yùn)行過程

第一步(編譯): 創(chuàng)建完源文件之后,程序會(huì)先被編譯為.class文件。Java編譯一個(gè)類時(shí),如果這個(gè)類所依賴的類還沒有被編譯,編譯器就會(huì)先編譯這個(gè)被依賴的類,然后引用,否則直接引用,這個(gè)有點(diǎn)象make。

如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報(bào)“cant find symbol”的錯(cuò)誤。

第二步(運(yùn)行):java類運(yùn)行的過程大概可分為兩個(gè)過程:1、類的加載 2、類的執(zhí)行。需要說明的是:JVM主要在程序第一次主動(dòng)使用類的時(shí)候,才會(huì)去加載該類。也就是說,JVM并不是在一開始就把一個(gè)程序就所有的類都加載到內(nèi)存中,而是到不得不用的時(shí)候才把它加載進(jìn)來,而且只加載一次。

特別說明:java類中所有public和protected的實(shí)例方法都采用動(dòng)態(tài)綁定機(jī)制,所有私有方法、靜態(tài)方法、構(gòu)造器及初始化方法clinit都是采用靜態(tài)綁定機(jī)制。而使用動(dòng)態(tài)綁定機(jī)制的時(shí)候會(huì)用到方法表,靜態(tài)綁定時(shí)并不會(huì)用到。

擴(kuò)展資料:

Java整個(gè)編譯以及運(yùn)行的過程相當(dāng)繁瑣,本文通過一個(gè)簡單的程序來簡單的說明整個(gè)流程。

Java代碼編譯:是由Java源碼編譯器來完成;

Java字節(jié)碼的執(zhí)行:是由JVM執(zhí)行引擎來完成

Java程序從源文件創(chuàng)建到程序運(yùn)行要經(jīng)過兩大步驟:

1、源文件由編譯器編譯成字節(jié)碼(ByteCode)

2、字節(jié)碼由java虛擬機(jī)解釋運(yùn)行。因?yàn)閖ava程序既要編譯同時(shí)也要經(jīng)過JVM的解釋運(yùn)行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。


網(wǎng)站欄目:java代碼何時(shí)編譯 java是編譯型
網(wǎng)頁路徑:http://weahome.cn/article/hggocs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部