JAVA體系結構:JAVA設計語言,JAVA Class文件,JAVA API,JAVA虛擬機。java
1、java虛擬機:api
一、java虛擬機的主要任務是裝載class我呢間而且執行其中的字節碼。java虛擬機包含一個類裝載器,他能夠從程序和API中裝載class文件。緩存
JAVA API中只有程序執行時那些須要的類才能被裝載。字節碼由執行引擎來執行。網絡
Java虛擬機:一、一種簡單的執行引擎,是一次性解釋字節碼。二、執行引擎很快,消耗內存,在這種狀況下,第一次被執行的字節碼會被翻譯成本地機器代碼,多線程
編譯出的本地機器代碼會緩存,當方法調用的時候能夠重用。三、第三種執行引擎是自適應優化器。在這種方法裏,虛擬機開始的時候解釋字節碼,可是會監事運行中程序的優化
活動,而且記錄最頻繁的代碼段。只把最頻繁的代碼段翻譯成本地機器代碼。操作系統
二、當java虛擬機是由主機上的操做系統的軟件實現的時候,java程序經過調用本地方法和主機交互。java中有兩種方法,JAVA方法和本地方法。java方法編譯成字節碼,存儲在class文件中,本地方法是由其餘語言編寫的,編譯成和處理器相關的機器代碼。本地方法保存在動態連接庫中,格式是各個平臺有的。運行中的Java程序調用本地方法時,虛擬機裝載包含這個本地方法的動態庫,並調用這個方法。經過本地方法,java程序能夠直接訪問底層的操做系統的而資源。java本地接口(JNI)使得本地方法能夠在特定主機系統的任何一個java平臺實現上運行。然而java平臺供應商不必定必須支持JNI.線程
2、類裝載器的體系結構翻譯
1.類裝載器有兩種: 啓動類裝載器和用戶自定義的類的裝載器。啓動類裝載器是Java虛擬機實現的一部分。啓動類裝載器一般使用某種默認方式從本地磁盤中裝載類,包括Java API的類。啓動類裝載器也被稱爲原始類裝載、系統類裝載器或者默認裝載器。
Java應用程序可以在運行時安裝用戶定義的類裝載器,這種類裝載器可以使用自定義的方式來裝載類。
2.每一個類被裝載的時候,Java虛擬機都監視這個類,看它究竟是被啓動類裝載器仍是被用戶自定義類裝載器裝載。當被裝載的類引用了另一個類 時,虛擬機就會使用裝載第一個類的類裝載器 -->去裝載 被引用的類。即好比,虛擬機會使用一個特定類裝載器裝載了Volcano類,它也會使用這個類裝載器-->裝載Volcano類中所引用到的全部 類。
3.因爲Java虛擬機採用2所述的這種方式進行類的裝載,因此被裝載類 默認狀況下只能看到被同一個類裝載器裝載的別的類。 經過這種方法,Java的體系結構容許在一個Java應用程序中創建多個命名空間,運行時的java程序中的每個類裝載器都有它本身的命名空間。
4. 一個Java應用程序可以從同一個類 或者 多個類 中 實例化 多個用戶定義的 類裝載器。(這句話好好理解下子)而,被不一樣類裝載器裝載的類存放在不一樣的命名空間中,它們不能相互訪問,除非應用程序顯示容許這樣作。經過這種方法,就可以阻止惡意代碼獲取訪問和破壞善意代碼的權限。設計
3、java class文件
java class文件主要在平臺無關性和網絡移動性方面使得java更適應於網絡。在平臺無關性方面的任務是:爲java程序提供獨立於底層主機平臺的二進制形式的服務。除了平臺的無關性設計方面,java class文件設計的緊湊,能夠很快在網絡上傳送。java程序的動態連接和動態擴展,class文件在須要的時候才被下載。
4、java API
java API是一套運行庫的集合,他提供一套訪問知己系統資源的標準方法。java API上的class文件天生就與主機平臺密切相關。在一個平臺可以支持java程序以前,必須在這個平臺上特定的明確實現API的功能。爲訪問主機上的本地資源,java API調用了本地方法。java api爲底層主機提供了具備平臺無關性的標準接口的java程序。
5、java程序設計語言
面向對象、多線程、結構化錯誤處理、垃圾收集、動態連接、動態擴展。