1. 程式人生 > >java語言為什麽具有平臺無性

java語言為什麽具有平臺無性

under 機器 tro ++ bytecode 分配 固定 操作 驗證

  首先解釋一下什麽叫做平臺無關性:平臺無關性即對每種數據類型在不同的操作系統中都分配固定長度,例如,int類型數據總是占據32個位(4個字節),而C/C++卻不然。

  知道了平臺無關性後下面我們簡單說一下java為什麽能夠"Write Once,Run Anywhere"如下是java程序運行的過程:

    • 編譯
      將Java代碼翻譯成Java字節碼。

    • Java編譯器
      將Java源文件(.java)翻譯成Java字節碼文件(.class )。
      javac Welcome.java //將Java源代碼翻譯成Java字節碼,並且生成.class文件
      java Welcome //運行字節碼

    • JVM java虛擬機
      解釋Java字節符的程序。不是物理機器。
      所以Java字節碼可以在不同的硬件平臺和操作系統上運行,只要安裝了JVM(不同的操作系統對應不同的jvm)

    • 類加載器(class loader)
      將類的字節碼加載到內存中的程序。
      在執行一個Java程序時,JVM首先會用一個稱為類加載器的程序將類的字節碼加載到內存中。如果程序中使用了其他類,類加載程序會在需要它們之前動態地加載他們。當加載該類後,JVM使用一個成為字節碼驗證器(bytecode verifier)的程序來檢驗字節碼的合法性,確保字節碼不會違反Java的安全規範

    • 總的來說:每個操作系統對應的JVM會自動去彌補java程序在不同操作系統之間的“差異”,以達到“一致性”。

java語言為什麽具有平臺無性