-
1 # 雪竹運維
-
2 # xcbeyond
對應Java而言,有一個很核心、重要的東西,就是Java虛擬機器(JVM),是他來完成對Java語言解釋,適用於不同的平臺,因此說Java是跨平臺的語言
-
3 # 阿邁達聊技術
所謂平臺無關性指的就是程式可以在任何平臺執行,而不需要改動程式本身。基於這個概念,java平臺無關性實現主要由一下幾個部分組成。
1、中間位元組碼檔案我們都知道java程式中的程式碼檔案最終都會被編譯成位元組碼檔案,即. class檔案。這個編譯工作可以透過javac命令來完成。平常開發中我們更多的是透過開發工具來完成的。假如我們用maven構建一個專案,我們可以在idea中直接 build jar或者build war。最終生成的檔案就是位元組碼檔案。這些位元組碼檔案是不能被作業系統識別的,作業系統只能識別0和1。那這些檔案靠誰識別呢?JVM。
2、JVMjava虛擬機器即jvm,是執行在作業系統之上的一個虛擬的編譯系統。它的作用就是將位元組碼檔案翻譯成作業系統可以識別的語言0和1。這就是我們為什麼學java,先要安裝jdk。jdk中包括了jvm。沒有jvm,java原始碼是無法編譯成位元組碼檔案的。不同作業系統我們需要安裝不同的jdk,不同平臺的jvm對外暴露的是同樣的介面,但是內部解釋0和1的過程是不一樣的,這就間接實現了跨平臺。我們平常寫程式碼就不用考慮不同平臺相容性的問題,jvm會幫你做,write once,run anywhere。鑑於此,我們也可以開發一種語言,只要能編譯成位元組碼檔案,就能借助jvm讓其執行在作業系統上,就像scala。~笑臉~
3、語言本身的規範這也是跨平臺一個重要的原因。Java的基本資料型別的值域和行為都是由它自己定義的。
不管是在那種平臺下執行,Java中的int都是32位二進位制表示有符號整數,而float則總是遵循IEEE754浮點標準的32位浮點數。在像C/C++這樣的語言中,基本資料型別int的值域是由它的佔位寬度決定的,而它的佔位寬度則由平臺決定的。這就是它不能跨平臺的一個原因了。
-
4 # 淺析架構
Java語言是平臺無關的,Java透過編譯成位元組碼是執行在JVM上的,而不是直接執行在不同的系統上。JVM是平臺相關的。
相當於在Java和平臺中間添加了一箇中間層來實現平臺無關性的。這也是計算機通用的解法,透過新增中間層來解決問題。這個其實設計模式的體現。
也正是JVM的強大,像scala、groovy這樣語言都是可以編譯成位元組碼檔案從而執行在JVM中實現平臺無關係
-
5 # 但求無Bug
Java是透過JVM是來實現平臺無關性的。首先Java是一門半編譯半解釋型語言。Java的原始碼需要用javac命令編譯成.class位元組碼檔案。.class位元組碼檔案並不是可執行檔案,他僅僅是類似一種編碼之後的檔案,它需要用JVM來解釋執行。
由於Java針對不同的平臺開發了不同的JVM,但是這些JVM都實現了同一套標準,也就是說,都可以解釋執行.class位元組碼檔案,從而實現了一次程式碼編寫就可以到處執行的目的。
當然,Java所謂的實現平臺無關性只是針對.class位元組碼檔案,而不是JVM。.class位元組碼檔案是跨平臺的,而JVM是不跨平臺的,這點尤其需要注意。
綜上所述,Java是透過JVM來實現平臺無關性。
回覆列表
對於Java的平臺無關性的支援是分佈在整個Java體系結構中的。其中扮演者重要的角色的有Java語言規範、Class檔案、Java虛擬機器等。
Java語言規範:
透過規定Java語言中基本資料型別的取值範圍和行為
Class檔案:
所有Java檔案要編譯成統一的Class檔案
Java虛擬機器:
透過Java虛擬機器將Class檔案轉成對應平臺的二進位制檔案等
Java的平臺無關性是建立在Java虛擬機器的平臺有關性基礎之上的,是因為Java虛擬機器遮蔽了底層作業系統和硬體的差異。