Java是一種框架語言。這意味著,一旦編寫了代碼,就可以在任何地方、任何具有必要環境的平臺上運行它。代碼通過Java虛擬機(JVM)執行。要運行代碼,JVM必須存在。對于每個平臺,都存在一個單獨的JVM。Java是一種獨立于平臺的語言。平臺獨立性并不意味著Java代碼可以在任何地方執行;相反,它指的是在任何環境中執行Java代碼的能力。想了解有關java更多詳細信息,建議參加Java培訓,通過系統全面的學習,可以快速提升自己。
Java是最流行的編程語言之一,提供獨特特性的能力是巨大響應的原因。盡管Java的語法與C++相似,但它提供了更多的功能。兩者都是面向對象的編程語言。
一個程序如何在JAVA中執行?
javac執行任何編寫的Java代碼。
l JAVA編譯器產生一個. class文件或字節碼,而不是機器本機代碼(與C編譯器不同)。
l 產生的字節碼不是機器可執行的,需要一個解釋器在計算機上運行。JVM充當這個解釋器,因此,它執行字節碼。
l 然后,軟件最終執行以獲得預期的結果。
使用C或C++時,編譯器創建依賴于操作系統的.exe文件(這些語言不是獨立于平臺的)。這當我們嘗試在另一個操作系統上運行這個.exe文件時,它將無法運行,因為它依賴于該操作系統并且與之不兼容。在java培訓中,有系統全面的理論知識和企業級實戰項目,可以讓你真正掌握java知識和技能,更好地進行項目開發。
既然我們已經討論了它的高級程序執行,讓它獨立于平臺。與其他編程語言不同,javac編譯器生成的字節碼可以在各種操作系統上運行。事實上,Java生成的字節碼只需要JVM。操作系統對它沒有影響。只要存在javac編譯器,你就可以在任何平臺上編寫和執行代碼。
Java代碼是如何執行的?
在Java中,編譯器將程序轉換成字節碼,字節碼不是可執行代碼。現在,任何其他平臺或操作系統都可以運行這個字節碼。當我們執行它的程序或文件時,我們獲得一個. class文件,這是一個不可執行的文件。我們需要一個虛擬機來執行一個. class文件。JVM無疑是平臺無關的。類似于它如何根據周圍環境而變化。例如,MAC和Linux與Windows有不同的JVM。它支持可移植性,因為它的代碼的可移植字節碼使它與平臺無關。
平臺獨立性是什么意思?
平臺是一種軟件或硬件,程序在其上有規律地運行。這種語言的平臺Java運行時環境是可用的。平臺獨立性是指程序獨立于系統的操作系統。它采用“一次寫入,隨處運行(WORA)”的方法。如果你正在考慮如何快速學習java,那么參加java培訓掌握更全面的知識和技能將是一個很好的開始。
編譯代碼
每次編寫代碼時,我們都遵循編程語言的語法,這通常是可讀的。包括一些單詞、變量名、短語、方法名等。所有這些都被視為人類可以閱讀和理解的文學。
因此,計算機運行編譯器將源代碼轉換為機器可讀代碼,也稱為機器語言。編譯器以某種格式創建機器級代碼,以便CPU可以容易地理解它并執行它而不出錯。
除非兩臺計算機運行在同一個操作系統上,否則當一種機器語言因操作系統而異時,我們無法在另一臺機器上運行在一臺機器上開發的代碼。很多開發者和程序員認為這是不可接受的。然而,Java簡化了事情,并包含了對此的修復。
JVM架構
JVM是Java編譯器的一個組件,它將.Java文件轉換為.class文件。當我們編譯Java代碼時,源代碼中的關鍵函數稱為JVM。
類加載器
它作為一個子系統連接到Java虛擬機,它加載.class文件,檢查異常,并且是少量運行時異常的原因。驗證后,它允許內存中存在的變量和方法,賦予數組和變量默認值等。此外,它運行代碼中的任何方法或靜態變量。如果你也打算從事java行業,可以參加java培訓來提升自己,有老師帶你快速入門,很快就能掌握java知識和技能。
類加載器被精心設計來處理這個任務。因此,當加載類時,Java運行時不一定需要知道文件及其系統。
Bootstrap類加載器、Application 類加載器和Extension加載器是JVM中的三種內置類加載器。簡單介紹一下這些類是如何工作的:
Bootstrap類加載器:使用類加載器加載Java庫。
Extension類加載器:將代碼加載到擴展目錄或系統屬性指定的任何其他目錄中。
Application 類加載器:類加載器加載任何Java.class.path找到的代碼,并最終將其映射到CLASSPATH環境變量。
JVM中的內存區域
JVM類/方法區域中的內存區域
它存儲的數據包括方法名、類名和變量名。它是一個類中所有方法和變量的集中資源。它的功能就像一個存儲器,保存完成任務所需的數據。它由計算機的所有線程共享。該執行將確定它是固定大小還是可擴展大小。對Java 感興趣的同學可以報名參加java培訓,有經驗豐富的專業講師指導教學,可以讓你快速掌握這門技術,節約時間,少走彎路。
堆
堆跟蹤其區域中保存的所有數據。它將數據保存在一個特定的量中,直到程序執行后才知道。它在整個計劃中都得到了利用。它用于分配動態內存。在堆區域中,開發了新項目。
JVM語言堆棧
當一個函數被執行時,它將當前數據保存在塊中,也稱為框架或堆棧框架,它維護局部變量,并大量參與線程管理。
PC注冊系統
當前正在運行的指令的地址存儲在那里。當有多個線程正在執行時,這是有益的。
本地方法
它跟蹤所使用的本地技術的所有細節。它可以訪問Java無法訪問的特定于系統的功能。這個項目的主要目標是通過內存級通信來提高系統性能。
執行引擎
執行引擎將運行字節碼,并釋放分配給任何未引用對象的內存。通過讀取流中的字節碼并逐行解釋,執行引擎中的解釋器將執行它。在java培訓中,有系統全面的理論知識和企業級實戰項目,可以讓你真正掌握java知識和技能,更好地進行項目開發。
它還具有一個有趣的特性,稱為JIT編譯器(Just In Time Compiler),它為函數創建本機可執行代碼,這樣如果有重復的函數調用,JVM就不必解釋它們兩次。結果,提高了執行性能。
本機方法接口
Java通過這個接口與其他語言編寫的程序交互,比如C/C++。互動是雙向的;程序本身或JVM可以相互調用。由于源代碼的系統特定應用,它具有有限的可移植性。它使得本機代碼(用C或C++編寫)與其他程序(用Java或其他語言編寫)的接口更加容易。此外,這也是Java平臺獨立性的來源。
本機方法庫
它跟蹤執行引擎可能需要的任何本地語言庫,它們被歸類為為特定架構創建的程序集合,這些文件是特定于平臺的。
我們已經知道了JVM的架構。對于相同的字節碼輸入,這些JVM的結果將是相同的,即使這個JVM對于不同的操作系統是不同的。參加java培訓,培訓課程實時更新,緊跟市場和企業需求,讓你掌握最新技術,走在市場前沿。
平臺無關和平臺相關
通過使用Java虛擬機,我們可以使字節碼在任何平臺上都是可理解的。因此,字節碼被認為是獨立于平臺的。另一方面,Java虛擬機被稱為平臺相關的,因為它因平臺而異。因為它不依賴于任何一個平臺,所以Java是平臺無關的。因此,Java是一種框架語言。
編譯和解釋在平臺無關性中扮演什么角色?
為了實現平臺獨立性,它結合了編譯和解釋。當一個程序被編譯成Java時,它被轉換成字節碼,通常被稱為. class文件,而不是機器碼。現在,這個字節碼通過它的特性將它與機器碼區分開來,因為它可以被移植到另一個平臺,但是Java不能。該字節碼可以在Java虛擬機上執行。
為什么Java不是完全平臺獨立的?
Java中重要的一點是JVM依賴于操作系統;因此,如果你使用的是Mac OS X,你的JVM將不同于使用Windows或其他操作系統的人。這一事實可以通過為你的特定計算機下載JVM來確認。這樣做時,你將看到與各種操作系統相對應的JVM選擇;你應該清楚地為你現在使用的操作系統選擇JVM。因此,我們可以得出這樣的結論:JVM是平臺相關的,這就是Java能夠變得“平臺無關”的原因。參加以實戰項目為主要教學方法的Java培訓,可以有效地縮短同企業具體用人需求之間的差距,在短時間內掌握java所需的技能,更好地找到工作。