java編譯代碼反譯
❶ java可以通過虛擬機把位元組碼變成本地機器語言嗎
Java編譯器並沒有把源代碼翻譯為目標機器的機器語言程序,而是翻譯成了位元組碼文件。位元組碼文件由Java虛擬機解釋運行。Java解釋器就是Java虛擬機。
Java位元組碼按照Java語言規范,統一了位元組順序等差異(大端還是小端?CISC處理器和其它的RISC處理器是不同的),對編譯器的實現細節也進行了具體規定。這樣就可以在虛擬機中執行了。
❷ 簡述JAVA程序的編輯編譯和運行過程
Java應用程序的開發周期包括編譯、下載、解釋和執行幾個部分。Java編譯程序將 Java源程序翻譯為JVM可執行代碼--位元組碼。Java將符號引用信息保留在位元組碼中,由解釋器在運行過程中創立內存布局,然後再通過查 表來確定一個方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。
運行JVM位元組碼的工作是由解釋器( java命令 )來完成的。解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由"類裝載器"(class loader)完成。類裝載器負責裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調用的類。當類裝載器裝入一個類時,該類被放 在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本台計算機上的所有類都在同一地址空間內,而所有從外 部引進的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入 了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這一階段確定代碼的 內存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。