jvm基本常識(shí)
JVM基本常識(shí)
程序的執(zhí)行方式
主要有三種:靜態(tài)編譯執(zhí)行、動(dòng)態(tài)編譯執(zhí)行、動(dòng)態(tài)解釋執(zhí)行

字節(jié)碼和機(jī)器碼的區(qū)別
機(jī)器碼是電腦cpu直接讀取運(yùn)行的機(jī)器指令,運(yùn)行速度最快,但是非常晦澀難懂,編寫(xiě)起來(lái)也比較難。
字節(jié)碼是一種中間狀態(tài)(中間碼)的二進(jìn)制代碼(文件)。需要直譯器后才能成為機(jī)器碼
JDK、JRE、JVM的關(guān)系

Oracle JDK與OpenJDK
查看JDK版本

OpenJDK 的來(lái)歷
Java由SUN公司(Sun Microsystems, 發(fā)起于美國(guó)斯坦福大學(xué), SUN是Stanford University
Network的縮寫(xiě))發(fā)明,2006年SUN公司將Java開(kāi)源, 此時(shí)的JDK即為OpenJDK.
也就是說(shuō), OpenJDK是Java SE的開(kāi)源實(shí)現(xiàn), 它由SUN和Java社區(qū)提供支持,2009年Oracle收購(gòu)了
Sun公司, 自此Java的維護(hù)方之一的SUN也變成了Oracle .
大多數(shù)JDK都是在OpenJDK的基礎(chǔ)上編寫(xiě)實(shí)現(xiàn)的, 比如IBM J9, Azul Zulu, Azul Zing和Oracle JDK.
幾乎現(xiàn)有的所有JDK都派生自O(shè)penJDK, 它們之間不同的是許可證:

Oracle JDK的來(lái)歷
Oracle JDK之前被稱為SUN JDK, 這是在2009年Oracle收購(gòu)SUN公司之前, 收購(gòu)后被命名為Oracle JDK。
實(shí)際上, Oracle JDK是基于OpenJDK源代碼構(gòu)建的, 因此Oracle JDK和OpenJDK之間沒(méi)有重大的技術(shù)差異。
Oracle的項(xiàng)目發(fā)布經(jīng)理Joe Darcy在OSCON 2011 上對(duì)兩者關(guān)系的介紹也證實(shí)了OpenJDK 7和Oracle JDK 7在程序上是非常接近的, 兩者共用了大量相同的代碼
Oracle JDK與OpenJDK的區(qū)別

JVM和Java的關(guān)系

JVM的運(yùn)行模式
JVM有兩種運(yùn)行模式:Server模式與Client模式。
兩種模式的區(qū)別在于:
Client模式啟動(dòng)速度較快,Server模式啟動(dòng)較慢;
但是啟動(dòng)進(jìn)入穩(wěn)定期長(zhǎng)期運(yùn)行之后Server模式的程序運(yùn)行速度比Client要快很多。
因?yàn)镾erver模式啟動(dòng)的JVM采用的是重量級(jí)的虛擬機(jī),對(duì)程序采用了更多的優(yōu)化;
而Client模式啟動(dòng)的JVM采用的是輕量級(jí)的虛擬機(jī)。所以Server啟動(dòng)慢,但穩(wěn)定后速度比Client遠(yuǎn)遠(yuǎn)要快。
想要了解更多關(guān)于編程的知識(shí)可以點(diǎn)擊視頻了解一下: