虛擬機類加載機制
一、概述
代碼編譯的結果從本地機器碼轉變為字節碼,是存儲格式發展的一小步,卻是編程語言發展的一大步.
虛擬機把描述類的數據從class文件加載到內存,并對數據進行校驗,轉換解析和初始化,最終形成可以被虛擬機直接使用的java類型, 這就是虛擬機的類加載機制.
與那些在編譯時需要進行連接工作的語言不同, 在java語言里面,類型的加載,連接和初始化過程都是在程序運行期間完成的,這種策略雖然會令類加載時稍微增加一些性能開銷, 但是會為java應用程序提供高度的靈活性, java里天生可以動態擴展的語言特性就是依賴運行時期動態加載和動態連接這個特點實現的.例如, 如果編寫一個面向接口的應用程序,可以等到運行時再指定其實際的實現類; 用戶可以通過java預定義的和自定義類加載器, 讓一個本地的應用程序可以在運行時從網絡或其他地方加載一個二進制流作為程序代碼的一部分,這種組裝應用程序的方式目前已廣泛應用于java程序之中. 從最基礎的Applet,JSP到相對復雜的OSGI技術,都使用了java語言運行期類加載的特性.