當前位置:編程學習大全網 - 編程語言 - 簡述Java程序從編寫到運行的基本步驟,並說明Java的基本工作原理

簡述Java程序從編寫到運行的基本步驟,並說明Java的基本工作原理

Java編譯原理:

Java 虛擬機(JVM)是可運行Java 代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上,就能保證經過編譯的任何Java代碼能夠在該系統上運行。

壹.Java源文件的編譯、下載 、解釋和執行

Java應用程序的開發周期包括編譯、下載 、解釋和執行幾個部分。Java編譯程序將Java源程序翻譯為JVM可執行代碼?字節碼。這壹編譯過程同C/C++ 的編譯有些不同。當C編譯器編譯生成壹個對象的代碼時,該代碼是為在某壹特定硬件平臺運行而產生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉換為特定的內存偏移量,以保證程序運行。Java編譯器卻不將對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將這些符號引用信息保留在字節碼中,由解釋器在運行過程中創立內存布局,然後再通過查表來確定壹個方法所在的地址。這樣就有效的保證了Java的可移植性和安全 性。

運行JVM字節碼的工作是由解釋器來完成的。解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由"類裝載器"(class loader)完成。類裝載器負責裝入運行壹個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調用的類。當類裝載器裝入壹個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本臺計算機上的所有類都在同壹地址空間內,而所有從外部引進的類,都有壹個自己獨立的名字空間。這使得本地類通過***享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這壹階段確定代碼的內存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。

隨後,被裝入的代碼由字節碼校驗器進行檢查。校驗器可發現操作數棧溢出,非法數據類型轉化等多種錯誤。通過校驗後,代碼便開始執行了。

Java字節碼的執行有兩種方式:

1.即時編譯方式:解釋器先將字節碼編譯成機器碼,然後再執行該機器碼。

2.解釋執行方式:解釋器通過每次解釋並執行壹小段代碼來完成Java字節碼程 序的所有操作。

通常采用的是第二種方法。由於JVM規格描述具有足夠的靈活性,這使得將字節碼翻譯為機器代碼的工作

具有較高的效率。對於那些對運行速度要求較高的應用程序,解釋器可將Java字節碼即時編譯為機器碼,從而很好地保證了Java代碼的可移植性和高性能。

  • 上一篇:想尋求楊玉瑩<泉水叮咚響>伴奏
  • 下一篇:智能制造給傳統企業能帶來哪些變
  • copyright 2024編程學習大全網