Java169面試題----1:Java跨平臺原理

sunseeker.發表於2020-10-08

計算機到底能夠執行什麼東西?

  • 我們平時使用的語言例如c/c++/java都是高階語言,計算機並不能夠直接執行他們,換句話說計算機不能理解這些高階語言的意思,就比如一個只會中文的中國人聽不懂英語一樣。
  • 為什麼能夠讓計算機能夠執行這些高階語言編寫而成的程式,那麼就需要把它翻譯成計算機能夠理解的機器碼。計算機能夠執行機器碼。
  • 問題是不同計算機的機器碼不同這就給跨平臺的執行帶來很大的困難,再以前要在不同的計算機上執行就要每次都編譯成為不同的機器碼。這也是c/C++所使用的方法:C/C++語言都直接編譯成針對特定平臺機器碼。如果要跨平臺,需要使用相應的編譯器重新編譯。

Java

  • Java再發布的時候就有一個很響亮的口號:一次編譯,到處執行
  • Java源程式(.java)要先編譯成與平臺無關的位元組碼檔案(.class),然後位元組碼檔案再解釋成機器碼執行。解釋是通過Java虛擬機器來執行的。Java語言的執行要經過編譯和解釋兩個階段。
  • 位元組碼檔案不面向任何具體平臺,只面向虛擬機器。
  • Java虛擬機器是可執行Java位元組碼檔案的虛擬計算機。不同平臺的虛擬機器是不同的,但它們都提供了相同的介面。
  • Java語言具有一次編譯,到處執行的特點。就是說編譯後的.class可以跨平臺執行,前提是該平臺具有相應的Java虛
    擬機。但是效能比C/C++要低。
  • 但是Java的跨平臺原理決定了其效能沒有C/C++高
  • 總的來說,一個Java源程式只需要一次編譯成位元組碼檔案即可,只要是安裝了java虛擬機器的計算機就可以執行這個位元組碼並把位元組碼解釋成其對於計算機的機器碼。

相關文章