Java編譯程序將 Java源程序翻譯為JVM可執行代碼--字節碼。
Java將符號引用信息保留在字節碼中,由解釋器在運行過程中創立內存布局,
然後再通過查 表來確定壹個方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。
運行JVM字節碼的工作是由解釋器( java命令 )來完成的。
解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。
裝入代碼的工作由"類裝載器"(class loader)完成。
類裝載器負責裝入運行壹個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調用的類。
當類裝載器裝入壹個類時,該類被放 在自己的名字空間中。
除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。
在本臺計算機上的所有類都在同壹地址空間內,而所有從外 部引進的類,都有壹個自己獨立的名字空間。
這使得本地類通過***享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。
當裝入 了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這壹階段確定代碼的 內存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。