-
1 # 網路事紀
-
2 # 紅蓮故衣
直接在命令提示符中輸入
javac 源程式類名.java ,執行完之後會生成class檔案,這個檔案就是位元組碼檔案
-
3 # ImButters
有一個東西,叫編譯器,Java的原始碼被編譯器編譯以後,就成了包含有位元組碼的檔案了,對於JVM來說,它只認識位元組碼後就可以執行了。
所以,Java源程式是 經由編譯器 編譯之後,成了位元組碼了。
-
4 # 使用者5514491271139
原始碼是函式實現的原理,實現原理都在具體類裡,這就牽涉到具體的演算法以及資料結構
api只負責告訴你這個函式是用來做什麼的,引數是啥,引數型別是啥
原始碼是如何透過計算機實現的,這就牽涉到jvm,java虛擬機器,把java原始碼編譯成位元組碼,
原始碼 到機器碼
java垃圾回收機制
儲存機制
https://www.cnblogs.com/chanshuyi/p/jvm_serial_04_from_source_code_to_machine_code.html
當原始碼轉化為位元組碼之後,其實要執行程式,有兩種選擇。一種是使用 Java 直譯器解釋執行位元組碼,另一種則是使用 JIT 編譯器將位元組碼轉化為本地機器程式碼。
這兩種方式的區別在於,前者啟動速度快但執行速度慢,而後者啟動速度慢但執行速度快。至於為什麼會這樣,其原因很簡單。因為直譯器不需要像 JIT 編譯器一樣,將所有位元組碼都轉化為機器碼,自然就少去了最佳化的時間。而當 JIT 編譯器完成第一次編譯後,其會將位元組碼對應的機器碼儲存下來,下次可以直接使用。而我們知道,機器碼的執行效率肯定是高於 Java 直譯器的。所以在實際情況中,為了執行速度以及效率,我們通常採用兩者相結合的方式進行 Java 程式碼的編譯執行。
-
5 # 影片搞笑合集1
java源程式是開發人員編寫的字尾名為.java的檔案,而java位元組碼檔案是經過javac編譯器編譯之後計算機能認識的字尾名為.class的檔案。
javac做了些什麼?
主要由4個模組組成
詞法剖析器:識別java中的if,else,for,while等關鍵字及其語句的合法性,構成符合標準的Token流。
語法剖析器:對構成的Token流進行語法剖析,檢查它們構成的組合是否符合java語法標準,構成抽象的語法樹。
語義剖析器:將foreach,註解等雜亂的語法轉換成最簡單的語法,構成註解往後的語法樹。
位元組碼生成器:將註解往後的語法樹翻譯成位元組碼。
-
6 # 不正經的陳叔叔
透過java編譯器,java編譯器就是將. java檔案編譯為.class的位元組碼檔案,該位元組碼檔案便可以被java虛擬機器執行
-
7 # 扣丁學堂
編譯器預設都會將java檔案變成位元組碼,讓電腦看的懂手動的話就用cmd javac xxxx.java 編譯
-
8 # java開發Aa
這就用到了jdk的工作原理了。jdk可以將寫好的java檔案編譯成class檔案,只要在安裝了jre的機器上就能執行
-
9 # IT資訊i
編譯器預設都會將java檔案變成位元組碼讓電腦看的懂
手動的話就用cmd javac xxxx.java 編譯
-
10 # 逆光的背影
java源程式變成位元組碼檔案,其實就是java源程式的一個編譯過程,就好比你想做成一件事,你必須要有做成這件事的能力,在java源程式轉化為位元組碼的時候,也必須要有這個能力的工具才能完成,對於我們這些學java的人來說,要跑一個程式碼,就必須要有個環境 jvm(java虛擬機器),其次,你還要配置環境變數,為什麼要配置環境變數呢?這就是重點了,就是java源程式變成java位元組碼的重點,因為配置了環境變數,我們變異的時候才能去找到javac這個編譯工具,java程式碼的編譯都必須靠這個編譯工具。
執行 javac 命令的過程,其實就是 javac 編譯器解析 Java 原始碼,並生成位元組碼檔案的過程。說白了,其實就是使用 javac 編譯器把 Java 語言規範轉化為位元組碼語言規範。javac 編譯器的處理過程可以分為下面四個階段:
第一個階段:詞法、語法分析。在這個階段,JVM 會對原始碼的字元進行一次掃描,最終生成一個抽象的語法樹。簡單地說,在這個階段 JVM 會搞懂我們的程式碼到底想要幹嘛。就像我們分析一個句子一樣,我們會對句子劃分主謂賓,弄清楚這個句子要表達的意思一樣。
第二個階段:填充符號表。我們知道類之間是會互相引用的,但在編譯階段,我們無法確定其具體的地址,所以我們會使用一個符號來替代。在這個階段做的就是類似的事情,即對抽象的類或介面進行符號填充。等到類載入階段,JVM 會將符號替換成具體的記憶體地址。
第三個階段:註解處理。我們知道 Java 是支援註解的,因此在這個階段會對註解進行分析,根據註解的作用將其還原成具體的指令集。
第四個階段:分析與位元組碼生成。到了這個階段,JVM 便會根據上面幾個階段分析出來的結果,進行位元組碼的生成,最終輸出為 class 檔案。
我們一般稱 javac 編譯器為前端編譯器,因為其發生在整個編譯的前期。
所以說透過javac編譯器就可以將java源程式轉化為位元組碼。
他的命令我也說一下,如果要單獨編譯一下這個原始檔的話,直接在命令好執行
javac xxx.java 就可以,不過你要先進入到這個檔案目錄下面。好了,回答就到這裡,還有你們採納
回覆列表
java源程式就是一般用java寫的程式碼,字尾為.java。經過java的直譯器轉為java位元組碼,字尾為.class。
java是高階語言,同時也是跨平臺的語言。所以執行時會在java虛擬機器上,也稱JVM。它介於作業系統和java直譯器之間。它能夠識別java直譯器翻譯後的位元組碼,然後JVM在不同平臺上執行成為機器碼,讓計算機執行程式。