java底層的技術處理細節 – JAVA編程語言程序開發技術文章

 Java已經成為一個龐大而復雜的技術平臺,對於開發人員而言,要想更好的掌握Java技術,深入理解底層的技術處理細節必不可少。現在介紹下java的四個核心概念:
1.Java虛擬機
Java虛擬機的主要任務是裝在class文件並且執行其中的字節碼。Java虛擬機包含一個類裝載器,它可以從程序和 API中裝載class文件。Java API中隻有程序執行時需要的那些類才會被裝載。字節碼由執行引擎來執行。不同的Java虛擬機中,執行引擎可能實現得非常不同。在由軟件實現的虛擬機中,最簡單的執行引擎就是一次性解釋字節碼。
另一種執行引擎更快,但是也更消耗內存,叫做"即時編譯器(just-in-time compiler)"。在這種情況下,第一次被執行的字節碼會被編譯成本地機器代碼。編譯出的本地機器代碼會被緩存,當方法以後被調用的時候可以重用。
第三種執行引擎是自適應優化器。在這種方法裡,虛擬機開始的時候解釋字節碼,但是會監視運行中程序的活動,並且記錄下使用最頻繁的代碼段。程序運行的時候,虛擬機隻把那些活動最頻繁的代碼編譯成本地代碼,其他的代碼由於使用得不是很頻繁,繼續保留為字節碼-由虛擬機繼續解釋它們。
一個自適應的優化器可以使得Java虛擬機在80%~90%的時間裡執行被優化過的本地代碼,而隻需要編譯10%~20%的對性能有影響的代碼。
2.類裝載器的體系結構
一個Java應用程序可以使用兩種類裝載器:"啟動(bootstrap)"類裝載器和用戶定義的類裝載器。啟動類裝載器(這是系統中唯一的)是 Java虛擬機實現的一部分。啟動類裝載器通常使用某種默認方式從本地磁盤中裝載類,包括Java API類(啟動類裝載器也被稱為原始類裝載器、系統類裝載器或者默認類裝載器)。
Java應用程序能夠在運行時安裝用戶定義的類裝載器,這種類裝載器能夠使用自定義的方式來裝載類。例如,從網絡下載class文件。盡管啟動類裝載器是虛擬機實現的本質部分,而用戶定義的類裝載器不是,但用戶定義的類裝載器能夠用Java來編寫,能夠被編譯成class文件,能夠被虛擬機裝載,還能夠像其它對象一樣實例化。
3.Java class文件
Java class文件主要在平臺無關性和網絡移動性方面使Java更適合網絡。它在平臺無關性方面的任務是:為Java程序提供獨立於底層主機平臺的二進制形式的服務。這種途徑途徑打破瞭C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬件平臺和操作系統的二進制文件。
通常情況下,一個平臺上的二進制可執行文件不能在其他平臺上工作。而Java class文件時可以運行在任何支持Java虛擬機的硬件平臺和操作系統上的二進制文件。
4.Java API
Java API通過支持平臺無關性和安全性,使得Java適應於網絡應用。Java API是運行庫的集合,它提供瞭一套訪問主機系統資源的標準方法。運行Java程序時,虛擬機裝載程序的class文件所使用的Java API class文件。所有被裝載的class文件(包括從應用程序中和從Java API中提取的)和所有已經裝載的動態庫(包含本地方法)共同組成瞭在Java虛擬機上運行的整個程序。
希望通過本文的介紹,能夠給你帶來幫助。

本文出自“燈下漫筆”

發佈留言