java是如何實現跨平台的
JVM是一個java虛擬機,所謂的java虛擬機就是和普通的虛擬機一樣,擁有自己的CPU,RAM之類的。我們所使用的操作系統是Windows的操作系統,Windows操作系統支持的可執行文件是EXE文件,也就是說在Windows的操作系統上只有EXE的文件是可以直接被操作系統解釋為底層機器語言並進行運行的。而java虛擬機可以支持的是.class的可執行文件,在java的虛擬機中遇到.class的文件就可以直接翻譯成java虛擬機所能是別的底層機器語言並進行執行。這就是JVM的機制,正是因為java的這種機制才實現了java的跨平台,在不同的平台上安裝能夠在相應平台上運行的虛擬機,然後在java虛擬機中運行java的源程序,「一次編譯,多次執行」就此實現了。
所以java的跨平台是離不開虛擬機的支持的。虛擬機充當著java源程序和操作系統之間的中間,不同的操作系統只需要尋找相應的中介就可以實現在不同的操作系統上運行。而java的編譯只是吧.java文件編譯為.class位元組碼文件而已,然後把位元組碼交給虛擬機去執行。
虛擬機在執行的時候是讀一句位元組碼文件人後解釋一句給操作系統聽,這就是為什麼java是解釋型的語言。
所謂的編譯型的語言是指這種語言被編譯之後生成的是可以直接供操作系統執行的010101文件,像C,C++都是編譯型的,java因為中間有JVM這么個東西所以是解釋型的。
㈡ 5. Java的跨平台特性是如何實現的 6. 解釋下什麼是變數的作用域
一、跨平台的實現:首先,我們編譯好的程序文件是以.java後綴保存的,而我們編譯.java文件完成時,編譯器會幫我們生成一個標準的.class位元組碼文件,JVM會運行該文件。JVM也是一個軟體,而不同的系統平台JVM是不同的,但是都能執行標準的.class位元組碼文件,這樣就實現了java的跨平台。
二、作用域:<bean id="date" class="java.util.Date" scope=""/>
在spring配置文件中,bean標簽有一個屬性叫scope即作用域,指的是每次調用getBean(「date」,Date.class)方法時,會創建幾個(Date)對象,默認只會創建一個即scope="singleton",若scope="prototype"(原型),則每次調用getBean(「date」,Date.class)方法時會創建不同的對象。
㈢ java的跨平台工作原理
首先我們要理解什麼是跨平台,所謂的跨平台就是JAVA寫的一份代碼可以在任意的操作系統平台上運行。
為什麼跨平台會成為一個問題呢?因為每一個操作系統平台支持不同的指令集我們所寫的代碼經過編譯之後只能適用於一個平台,換一個平台就不支持了。而JAVA完美的解決了這個問題。
Java的一大特色就是「write once, run anywhere」即「一次編譯,到處運行」。就是說你不用專門為每個平台寫一份代碼,你寫的Java程序在任何平台都能跑起來。
它的實現原理是在系統層面上又增加了一層虛擬機(Java Virtual Machine,簡稱JVM),且為每個平台都定製了對應的虛擬機。然後Java程序是在虛擬機上跑的,因此平台無關。
Java的運行流程是:程序員寫了源代碼(Source Code,.java後綴,跨平台),然後經過編譯器編譯成位元組碼(Byte Code,.class後綴,二進制文件),位元組碼是所有虛擬機都能理解的中間文件。然後交給虛擬機(每個平台都有對應的虛擬機)去運行。
所以對「write once, run anywhere」更准確的理解是,「一次編譯,到處裝虛擬機,所以到處運行」。
整個流程如下圖所示。
希望對您有所幫助!~