? ? ? ? Java特性: 1 面向?qū)ο螅ǚ庋b,繼承,多態(tài)), 2 平臺無關性(JVM運行.class文件),語言(泛型,Lambda),類庫(集合,并發(fā),網(wǎng)絡,IO/NIO),JRE(Java運行環(huán)境,JVM,類庫),JDK(Java開發(fā)工具,包括JRE,javac,診斷工具)
????????Java平臺中有兩大核心:1. Java語言本身、JDK中所提供的核心類庫和相關工具。2. Java虛擬機以及其他包含的GC。
????????Java運行過程:1,Java源代碼經(jīng)過Javac編譯成.class文件。2,.class文件經(jīng)JVM解析或編譯運行。
????????Java虛擬機:Java語言具有跨平臺的特性,也正是因為虛擬機的存在。Java源文件被編譯成字節(jié)碼,被虛擬機加載后執(zhí)行。這里隱含的意思有兩層:1,大部分情況下,編程者只需要關心Java語言本身,而無需特意關心底層細節(jié)。包括對內(nèi)存的分配和回收,也全權交給了GC。2,對于虛擬機而言,只要是符合規(guī)范的字節(jié)碼,它們都能被加載執(zhí)行,當然,能正常運行的程序光滿足這點是不行的,程序本身需要保證在運行時不出現(xiàn)異常。所以,Scala、Kotlin、Jython等語言也可以跑在虛擬機上。
????????圍繞虛擬機的效率問題展開,將涉及到一些優(yōu)化技術,例如:JIT、AOT。因為如果虛擬機加載字節(jié)碼后,完全進行解釋執(zhí)行,這勢必會影響執(zhí)行效率。所以,對于這個運行環(huán)節(jié),虛擬機會進行一些優(yōu)化處理,例如JIT技術,會將某些運行特別頻繁的代碼編譯成機器碼。而AOT技術,是在運行前,通過工具直接將字節(jié)碼轉(zhuǎn)換為機器碼。


我是溫馭臣,一個java的開發(fā)學習者,以上是我的簡單總結,如果有缺陷,希望在評論區(qū)看到您的補充。