《深入Java虛擬機器 第二版》之第1章 Java體系結構介紹
1、Java技術的核心就是“Java虛擬機器”。
2、Java體系結構四個獨立的技術:
·Java程式設計語言;
·Java class檔案格式;
·Java應用程式設計介面(API);
·Java虛擬機器;
3、編寫並執行一個Java程式,對四種技術的體驗:
·用Java程式語言編寫原始碼;
·原始碼編譯成Java class檔案;
·在Java虛擬機器中執行class檔案;
·編寫程式時,通過呼叫實現JavaAPI類中的方法來訪問系統資源;
·程式執行時,通過呼叫class檔案中實現JavaAPI的方法來滿足程式的JavaAPI呼叫;
4、Java虛擬機器和JavaAPI一起組成了一個Java平臺,被稱為Java執行時系統(JRE)。
5、Java的面向網路的核心是Java虛擬機器,支援Java面向網路體系結構三大支柱的所有方面:平臺無關性、安全性和網路移動性。
6、Java虛擬機器的主要任務是裝載class檔案並執行其中的位元組碼。
7、Java詢價包含一個類裝載器ClassLoader,可以從程式和API中裝載class檔案,JavaAPI中只有程式執行時需要的那些類才會被裝載。
8、位元組碼由執行引擎來執行。不同的Java虛擬機器中,執行引擎可能實現得不同。
9、執行引擎大體分為四種:
·一次性解釋位元組碼(最簡單的一種);
·即使編譯器。第一次被執行的位元組碼會被編譯成本地機器碼,編譯出的本地機器碼會被快取,當方法以後被呼叫時可以重用(執行引擎更快,但更消耗記憶體);
·自適應優化器。虛擬機器開始時解釋位元組碼,但是會監視執行中程式的活動,並且記錄下使用最頻繁的程式碼段,程式執行時,虛擬機器只把那些活動最頻繁的程式碼編譯成原生代碼,其他的程式碼由於使用不頻繁,繼續保留為位元組碼有虛擬機器繼續解釋;
·虛擬機器白硬體晶片構成,內嵌在晶片裡,用本地方法執行Java位元組碼;
10、Java中有兩種方法:Java方法和本地方法。執行中的Java程式呼叫本地方法時,虛擬機器裝載包含這個本地方法的動態庫,並呼叫這個方法。
11、Java方法和本地方法的區別:
Java方法:Java方法與平臺無關,由Java語言編寫,編譯成位元組碼,儲存在class檔案中。
本地方法:本地方法儲存在動態連線庫中,格式是各個平臺專有的,由其他語言編寫,編譯成和處理器相關的機器程式碼。
12、本地方法(JNI)是聯絡Java程式和底層主機作業系統的連線方法。
13、一個Java應用程式可以使用兩種類裝載器:“啟動”(bootstrap)類裝載器和使用者定義的類裝載器。
14、啟動類裝載器(系統類裝載器)是Java虛擬機器的一部分,通常使用某種方式從本地磁碟中裝載類,包括JavaAPI的類。
15、使用者定義的類裝載器(自定義類裝載器)能夠用Java編寫,能夠被編譯為class檔案,被Java虛擬機器裝載,還能像其他物件一樣例項化。
16、Java class檔案在平臺無關性方面的任務是:為Java程式提供獨立於底層主機平臺的二進位制形式的服務。
17、Java class檔案是可以執行在任何支援Java虛擬機器的硬體平臺和作業系統上的二進位制檔案。
18、JavaAPI是執行庫的集合,它提供一套訪問主機系統資源的標準方法。
19、JavaAPI的方法進行任何潛在危險的操作(比如進行本地磁碟寫操作)之前,都會通過查詢安全管理器檢驗是否得到授權。
20、安全管理器是一個為應用程式提供自定義安全策略的特殊物件。(安全管理器能夠禁止對本地磁碟的訪問)
21、1.2版本後,安全管理器的工作被訪問控制器所取代,訪問控制器是一個類,該類用來執行棧檢驗,以決定是否准許某種操作(考慮向下相容問題,安全管理器在Java1.2版本中仍然存在)。