Java的運行原理

來源:互聯網
上載者:User

標籤:

轉自 java_andy的JAVA運行原理

在Java中引入了虛擬機器的概念,即在機器和編譯器之間加入了一層抽象的虛擬機器。這台虛擬機器在任何平台上都提供給編譯器一個的共同的介面。編譯器只需要面向虛擬機器,產生虛擬機器能夠理解的代碼,然後由解譯器來將虛擬機器代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機器理解的代碼叫做位元組碼(ByteCode)(class檔案的內容),它不面向任何特定的處理器,只面向虛擬機器。每一種平台的解譯器是不同的,但是實現的虛擬機器是相同的。Java來源程式經過編譯器編譯後變成位元組碼,位元組碼由虛擬機器解釋執行,虛擬機器將每一條要執行的位元組碼送給解譯器,解譯器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行。

 

跨平台:

話說,在北京,一般都是講北京話的,上海,一般都是將上海話,廣東,廣東話...
現有一公文發出,要全國執行,該當如何?——先統一翻譯成普通話。各地在將普通話版本翻譯成當地的方言。

這裡,北京、上海就是不同類型的機器windows,linux...
編譯(javac)就是將公文翻譯成普通話的過程,而編譯出的.class檔案,就是公文的普通話版本。
在執行的時候,各地的翻譯就是jvm,負責將.class轉換成本地能夠理解的方言來執行。

*.java→*.class→機器碼

java編譯器 (編譯) → 虛擬機器(解釋執行) →  解譯器(翻譯) → 機器碼

Java虛擬機器(JVM)

Java虛擬機器(JVM)是Java Virtual Machine的縮寫,它是一個虛構出來的電腦,是通過在實際的電腦上模擬類比各種電腦功能類比來實現的。

Java中,類載入器把一個類裝入JAVA虛擬機器需要經過三個步驟來完成:裝載連結初始化,其中連結又分來校正、準備、解析過程

裝載:尋找和匯入.class檔案

連結:檢查裝入.class檔案的正確性,然後,java虛擬機器為變數分配記憶體,設定預設值

初始化:把符號引用變成直接引用。。。

View Code

Java的運行原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.