Java概述(二)
請(qǐng)講一下Java程序的運(yùn)行機(jī)制?
Java程序的運(yùn)行分為編寫 、編譯 、運(yùn)行 三個(gè)步驟:

運(yùn)行機(jī)制主要是指編譯 、運(yùn)行的過程
1、編譯
Java編譯器對(duì)源文件進(jìn)行錯(cuò)誤排查的過程,編譯后將生成后綴名為.class的字節(jié)碼文件,從而讓JVM(Java虛擬機(jī))里的解釋器可以正常讀取。
2、運(yùn)行
分三步: 代碼的裝入 、校驗(yàn)和執(zhí)行
①代碼的裝入
JVM控制解釋器中的“類裝載器”去讀取和裝載程序所需的類(class的字節(jié)碼),然后解釋器開始建立類與類之間的關(guān)系。
②代碼的校驗(yàn)
字節(jié)碼校驗(yàn)器進(jìn)行檢查,校驗(yàn)器可發(fā)現(xiàn)操作數(shù)棧溢出,非法數(shù)據(jù)類型轉(zhuǎn)化等多種錯(cuò)誤。
③代碼的執(zhí)行
執(zhí)行也分兩種情況
即時(shí)編譯方式:解釋器先將字節(jié)碼編譯成機(jī)器碼,然后再執(zhí)行該機(jī)器碼。
解釋執(zhí)行方式:解釋器通過每次解釋并執(zhí)行一小段代碼來完成Java字節(jié)碼程序的所有操作。
通常采用的是第二種方法。由于JVM規(guī)格描述具有足夠的靈活性,這使得將字節(jié)碼翻譯為機(jī)器代碼的工作。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
JAVA
+關(guān)注
關(guān)注
20文章
3001瀏覽量
116430 -
編譯器
+關(guān)注
關(guān)注
1文章
1672瀏覽量
51602 -
源文件
+關(guān)注
關(guān)注
0文章
30瀏覽量
4892
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
蘋果宣布iPhone OS 4 多任務(wù)運(yùn)行機(jī)制詳解
蘋果宣布iPhone OS 4 多任務(wù)運(yùn)行機(jī)制詳解
蘋果今天在公司總部召開發(fā)布會(huì),提前披露了將于今夏發(fā)布的iPhone OS 4操作系統(tǒng)升級(jí)新特性。之前傳言中有關(guān)
發(fā)表于 04-13 08:48
?1083次閱讀
操作系統(tǒng)運(yùn)行機(jī)制
,按截止時(shí)間控制運(yùn)行的實(shí)現(xiàn);在批處理系統(tǒng)中,通過時(shí)鐘管理來衡量一個(gè)作業(yè)的運(yùn)行程度等。因此,系統(tǒng)管理的方方面面無不依賴于時(shí)鐘。
2) 中斷機(jī)制
引入中斷技術(shù)的初衷是提高多道程序
發(fā)表于 01-15 07:12
Arduino為什么只有l(wèi)oop和setup函數(shù),揭開Arduino的神秘面紗--運(yùn)行機(jī)制
USBDevice.attch()然后是for循環(huán)里面的串口二、看完后知道了運(yùn)行機(jī)制了吧看下面的點(diǎn)燈程序跟進(jìn)pinMode()函數(shù),基本上都是寄存器和另一些函數(shù)的操作跟進(jìn)digitalWrite()函數(shù)
發(fā)表于 10-30 17:33
計(jì)算機(jī)操作系統(tǒng)的運(yùn)行機(jī)制和體系結(jié)構(gòu)
計(jì)算機(jī)操作系統(tǒng)-運(yùn)行機(jī)制、體系結(jié)構(gòu)
發(fā)表于 07-09 16:52
CPU的基本結(jié)構(gòu)和運(yùn)行機(jī)制
目錄一. CPU的基本結(jié)構(gòu)和運(yùn)行機(jī)制參考《ARM微控制器與嵌入式系統(tǒng)--清華》一. CPU的基本結(jié)構(gòu)和運(yùn)行機(jī)制分析其中的CPU:(ALU、寄存器組、控制單元是必要的,其他非必要)一個(gè)完整的CPU:將
發(fā)表于 11-03 09:22
MCU總結(jié)結(jié)構(gòu)和程序運(yùn)行機(jī)制的相關(guān)資料分享
MCU總結(jié)結(jié)構(gòu)和程序運(yùn)行機(jī)制
發(fā)表于 11-16 08:45
Linux系統(tǒng)是如何去實(shí)現(xiàn)多用戶運(yùn)行機(jī)制的呢
什么是Linux系統(tǒng)呢?Linux系統(tǒng)是如何去實(shí)現(xiàn)多用戶運(yùn)行機(jī)制的呢?
發(fā)表于 12-29 06:40
Linux系統(tǒng)的fork運(yùn)行機(jī)制分析
如果其中一個(gè)進(jìn)程的輸出結(jié)果是“pid1:1001, pid2:1002”,寫出其他進(jìn)程的輸出結(jié)果(不考慮進(jìn)程執(zhí)行順序)。
明顯這道題的目的是考察linux下fork的執(zhí)行機(jī)制。下面我們通過分析這個(gè)題目,談?wù)凩inux下fork的運(yùn)行機(jī)制。
發(fā)表于 04-26 16:26
?1429次閱讀
Java程序編譯和運(yùn)行的過程
Java 虛擬機(jī)(JVM)是可運(yùn)行Java 代碼的假想計(jì)算機(jī)。只要根據(jù)JVM規(guī)格描述將解釋器移植到特定的計(jì)算機(jī)上,就能保證經(jīng)過編譯的任何Java代碼能夠在該系統(tǒng)上
發(fā)表于 03-09 15:32
?9498次閱讀
Java程序設(shè)計(jì)教程之Java語言的基礎(chǔ)知識(shí)概述
本文檔詳細(xì)介紹的是Java程序設(shè)計(jì)教程之Java語言的基礎(chǔ)知識(shí)概述主要內(nèi)容包括了:1.Java語言發(fā)展簡史,2.Java的特點(diǎn)(為什么要學(xué)習(xí)
發(fā)表于 02-22 10:28
?36次下載
Java程序是如何運(yùn)行的
? JVM是Java的運(yùn)行時(shí)虛擬機(jī),所有的Java程序都是在JVM沙箱中運(yùn)行,每個(gè)Java
SSL和TLS協(xié)議運(yùn)行機(jī)制的資料詳細(xì)概述
聯(lián)網(wǎng)的通信安全,建立在SSL/TLS協(xié)議之本文簡要介紹SSL/TLS協(xié)議的運(yùn)行機(jī)制。文章的重點(diǎn)是設(shè)計(jì)思想和運(yùn)行過程,不涉及具體的實(shí)現(xiàn)細(xì)節(jié)。
發(fā)表于 07-22 08:00
?2次下載
初學(xué)者:講解Java程序的開發(fā)與運(yùn)行原理
可能剛剛接觸編程的初學(xué)者會(huì)發(fā)現(xiàn),編寫一個(gè)Java程序其實(shí)很簡單,但是Java程序的運(yùn)行過程卻是非常復(fù)雜的。關(guān)于
php運(yùn)行機(jī)制和原理
PHP是一種在服務(wù)器端執(zhí)行的腳本語言,它被廣泛用于開發(fā)動(dòng)態(tài)網(wǎng)站。它的運(yùn)行機(jī)制和原理非常重要,因?yàn)樗鼪Q定了PHP腳本如何被解釋執(zhí)行和與服務(wù)器進(jìn)行交互。 PHP的運(yùn)行機(jī)制 PHP腳本的運(yùn)行機(jī)制涉及到以下
audio核心庫的運(yùn)行機(jī)制與技術(shù)要點(diǎn)
音頻系統(tǒng)核心庫的穩(wěn)定運(yùn)行,是實(shí)現(xiàn)低延遲、高保真音頻體驗(yàn)的前提。其內(nèi)部通過精密的線程調(diào)度、緩沖區(qū)管理與設(shè)備驅(qū)動(dòng)交互,保障音頻數(shù)據(jù)的連續(xù)性與同步性。本文將聚焦其運(yùn)行機(jī)制,逐層拆解關(guān)鍵技術(shù)要點(diǎn),幫助開發(fā)者
簡述Java程序的運(yùn)行機(jī)制
評(píng)論