了解ClassLoader(節選) 完整文章下載: http://www-900.ibm.com/developerWorks/education/java/j-classloader/j-classloader.zip
在流行的商業化編程語言中,Java 語言由于在 Java 虛擬機 (JVM) 上運行而顯得與眾不同。這意味著已編譯的程序是一種特殊的、獨立于平臺的格式,并非依賴于它們所運行的機器。在很大程度上,這種格式不同于傳統的可執行程序格式。
與 C 或 C++ 編寫的程序不同,Java 程序并不是一個可執行文件,而是由許多獨立的類文件組成,每一個文件對應于一個 Java 類。
此外,這些類文件并非立即全部都裝入內存,而是根據程序需要裝入內存。ClassLoader 是 JVM 中將類裝入內存的那部分。
而且,Java ClassLoader 就是用 Java 語言編寫的。這意味著創建您自己的 ClassLoader 非常容易,不必了解 JVM 的微小細節。
如果 JVM 已經有一個 ClassLoader,那么為什么還要編寫另一個呢?問得好。缺省的 ClassLoader 只知道如何從本地文件系統裝入類文件。不過這只適合于常規情況,即已全部編譯完 Java 程序,并且計算機處于等待狀態。
但 Java 語言最具新意的事就是 JVM 可以非常容易地從那些非本地硬盤或從網絡上獲取類。例如,瀏覽者可以使用定制的 ClassLoader 從 Web 站點裝入可執行內容。
有許多其它方式可以獲取類文件。除了簡單地從本地或網絡裝入文件以外,可以使用定制的 ClassLoader 完成以下任務:
*在執行非置信代碼之前,自動驗證數字簽名 *使用用戶提供的密碼透明地解密代碼 *動態地創建符合用戶特定需要的定制化構建類 *任何您認為可以生成 Java 字節碼的內容都可以集成到應用程序中。
|