深入Java虛擬機器(1)——Java的體繫結構

來源:互聯網
上載者:User

深入Java虛擬機器(1)——Java的體繫結構
Java體繫結構

Java體繫結構包括四個獨立但相關的技術:

1.Java程式設計語言
2.Java class檔案格式
3.Java應用編程介面(API)
4.Java虛擬機器

當編寫並運行一個Java程式時,就同時使用了這四種技術。用Java程式設計語言編寫原始碼,把它編譯成Java class檔案,然後在java虛擬機器中運行class檔案。當編寫程式時,通過調用實現了Java應用編程介面(API)類中的方法來訪問系統中資源如io、網路記憶體等。當程式啟動並執行時候它可以調用class檔案中的實現的方法來滿足程式java api的調用。

一、Java虛擬機器

Java的面向網路的核心就是Java虛擬機器,它支援Java面向網路體繫結構三大支柱:平台無關性、安全性和網路移動性。

Java虛擬機器是一台抽象的電腦,其規範定義了每個Java虛擬機器都必須實現的特性,但是為每個特定實現都留下了很多選擇。

Java虛擬機器的主要任務是裝載class檔案並且執行其中的位元組碼。裝載類由類裝載器(class loader)完成,它可以從程式和API中裝載class檔案。JavaAPI中只有程式執行時需要的那些類才會被裝載。位元組碼由執行引擎來執行。

Java虛擬機器中的三種執行引擎

1、最簡單的執行引擎就是一次性解釋位元組碼

2、另一種執行引擎更快,但是也更消耗記憶體,叫做“即時編譯器”(just-in-time compiler)

3、第三種執行引擎是自適應最佳化器

第二種比第一種執行引擎效率上要高很多,執行速度也更快,但相對的缺點就是記憶體消耗很大。當記憶體消耗劇烈的時候,jvm就會出現異常。在這種情況下,即時編譯器第一次被執行的位元組碼會被編譯成本地機器代碼,編譯出的本地機器代碼也會被緩衝,當方法以後被調用時候可以重用。

第三種引擎,自適應最佳化器,在這種方法裡,虛擬機器開始的時候解釋位元組碼,但是會監視運行種的程式的活動,並且記錄下使用最頻繁的程式碼片段。程式運行時,虛擬機器只把那些活動最頻繁的代碼編譯成本地代碼,其他代碼由於使用的並不很頻繁,繼續保留位元組碼由虛擬機器繼續即時它們。一個自適應的最佳化器可以使用java虛擬機器種的80%-90%的時間裡執行被最佳化的本地代碼,而只需要編譯10%-20%對效能有影響的代碼。

Java虛擬機器與主機互動

當java虛擬機器是由主機作業系統上的軟體實現的時候,java程式通過調用本地方法native mehod 和主機進行互動。java中有兩種方法,java方法和本地方法。java方法是由java語言編寫,之後編譯成位元組碼,儲存在class檔案中的。本地方法是由其他語言比如c\c++\組合語言編寫的,編譯器和處理器的相關代碼。

Java虛擬機器上的類裝載器

在Java虛擬機器上,存在著多個類裝載器,一個java應用程式可以使用兩種類裝載器,啟動bootstrap類裝載器和使用者定義的類裝載器。啟動類裝載器是java虛擬機器實現的一部分。啟動裝載器通常使用預設的方式從本地磁碟中裝載類,包括java api類。啟動類裝載器也被叫做原始類裝載器、系統類別裝載器或者預設類裝載器。

二、Java class 檔案

Java class檔案是一個可以跨平台的二進位檔案,是通過java虛擬機器來實現編譯的。

平台無關性:通常情況下,一個平台上的二進位可執行檔不能在其他平台上工作。而Java class檔案是可以運行在任何支援Java虛擬機器制硬體平台和作業系統上的二進位檔案。

網路適應性:class檔案設計的緊湊,因此它們可以快速地在網路上傳送。其次由於Java程式是動態連結和動態擴充的,class檔案可以在需要的時候才下載。

三、Java API

Java API是運行庫的集合,它提供一套訪問主機系統資源的標準方法。Java API是相對安全的,它是保證平台無關性的前提,因為Java虛擬機器和Java API class檔案是任何Java平台都要實現的必要部分。在一個平台能夠支援Java程式以前,必須在這個特定平台上明確地實現API的功能。

四、Java程式設計語言

儘管Java是為網路而生的,但許多人使用Java寫程式還可能是因為想要利用Java程式設計語言的優勢:

1.物件導向
2.多線程
3.結構化錯誤處理
4.垃圾收集
5.動態串連
6.動態擴充

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.