介紹
JVM全稱Java Virtual Machine抡医,翻譯過來也就是Java虛擬機(jī)。
JVM的實(shí)際功能也是和翻譯一樣,類似于一臺(tái)虛擬操作系統(tǒng)忌傻,是通過在實(shí)際的計(jì)算機(jī)上模擬各種計(jì)算功能來實(shí)現(xiàn)的大脉。JVM有著自己完善的硬件架構(gòu),例如處理器水孩、堆棧镰矿、寄存器等,還具有相應(yīng)的指令系統(tǒng)俘种。
JVM是JRE(Java Runtime Environment)的一部分秤标,安裝了JRE其實(shí)也就是相當(dāng)于安裝了JVM,可以運(yùn)行Java程序了
作用
JVM在運(yùn)行時(shí)負(fù)責(zé)將Java程序的.class文件解釋成特定的機(jī)器碼進(jìn)行運(yùn)行宙刘。
跨平臺(tái)
通俗的說苍姜,JVM就像一個(gè)翻譯機(jī)器人。把Java語言編譯后的.class文件翻譯成系統(tǒng)能讀懂的機(jī)器碼悬包,按照每個(gè)程序員的想表達(dá)的意思衙猪,翻譯成系統(tǒng)能懂的一系列指令,讓系統(tǒng)實(shí)現(xiàn)程序員想要表達(dá)的功能玉罐。
當(dāng)然這個(gè)翻譯機(jī)器人并不是一對(duì)一翻譯屈嗤,那這樣就太low了,JVM針對(duì)很多主流平臺(tái)有著不同的解釋器吊输,意思就是JVM可以將Java語言通過各種不同的解釋器翻譯成各個(gè)平臺(tái)(windows饶号、linux等)能讀懂的語言。
所以這也讓Java程序有了跨平臺(tái)性季蚂,Java開發(fā)程序員只需要通過Java的語法編寫Java程序茫船,剩下的就是在各個(gè)平臺(tái)上下載安裝特定的JRE或者JDK就好了。
跨語言
其實(shí)說的更具體的是JVM讓JVM可識(shí)別的字節(jié)碼文件.class文件實(shí)現(xiàn)了跨平臺(tái)性扭屁。我們知道我們寫好的Java文件(.java文件)最終都會(huì)翻譯成.class算谈,那,如果別的語言也翻譯成了.class二進(jìn)制字節(jié)碼文件呢料滥? 是不是也可以在JVM里運(yùn)行然眼?答案是肯定的,但是不是所有的.class文件都能在JVM里運(yùn)行葵腹,JVM也有著自己的標(biāo)準(zhǔn)高每,只有遵循了這種標(biāo)準(zhǔn)的字節(jié)碼文件對(duì)于JVM來說才是合法的。
正是因?yàn)榭缙脚_(tái)践宴、跨語言的特性鲸匿,才造就了如今的Java生態(tài)圈,才有了這么多搬磚的Java程序員阻肩。