位元組碼可以編譯嗎
『壹』 java編譯後產生 位元組碼,還是 機器碼能不能簡單解釋一下
java虛擬機是可運行java位元組碼的假象計算機 java的跨平台性也是相對與其他編程語言而言的
先介紹一下c語言的編譯過程吧
先是C語言源程序也就是。c的文件
經過C編譯程序編譯後生成windows可執行文件exe文件
然後在windows中執行。。
再介紹java的編譯過程
先是java源程序 擴展名為。java的文件
由java編譯程序將java位元組碼文件 就是class文件
然後在java虛擬機中執行。。
『貳』 位元組碼指令的編譯與執行
java編程開發是目前市場上使用范圍非常廣泛的一種編程開發語言。今天我們就一起來了解一下,在java編程中關於位元組碼的一些指令的編譯與執行方法。
java文件編譯後的class文件,java跨平台的中間層,JVM通過對位元組碼的解釋執行(執行模式,還有JIT編譯執行,下面講解),屏蔽對操作系統的依賴。一個位元組(8位)可以儲存256中不同的指令,這樣的指令就是位元組碼,java所有指令有200個左右,這些指令組成了位元組碼文件(.class)。
一、位元組碼的主要指令:
.class文件裡面的十六進制文件,其中CAFEBABE是標志這個文件為java的編譯後的文件,00000034代表版本號,01670700一個位元組(8位)就是一個位元組指令,由於數值指令太難看懂,我們可以用javap將指令翻譯為助記指令。
1、載入或儲存指令
在棧幀仿絕消中,宏嘩通過指令操作數據在局部變數備知表與操作棧間傳遞。
ILOAD、ALOAD:將int、對象引用類型從局部變數表壓入操作棧頂;
ISTORE、ASTORE:將int、對象引用類型從操作棧頂儲存到局部變數表裡;
ICONST、BIPUSH、SIPUSH、LDC:將常亮載入到操作棧頂。
2、運算指令
對操作棧上的值進行運算,並把結果寫入操作棧頂,如IADD、IMUL。
3、類型轉換指令
I2L、D2F
4、對象創建與訪問指令
NEW
除了位元組碼指令外,南邵電腦培訓認為還包括像LINENUMBER儲存位元組碼與源碼對應,方便調試定位;LOCALVARIABLE儲存當前方法使用到的局部表量表。
二、java源碼文件轉化為位元組碼(.class)文件的過程
JAVA源文件---------->詞法解析---------->語法解析---------->語義分析--------->生成位元組碼--------->位元組碼文件
詞法分析:根據空格分割出單詞、操作符等,形成token信息流;
語法分析:根據token流和java語法規范生成語法樹;
語義分析:檢查關鍵字、類型匹配是否正確;
『叄』 怎麼用JDK把源文件編譯成位元組碼文件(JAVA)
安裝好JDK
右擊我的電腦,選擇高級選項卡,裡面有個環境變數的按鈕,點擊進去開始配置環境變數
配置環境變數需要做一下幾個步驟:
1.打開環境變數,可選擇用戶變數或者是系統變數中的path,如果用戶變數中沒有path,就直接選擇系統變數的path,雙擊打開它,在最末端加上分號,在加上你的JDK安裝的目錄,然後再新建一個變數名叫classpath,其值為: .; (注意是一個點再加上一個分號)再加上Java的安裝目錄下jdk包下的lib包目錄,如果要保險點就再加上Java安裝目錄下jre包下的lib包,然後點確定退出環境變數
重新啟動cmd 敲Javac試試看!