【Java貓說】編譯器與虛擬機哪一個重要?

熟悉Java的朋友都知道虛擬機還有編譯器,那麼它們各自主要的功能是什麼?誰比較重要呢?讓咱們來了解一下這兩位美女的故事。java

虛擬機能夠說就是Java,她能讓程序運行起來。程序員

可是編譯器卻能產生文件,畢竟java是直譯語言,若是須要一邊運行一邊解譯純文字是不能運行得快速的,而咱們程序員也不可能直接寫二進制代碼給虛擬機,而須要編譯器幫咱們生成二進制文件。segmentfault

還有就是編譯器會報錯!Java是強類型語言,編譯器不容許變量保存類型的數據,這是很關鍵的類型安全性功能,編譯器會提早抓出問題。數組

但也不是全部問題都抓出來,虛擬機運行中依舊會遇到錯誤類型的數據塞進數組中,而不得不拋出的異常等等安全

而這些相似的問題,在運行中發生,實際上是爲了允許動態綁定的功能,Java能夠在執行期引用連程序員也沒有預期會碰到的類型,因此編譯器保留了一些運用性。編譯器的工做是要確保鐵定不能跑的東西不會過關。對象

虛擬機呢?好像這麼一說就沒什麼用了?其實否則,一些真正的Boss也是要虛擬機來處理的,好比存取權限的安全問題。get

編譯器做爲安全的第一線,能防止人們動不到不能夠碰的程序代碼與其餘類的重要數據。編譯器

而虛擬機也能確保不會有人在執行前修改二進制代碼虛擬機

.......編譯

.......

提及來,好像還有不少不少點能說起,那就等下次再聊吧!


本文已轉載我的技術公衆號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】Java基本概念二
下一篇推薦:【Java貓說】案例談面向對象

相關文章
相關標籤/搜索