閱讀本文約“2分鐘” 熟悉Java的朋友都知道虛擬機還有編譯器,那麼它們各自主要的功能是什麼?誰比較重要呢?讓我們來瞭解一下這兩位美女的故事。 虛擬機可以說就是Java,她能讓程式運行起來。 但是編譯器卻能產生文件,畢竟java是直譯語言,如果需要一邊運行一邊解譯純文字是不能運行得快速的,而我們程式 ...
閱讀本文約“2分鐘”
熟悉Java的朋友都知道虛擬機還有編譯器,那麼它們各自主要的功能是什麼?誰比較重要呢?讓我們來瞭解一下這兩位美女的故事。
虛擬機可以說就是Java,她能讓程式運行起來。
但是編譯器卻能產生文件,畢竟java是直譯語言,如果需要一邊運行一邊解譯純文字是不能運行得快速的,而我們程式員也不可能直接寫二進位代碼給虛擬機,而需要編譯器幫我們生成二進位文件。
還有就是編譯器會報錯!Java是強類型語言,編譯器不允許變數保存類型的數據,這是很關鍵的類型安全性功能,編譯器會提前抓出問題。
但也不是所有問題都抓出來,虛擬機運行中依舊會遇到錯誤類型的數據塞進數組中,而不得不拋出的異常等等
而這些類似的問題,在運行中發生,其實是為了容許動態綁定的功能,Java可以在執行期引用連程式員也沒有預期會碰到的類型,所以編譯器保留了一些運用性。編譯器的工作是要確保鐵定不能跑的東西不會過關。
虛擬機呢?好像這麼一說就沒什麼用了?其實不然,一些真正的Boss也是要虛擬機來處理的,比如存取許可權的安全問題。
編譯器作為安全的第一線,能防止人們動不到不可以碰的程式代碼與其他類的重要數據。
而虛擬機也能確保不會有人在執行前修改二進位代碼
.......
.......
說起來,好像還有很多很多點能提及,那就等下次再聊吧!