Java 架構和組件解釋 [2022]
已發表: 2021-01-04在成為 Java 程序員之前,您必須了解該語言的各個方面。 Java 最重要的方面之一是 Java 體系結構。 這方面的另一個技術主題是了解 JVM 的組件。 因此,我們將在這篇文章中涵蓋這兩個關鍵主題。
本文假設您對 Java 的基礎知識有一個大致的了解。 即使您不熟悉 Java 的基礎知識,也可以在下面的評論部分提出您可能遇到的任何問題。 讓我們開始吧:
目錄
Java 架構解釋
Java有兩個過程,編譯和解釋。 Java 編譯器將 Java 中存在的代碼轉換為字節碼。 Java 虛擬機 (JVM)將字節碼轉換為機器直接執行的機器碼。
我們可以通過以下步驟來描述這個過程:
- 源代碼轉到 Java 編譯器
- Java 編譯器將其轉換為字節碼
- 字節碼進入 Java 虛擬機
- 最後,它進入操作系統(操作系統)
現在我們對 Java 架構的工作原理有了一點了解,我們可以看看它的不同組件:
JVM(Java虛擬機)
Java 的創建者希望它是 WORA(一次編寫,隨處運行)。 這意味著您可以在任何平台上運行它的應用程序,但賦予 Java 這種品質的東西是 JVM。 JVM 提供了執行 Java 代碼的環境。 它解釋字節碼並將其轉換為機器碼,以便機器可以運行 Java 程序。

JVM 加載驗證並執行代碼。 它還為代碼提供運行時環境,以便它可以在機器中運行。
JRE(Java 運行時環境)
JRE 構建了一個運行時環境,您可以在其中執行 Java 程序。 它採用 Java 代碼並將其與所需的庫相結合。 JRE 還啟動 JVM 以供其執行。 Java 運行時環境具有所需的軟件和庫,因此您可以運行這些程序。
JDK(Java 開發工具包)
您將使用 JDK 來開發 Java 應用程序和程序。 它是一個軟件開發環境,包含多種開發工具,包括 JRE、編譯器、解釋器、文檔生成器和存檔器。
JVM的組件
現在您已經熟悉了 Java 架構,讓我們看一下 JVM 的組件,以便我們更好地理解它。 由於 JVM 執行 Java 最重要的任務之一,它有許多部分用於此目的。 我們將詳細討論每個元素:
類加載器子系統
ClassLoader 是 Java 虛擬機的一個子系統,用於加載類文件。 它是架構的第一個組件,因為它加載程序以便可以執行其他任務。 它還鏈接和初始化類文件。 我們可以將其工作分為以下三個部分:
正在加載
該組件加載類。 它具有用於加載屬於引導類路徑的類的引導類加載器。 Extension ClassLoader 加載位於 ext 文件夾內的類,Application ClassLoader 加載提到的環境變量和類似文件的路徑。

鏈接
在這裡,子系統有一個驗證器來驗證字節碼是否正確。 如果字節碼不正確,則會產生驗證錯誤。 鏈接部分分配所有靜態變量內存並分配默認值。 它還用原始的符號引用替換了內存的符號引用。
初始化
在 ClassLoading 的這一部分中,系統將靜態變量分配給原始值並執行靜態塊。
運行時數據區
JVM 的這一部分包含以下組件:
方法區
方法區存儲所有類級別的數據。 每個 JVM 只有一個方法區。
堆區
堆區域存儲所有對象及其實例數組和變量。 與方法區一樣,JVM 也只有一個堆區。
堆棧區
本節為每個威脅創建唯一的運行時堆棧,並為堆棧內存(也稱為堆棧幀)中的每個方法調用創建一個條目。 它有一個與方法相關的局部變量數組、作為中間操作的工作空間的操作數堆棧以及與方法相關的所有符號保持存儲的幀數據。 除非有異常,否則幀數據會維護 catch 塊信息。
PC 寄存器
每個線程都有單獨的 PC 寄存器來保存運行指令的地址。 一旦一條指令完成執行,PC 寄存器就會用下一條指令更新自己。
本機方法堆棧
顧名思義,此部分包含有關本機方法的信息。 它為每種威脅創建了一個獨特的本機方法堆棧。
您應該注意,運行時數據區的前兩個組件(方法區和堆區)是共享資源,而堆棧區不是。
執行引擎
執行引擎執行字節碼。 它一塊一塊地讀取和執行它。 它還具有不同的組件:
口譯員
該組件快速解釋字節碼,但執行速度有點慢。 當系統多次調用一個方法時,它有一個顯著的缺點,並且每次都需要新的解釋。 解釋器的這個缺點極大地損害了過程的效率。
JIT 編譯器
JIT 編譯器沒有解釋器的缺點。 因此,當執行引擎發現重複代碼時,它會使用 JIT 編譯器而不是解釋器。 JIT 編譯器在編譯後將字節碼轉換為本機代碼。 系統直接使用本機代碼。
JIT 編譯器具有用於生成中間代碼的中間代碼生成器和用於優化中間代碼的代碼優化器。 它還有一個生成本機 doe 的目標代碼生成器和一個查找熱點的配置文件。
垃圾收集器
執行引擎的最後一個組件是垃圾收集器,它收集並清除未引用的對象。 您可以通過調用 system.gc() 來觸發它,但這並不能保證它的執行。

除了這些組件之外,JVM 還具有 JNI(Java 本機接口)和本機方法庫。 前者與後者交互,並為執行提供必要的 Native Libraries。
從世界頂級大學獲得軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
最後的想法
我們努力使這篇文章保持簡潔和有用,我們相信您發現這篇文章內容豐富。 如果您對 JVM 的組件或 Java 架構有任何疑問,您可以通過評論聯繫我們來向我們提問。
您可以在我們的博客上了解有關 Java 及其應用程序的更多信息。 我們有許多有用的指南和文章,涵蓋了這種強大的編程語言的各個方面。
如果您有興趣了解有關 Java、OOP 和全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,並提供 500 多個小時的嚴格培訓, 9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
