1: Java體系結構


Java體系結構

Java技術的核心就是Java虛擬機--所有Java程序都在其上運行.

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

1.Java程序設計語言
2.Java class文件格式
3.Java應用編程接口(API)
4.Java虛擬機

Java虛擬機

java的面向網絡的核心就是Java虛擬機,它支持Java面向網絡體系結構三大支柱:平台無關性、安全性和網絡移動性

Java虛擬機是一台抽象的計算機,其規范定義了每個Java虛擬機都必須實現的特性,但是為每個特定實現都留下了很多選擇.

Java虛擬機的主要任務是裝載class文件並且執行其中的字節碼。裝載類由類裝載器(class loader)完成,它可以從程序和API中裝載class文件。字節碼由執行引擎來執行

不同的Java虛擬機中,執行引擎可能實現得非常不同。

1.在由軟件實現的虛擬機中,最簡單的執行引擎就是一次性解釋字節碼。
2.即時編譯,第一次執行的字節碼會被編譯成本地機器代碼,編譯出的本地機器代碼會被緩存,當方法以后被調用的時候可以重用。
3.自適應優化器,虛擬機開始的時候解釋字節碼,但是會監視運行中程序的活動,並且記錄下使用最頻繁的代碼段。程序運行的時候,虛擬機只是把那些活動最頻繁的代碼編譯成本地代碼,其他的代碼由於使用得並不很頻繁,繼續保留為字節碼,由虛擬機繼續解釋它們.

所以有時候Java虛擬機雖然被稱為Java解釋器.然而,考慮到執行字節碼的方式可能是不同的,可能會是一種誤導."Java解釋器"只表示是"Java虛擬機",但並沒有任何執行技術的含義。

Java中有兩種方法:Java方法和本地方法

本地方法:Java程序可以通過一個本地方法接口(Java Native Interface,JNI)裝載包含這個本地方法的動態庫,並調用這個方法.一旦調用了本地方法,即你的Java程序就失去了平台無關的特性並且和特定的Java平台實現相關了.因為你調用的本地方法可能在其它平台上無法實現或者根本沒有,而且其他Java平台的實現或許根本就不支持JNI調用,那么這時候你的Java程序或許只能夠在特定的平台上運行.

Java方法:是由Java語言編寫並編譯成字節碼,存儲在class文件中,由Java虛擬機執行.雖然最終還是通過Java虛擬機平台調用本地方法的實現來完成程序的功能,但是這些Java程序中所用的API或者方法,都是能夠被所有的Java平台供應商所實現,因為這些API或者方法的實現都是包含在虛擬機規范中的.所以只要你的Java程序沒有手動通過JNI調用過本地方法,那么你的程序都是平台無關的.

類裝載器:啟動類裝載器和用戶自定義類裝載器

啟動類裝載器是系統中惟一的,是Java虛擬機實現的一部分.
自定義類裝載器能夠在Java應用程序運行時進行動態安裝的

每一個類被裝載的時候,Java虛擬機都監視這個類,看它到底是被啟動類裝載器還是被用戶類裝載器裝載。當被裝載的類引用了另外一個類時,虛擬機就會使用裝載第一個類的類裝載器裝載被引用的類。

由於Java虛擬機采取這種方式時行類的裝載,所以被裝載的類默認情況下只能看到被同一個類裝載器裝載的別的類。通過這種方法,Java的體系結構允許在一個Java應用程序中建立多個命名空間.運行時的Java程序中的每一個類裝載器都有它自己的命名空間。這就能夠限制阻止不同來源的代碼之間的相互訪問,有效地提高程序的安全性

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.動態擴展


這些優勢能在極大程度上提高程序員的效率,增強程序的健壯性,與老的程序設計技術(c/c++)相比,具有過得去的性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM