java核心技術36問——談談你對java平臺的理解

       覺得自己畢業兩年了,期間也看了一些書,瞭解了一下java核心的知識點,但目前時隔久遠,早已忘記的差不多了。

這些天看了一些學習文件,看到前oracle首席工程師楊曉峯的核心技術36講,故寫博客記錄之。

     談談你對java平臺的理解?  這個問題應該是面試中經常會被提到問題。一般我們回答也不外乎:一次編譯,到處執行;垃圾回收等。雖然回答沒有錯,但是深入到具體的如何編譯如何執行,垃圾回收算法等等,可能就不真切了。這一講只是談了理解,所以算是淺藏輒止,瞭解一個大概。

第一講主要講了如下知識:

典型回答:

java本身是一種面向對象的語言,最顯著的特性有兩個方面,一是所謂的“書寫一次,到處運行”(write once , run anywhere),能夠非常容易地獲得跨平臺能力;另外就是垃圾收集(GC,Carbage Collection) ,java通過垃圾收集器(Carbage Collector) 回收分配內存,大部分情況下,程序員不需要自己操心內存的分配和回收。

我們日常會接觸到JRE(java runtime Environment) 或者JDK(java Development Kit) 。JRE,也就是java運行環境,包含了JVM和java類庫,以及一些模塊等。而JDK可以看做是JRE的一個超集,提供了更多工具,比如編譯器,各種診斷工具等。

對於“java是解釋執行”這句話,這個說法不太準確。我們開發的java的源代碼,首先通過Javac編譯成爲字節碼,然後在運行的時,通過java虛擬機(jvm)內嵌的解釋器將字節碼轉化成爲最終的機器碼。當時常見的jvm,比如我們大多數情況下使用的oracle jdk提供的hotspot jvm,都提供了jit(just-in-time) 編譯器,也就是通常所說的動態編譯器,jit能夠在運行的時候能夠將熱點代碼編譯成機器碼,這種情況下部分熱點代碼就屬於編譯執行,而不是解釋執行了。

 

結構如圖:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章