本文目錄一覽:
關於java的跨平台特性
java的確是一個跨平台語言,而且它跨平台不只是限於Windows系統,可能你不太了解其他的系統,java不僅可以運行在Windows上,還可以運行在Linux,Mac Os等類UNIX系統,或者是一些嵌入式系統,他的平台無關性表現在用它寫的程序不需要任何本地化代碼(native code),本地化代碼,在該平台的jre或者jdk已經封裝完畢了。他實現這樣的跨平台特性依靠於他特殊的機制,就是利用編譯器編譯為中間代碼(也就是以Java Bytecode,即字節碼形式保存的class文件),並且在各個平台上的JVM(Java虛擬機)的解釋器(可以理解為“翻譯官”的角色)進行進一步的解釋。因此其實java是走兩個工序的,“源代碼”-“字節碼”是一個工序,即編譯,他是具有跨平台性的;然後是”字節碼”-“機器語言”這一道工序,是把字節碼這種形式向機器解釋為機器能夠讀懂的機器碼形式,這道工序也是具有跨平台性的。
當然,可能java本身功能有限,所以它還提供了一個叫做JNI的東西,可以加載本地化代碼,支持動態鏈接數據庫(即dll)或者是類UNIX系統上的Service Object(即so),為了保證這時仍有一定的通用性,一般會根據運行時系統選擇不同的本地庫。
C語言本身是有多種版本,或者說是多種編譯器的,在許多平台上都可以獲得支持,但是這種支持的通用性有限,比如寫一個Windows上的程序,在Linux上不能正確編譯和運行。因為C語言等,會被各個平台適應的編譯器編譯為適應這個平台的版本,例如Windows下的二進制可執行文件(.exe格式),他在其他平台是無法執行的,因為他是針對Windows系統的,別的系統的解釋器不懂怎麼解釋這種“奇怪的語言”,因為這個解釋器只會“他自己”的“語言”和機器語言。而Java則是有自己的解釋器,因此可以代替該系統的解釋器。
java程序是跨平台的嗎
java程序是跨平台的
因為它有虛擬機(JVM),JAVA程序不是直接在電腦上運行的,是在虛擬機上進行的,每個系統平台都是有自己的虛擬機(JVM),所以JAVA語言能跨平台。
1, java代碼不是直接運行在CPU上,而是運行在java虛機(簡稱JVM)上的。
2,java是先把java文件編譯成二進制字節碼的class文件,jvm就解釋執行class文件。
3,就是因為java是運行在jvm上的,所以它的代碼就能不經修改,就能在不同平台的jvm上運行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)
假如用windows移植到UNIX,只需把java文件是UNIX的jvm上編譯成class文件,然後用jvm運行就可以了
如何理解JAVA是跨平台的?
直接在不同的平台上運行而不用重新編譯,這一特性使得java隨着web應用的普及而迅速普及起來。
實際上,編譯後的java代碼並不是傳統的二進制代碼(如windows下的.exe文件),而是java字節碼,這種字節碼文件是不能直接在操作系統上執行的。要想在一個操作系統上運行一個java程序必須有一個中間環節來負責將java字節碼解釋成二進制碼,這個中間環節就是java虛擬機(簡稱jvm)。由於目前大多數操作系統已經實現了jvm,所以java輕鬆實現跨平台性。
java可以跨平台的原因是什麼?
因為Java程序編譯之後的代碼不是能被硬件系統直接運行的代碼,而是一種“中間碼”——字節碼。然後不同的硬件平台上安裝有不同的Java虛擬機(JVM),由JVM來把字節碼再“翻譯”成所對應的硬件平台能夠執行的代碼。因此對於Java編程者來說,不需要考慮硬件平台是什麼。所以Java可以跨平台。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156543.html