導航:首頁 > 源碼編譯 > java編譯的底層實現

java編譯的底層實現

發布時間:2023-03-14 21:31:18

『壹』 java程序運行的五個步驟

1、Java程序從源文件創建到程序運行要經過兩大步驟:1、源文件由編譯器編譯成位元組碼(ByteCode) 2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言("semi-interpreted" language)。

第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點像make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。

編譯後的位元組碼文件格式主要分為兩部分:常量池和方法位元組碼。常量池記錄的是代碼出現過的所有token(類名,成員變數名等等)以及符號引用(方法引用,成員變數引用等等);方法位元組碼放的是類中各個方法的位元組碼。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。

2、下面是程序運行的詳細步驟:

『貳』 程序語言底層是怎麼實現的

你好, 對於你的問題:
1、C++和Java都是面向對象編程語言(OOP),介面是OOP的一個特色,而函數是任何編程語言無論是面向過程還是面向對象都有的。
2、關於語句底層如何實現,你應該看過編程教材的第一章,一般在書籍開頭都會介紹程序時有何而來,在你編寫完程序代碼後,都會經過編譯、鏈接這個過程,這些就是將你的代碼進行轉換並最終生成可執行程序的過程,這些由IDE(開發工具)和編譯器(如Java的JDK)來共同完成,內部的細節是自動完成的。
3、要了解底層代碼實現,建議你去學習「編譯原理」這門知識
4、要學習控制CPU和內存存儲,建議去學習「計算機操作系統」這門知識(不是如何使用操作系統,是如何設計操作系統)
PS:除非你是非常喜歡或者就想做底層開發(如操作系統開發),一般應用程序開發只要學好相應的語言和類庫即可!
有其他問題歡迎咨詢!

『叄』 到底JAVA的底層是什麼

java底層,匯編啊。。

有部分庫(比如渲染等需要高速運算的)可能是C/C++

而且,這個,java底層這個概念。本來就存在某些問題。因為java是解釋型語言啊,應該問他的編譯器是啥語言實現的。

『肆』 java的"一次編譯,到處運行"的機制是如何實現的

JVM是一個java虛擬機,所謂的java虛擬機就是和普通的虛擬機一樣,擁有自己的CPU,RAM之類的。我們所使用的操作系統是Windows的操作系統,Windows操作系統支持的可執行文件是EXE文件,也就是說在Windows的操作系統上只有EXE的文件是可以直接被操作系統解釋為底層機器語言並進行運行的。而java虛擬機可以支持的是.class的可執行文件,在java的虛擬機中遇到.class的文件就可以直接翻譯成java虛擬機所能是別的底層機器語言並進行執行。這就是JVM的機制,正是因為java的這種機制才實現了java的跨平台,在不同的平台上安裝能夠在相應平台上運行的虛擬機,然後在java虛擬機中運行java的源程序,「一次編譯,多次執行」就此實現了。
所以java的跨平台是離不開虛擬機的支持的。虛擬機充當著java源程序和操作系統之間的中間,不同的操作系統只需要尋找相應的中介就可以實現在不同的操作系統上運行。而java的編譯只是吧.java文件編譯為.class位元組碼文件而已,然後把位元組碼交給虛擬機去執行。
虛擬機在執行的時候是讀一句位元組碼文件人後解釋一句給操作系統聽,這就是為什麼java是解釋型的語言。
所謂的編譯型的語言是指這種語言被編譯之後生成的是可以直接供操作系統執行的010101文件,像C,C++都是編譯型的,java因為中間有JVM這么個東西所以是解釋型的。

『伍』 Java的底層是用什麼語言寫的

JVM 的話是 C++ 實現的。而c++則需要考慮效率,任何在windows下運行的程序,底層都是C/C++或者ASM,這是硬體指令系統決定的。
Java 類庫是 Java 實現的。java主要面向於實現。

閱讀全文

與java編譯的底層實現相關的資料

熱點內容
db2如何連接伺服器資料庫 瀏覽:626
wordtopdf轉換 瀏覽:840
雲伺服器在哪設置ftp 瀏覽:620
黑客社會工程學攻擊pdf 瀏覽:996
專業中穎單片機程序開發 瀏覽:424
python多進程多線程實例 瀏覽:637
山東濟南生產伺服器雲主機 瀏覽:310
演算法員跳槽四年 瀏覽:730
秦九昭演算法v0怎麼求 瀏覽:384
斗魚java 瀏覽:896
程序員對老師的感謝 瀏覽:29
什麼app能查看銀行卡照片 瀏覽:24
win7pdf虛擬列印 瀏覽:332
程序員喜歡的女生條件 瀏覽:123
阿里雲伺服器ip搭建教程 瀏覽:85
解壓和拉伸這一動畫的原理是什麼 瀏覽:740
tbc戰士的命令怒吼 瀏覽:481
idea快捷鍵看源碼 瀏覽:976
手機碎屏解壓工具 瀏覽:245
jsonrpcphp使用 瀏覽:566