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