Java一次编译,到处运行是如何实现的
Java一次編譯,到處運行是如何實現(xiàn)的
轉(zhuǎn)自:https://cloud.tencent.com/developer/article/1415194 (排版微調(diào))
JAVA編譯運行總覽
Java是一種高級語言,要讓計算機(jī)執(zhí)行你撰寫的Java程序,也得通過編譯程序的編譯。但是Java編譯程序并不直接將Java源代碼編譯為相依于計算機(jī)平臺的0、1序列,而是將其編譯為字節(jié)碼。
Java源代碼的擴(kuò)展名為.java,經(jīng)過編譯程序編譯之后生成擴(kuò)展名為.class的字節(jié)碼。如果想要執(zhí)行字節(jié)碼文件,目標(biāo)平臺必須要安裝JVM(java虛擬機(jī)),JVM會將字節(jié)碼翻譯為相依與平臺的計算機(jī)指令,即:0、1序列。但是一定要記著:不同平臺要安裝專屬該平臺的JVM。這就好比你講中文(.java),Java編譯程序幫你翻譯為英文(.class),這份英文文件到各個國家之后,再由當(dāng)?shù)乜吹枚⑽牡娜?JVM)翻譯為當(dāng)?shù)卣Z言(機(jī)器指令)。
所以JVM擔(dān)任的職責(zé)之一就是當(dāng)?shù)胤g員,將字節(jié)碼文件翻譯為當(dāng)時平臺看得懂的0、1序列,有了JVM,你的Java程序就達(dá)到了“編譯一次到處運行”的跨平臺目的。所以到這里。我們就知道了java程序跨平臺性好的根本原因就是java虛擬機(jī)JVM存在的原因。
JAVA編譯運行分解過程
第一步:Java源代碼——.CLASS文件字節(jié)碼,是java的第一次編譯。生成的這個.class文件就是可以到處運行的文件。
第二步:Java字節(jié)碼——到目標(biāo)機(jī)器代碼;執(zhí)行是由JVM執(zhí)行引擎來完成,JAVA的第二次編譯。
JVM
到處運行的隱含條件——這里的“到處”的前提是“裝有JVM”。
看完編譯過程在這里說“到處運行”就毫不費力了。因為第二次編譯就是在JVM中執(zhí)行的,也就是在任何一個裝有“JVM”的操作系統(tǒng)中完成的。JAVA提供了各種不同平臺上的虛擬機(jī)制,所以可以實現(xiàn)“到處”。
對JVM的重要認(rèn)知就是:
對Java程序而言,只認(rèn)識一種操作系統(tǒng),這個系統(tǒng)就是JVM,字節(jié)碼文件(擴(kuò)展名為.class的文檔)就是JVM的可執(zhí)行文件。
Java程序理想上,并不理會真正執(zhí)行哪個平臺,只要知道如何執(zhí)行于JVM就可以了,至于JVM實際上如何與底層平臺溝通,那是JVM自己的事。由于JVM實際上相當(dāng)于Java程序的操作系統(tǒng),JVM就負(fù)責(zé)了Java程序的各種資源管理。
JVM就是Java程序的操作系統(tǒng),JVM的可執(zhí)行文件就是.class文件。
Java虛擬機(jī)屏蔽了操作系統(tǒng)之間的差異,但是不同的系統(tǒng)使用的虛擬機(jī)不同。
總結(jié)
以上是生活随笔為你收集整理的Java一次编译,到处运行是如何实现的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2023.5.6是老爸的忌日我选这一天新
- 下一篇: 电机,行星齿轮组,片式离合器谁属于主动变