1晚唇、我認識中的 JAVA是怎么樣子的?
JAVA是一種面向對象的語言杨何,比較顯著的兩個特性是:
? ? 1.1酱塔、跨平臺能力(java是運行在JVM虛擬機上,不依賴于具體的平臺環(huán)境)
? ? 1.2危虱、垃圾收集器(無需程序員去關注內存分配與回收羊娃,跟去飯店吃飯一樣,不需要和家里一樣吃飯還得洗碗收拾餐具~)埃跷。
2蕊玷、JRE、JDK的全稱是什么弥雹?它兩有什么關系垃帅?
筆者在去找實習工作那會被面試官問及該問題:不記得當時是怎么忽悠過去的,應該沒答對~然后就沒有然后了剪勿,哈哈~
JRE的全名是 Java Runtime Environment ,也就是JAVA運行環(huán)境贸诚,包含了JVM和java類庫,以及一些模塊等。
JDK的全名是Java Development kit酱固,可以看作是JRE的一個超集械念,提供了更多工具,比如編譯器运悲、各種診斷工具等龄减。
3、JAVA的執(zhí)行過程是什么樣子的班眯?是解釋執(zhí)行嗎希停?
做位一個還未 聰明絕頂?shù)某绦騿T(也快了,最近老掉發(fā))署隘,這類比較抽象的問題對于我們這種show me the code類型的程序員來說宠能,是比較難以回答的上。所以如果面試這種問題一般都給他來個“全套”定踱。首先①程序員編寫JAVA類棍潘,②通過javac編譯成為字節(jié)碼(bytecode)也就是打包后的class文件,然后在運行時崖媚,通過java虛擬機(JVM)內嵌的解釋器將字節(jié)碼轉換成位最終的機器碼亦歉。看起來時解釋執(zhí)行的過程畅哑,貌似這么理解也沒毛病肴楷。
但是常見的JVM,比如我們大多數(shù)情況使用的oRACLE JDK提供的Hotspot JVM荠呐,都提供了JIT(Just-In-Time)編譯器赛蔫,也就是通常所說的動態(tài)編譯器,JIT能夠在運行時將熱點代碼編譯成機器碼泥张,這種情況下部分熱點代碼就屬于編譯執(zhí)行呵恢,而不是解釋執(zhí)行了