java編譯期和運(yùn)行期

何為運(yùn)行期?何為編譯期?

編譯期是指編譯器將源代碼翻譯為機(jī)器能識(shí)別的代碼聚磺,java為編譯為jvm認(rèn)識(shí)的字節(jié)碼文件。
運(yùn)行期則是指java代碼的運(yùn)行過程炬丸。

編譯期
編譯期

舉個(gè)例子瘫寝,當(dāng)我們作為開發(fā)人員,在電腦上拼死拼活寫了一個(gè)版本的代碼稠炬,然后將代碼提交到git上去焕阿,當(dāng)我們用jekins或其他工具將代碼從git上clone下來,使用mvn package首启,或者mvn intall打包的過程就叫編譯期暮屡。是指將java代碼編譯為機(jī)器識(shí)別的字節(jié)碼文件的過程。

編譯期II

在編譯期毅桃,將java代碼翻譯為字節(jié)碼文件的過程經(jīng)過了四個(gè)步驟褒纲,詞法分析語(yǔ)法分析钥飞,語(yǔ)義分析莺掠,代碼生成四個(gè)步驟。

  • 詞法分析

    • 詞法分析是編譯的第一階段读宙。詞法分析器的主要任務(wù)是讀入源程序的輸入字符汁蝶,將它們組成詞素,生成并輸出一個(gè)詞法單元序列,這個(gè)詞法單元序列被輸出到語(yǔ)法分析器進(jìn)行語(yǔ)法分析掖棉。
  • 語(yǔ)法分析

    • 語(yǔ)法分析程序從掃描程序中獲取記號(hào)形式的源代碼墓律,并完成定義程序結(jié)構(gòu)的語(yǔ)法分析 (syntax analysis ),這與自然語(yǔ)言中句子的語(yǔ)法分析類似幔亥。語(yǔ)法分析定義了程序的結(jié)構(gòu)元素及其關(guān)系耻讽。通常將語(yǔ)法分析的結(jié)果表示為語(yǔ)法樹。
  • 語(yǔ)義分析

    • 程序的語(yǔ)義就是它的“意思”帕棉,它與語(yǔ)法或結(jié)構(gòu)不同针肥。程序的語(yǔ)義確定程序的運(yùn)行,但是大多數(shù)的程序設(shè)計(jì)語(yǔ)言都具有在執(zhí)行之前被確定而不易由語(yǔ)法表示和由分析程序分析的特征香伴。這些特征被稱作靜態(tài)語(yǔ)義(static semantic)慰枕,而語(yǔ)義分析程序的任務(wù)就是分析這樣的語(yǔ)義,語(yǔ)義具有只有在程序執(zhí)行時(shí)才能確定的特性即纲,由于編譯器不能執(zhí)行程序具帮,所以它不能由編譯器來確定)。一般的程序設(shè)計(jì)語(yǔ)言的典型靜態(tài)語(yǔ)義包括聲明和類型檢查低斋。由語(yǔ)義分析程序計(jì)算的額外信息蜂厅,它們通常是作為注釋或“裝 飾”增加到樹中(還可將屬性添加到符號(hào)表中)。
  • 代碼生成

    • 代碼生成器得到中間代碼膊畴,并生成目標(biāo)代碼掘猿。

這就是整個(gè)編譯期要做的事情。

運(yùn)行期

程序的運(yùn)行過程就是運(yùn)行期唇跨。


image.png

從jvm加載字節(jié)碼文件稠通,到使用到最后的卸載過程,都是屬于運(yùn)行期的范疇买猖。

  • 加載
    • 將類的.class文件中的二進(jìn)制數(shù)據(jù)讀到內(nèi)存中采记,將其放在運(yùn)時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi),然后在堆區(qū)創(chuàng)建一個(gè)java.lang.Class對(duì)象政勃,用來封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)唧龄。
      • 加載.class文件的方式
        • 從本地系統(tǒng)上直接加載。
        • 通過網(wǎng)絡(luò)下載.class文件奸远。
        • 從zip既棺,jar等歸檔文件中加載.class文件。
        • 將java源文件動(dòng)態(tài)編譯為.class文件
  • 驗(yàn)證
    • 類文件的結(jié)構(gòu)檢查 確保類文件總符合ava類文件的固定格式
    • 語(yǔ)義檢查 確保類本身符合java語(yǔ)言的語(yǔ)法規(guī)定
    • 字節(jié)碼驗(yàn)證 確保字節(jié)碼流可以被java虛擬機(jī)安全的執(zhí)行懒叛。(靜態(tài)方法丸冕,實(shí)例對(duì)象)
    • 二進(jìn)制兼容性的驗(yàn)證 引用類之間協(xié)調(diào)一致。
  • 準(zhǔn)備
    • java虛擬機(jī)對(duì)類的靜態(tài)變量分配內(nèi)存薛窥,并設(shè)置初始值胖烛。如static int此時(shí)為0.
  • 解析
    • java虛擬機(jī)會(huì)把類的二進(jìn)制數(shù)據(jù)中的符號(hào)引用代替為直接引用眼姐。
  • 初始化
    • java虛擬機(jī)執(zhí)行類的初始化語(yǔ)句,為類的靜態(tài)變量賦予初始值佩番。
    • 兩種初始化方式:
      • 在靜態(tài)變量的聲明處進(jìn)行初始化众旗。
      • 在靜態(tài)代碼塊中進(jìn)行初始化。
  • 使用
    • 程序運(yùn)行過程趟畏。
  • 卸載
    • 垃圾回收機(jī)制相關(guān)贡歧。對(duì)無引用的對(duì)象進(jìn)行回收。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赋秀,一起剝皮案震驚了整個(gè)濱河市利朵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猎莲,老刑警劉巖绍弟,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異著洼,居然都是意外死亡樟遣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門郭脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來年碘,“玉大人澈歉,你說我怎么就攤上這事展鸡。” “怎么了埃难?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵莹弊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我涡尘,道長(zhǎng)忍弛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任考抄,我火速辦了婚禮细疚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘川梅。我一直安慰自己疯兼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布贫途。 她就那樣靜靜地躺著吧彪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丢早。 梳的紋絲不亂的頭發(fā)上姨裸,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天秧倾,我揣著相機(jī)與錄音,去河邊找鬼傀缩。 笑死那先,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扑毡。 我是一名探鬼主播胃榕,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瞄摊!你這毒婦竟也來了勋又?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤换帜,失蹤者是張志新(化名)和其女友劉穎楔壤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惯驼,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹲嚣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祟牲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隙畜。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖说贝,靈堂內(nèi)的尸體忽然破棺而出议惰,到底是詐尸還是另有隱情,我是刑警寧澤乡恕,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布言询,位于F島的核電站,受9級(jí)特大地震影響傲宜,放射性物質(zhì)發(fā)生泄漏运杭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一函卒、第九天 我趴在偏房一處隱蔽的房頂上張望辆憔。 院中可真熱鬧,春花似錦报嵌、人聲如沸虱咧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彤钟。三九已至,卻和暖如春跷叉,著一層夾襖步出監(jiān)牢的瞬間逸雹,已是汗流浹背营搅。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梆砸,地道東北人转质。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像帖世,于是被迫代替她去往敵國(guó)和親休蟹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容