對(duì)于剛剛接觸和Java培訓(xùn)的學(xué)員來(lái)說(shuō),編寫(xiě)一個(gè)java程序是很困難的,因?yàn)閖ava的運(yùn)行原理是很復(fù)雜的,如果說(shuō)你沒(méi)有把這些東西屢清楚的話(huà),那么你想要要用java來(lái)開(kāi)發(fā)出一個(gè)程序的話(huà)是非常的難的。今天粵嵌科技就來(lái)和大家說(shuō)說(shuō)java培訓(xùn)開(kāi)發(fā)運(yùn)行的原理有哪些?
要了解java程序運(yùn)行原理,首先需要了解知道jre、jdk、jvm這三者是什么,他們之間又有什么聯(lián)系。
JRE(JavaRuntimeEnvironment,Java運(yùn)行環(huán)境),也就是Java平臺(tái)。所有的Java 程序都要在JRE下才能運(yùn)行。
JDK(Java Development Kit,java開(kāi)發(fā)工具包)是程序開(kāi)發(fā)者用來(lái)編譯、調(diào)試java程序用的開(kāi)發(fā)工具包。JDK工具也是Java程序,也需要JRE才能運(yùn)行。為了保持JDK的獨(dú)立性和完整性,在JDK的安裝過(guò)程中,JRE也是安裝的一部分。所以,在JDK的安裝目錄下有一個(gè)名為jre的目錄,用于存放JRE文件。
JVM(JavaVirtualMachine,Java虛擬機(jī))是JRE的一部分。它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java語(yǔ)言重要的特點(diǎn)就是跨平臺(tái)運(yùn)行。使用JVM就是為了支持與操作系統(tǒng)無(wú)關(guān),實(shí)現(xiàn)跨平臺(tái)。
Java培訓(xùn)開(kāi)發(fā)的運(yùn)行大致分為以下三步:編寫(xiě)源文件、編譯以及運(yùn)行。
1、編寫(xiě)源文件
編寫(xiě)的代碼,稱(chēng)為“源代碼”或“源碼”。一般情況下,會(huì)把源代碼保存到后綴名為.java的文本文件里,這樣的文件叫源文件。 為了方便,會(huì)保持文件名與類(lèi)的名字一致(包括大小寫(xiě))。
2、編譯
源文件是程序員編寫(xiě)的,能夠輕松識(shí)別每一行代碼的意思,但是,在計(jì)算機(jī)中,CPU只能識(shí)別二進(jìn)制指令。所以,現(xiàn)在要做的工作就是,需要在源文件和計(jì)算機(jī)指令之間進(jìn)行轉(zhuǎn)換。由于Java語(yǔ)言的結(jié)構(gòu)和特性,設(shè)計(jì)者們先將源文件轉(zhuǎn)換成一種特殊的二進(jìn)制文件,然后將這個(gè)二進(jìn)制文件交給Java運(yùn)行時(shí)環(huán)境(JRE)去執(zhí)行。轉(zhuǎn)換成二進(jìn)制文件的過(guò)程,叫做編譯(這個(gè)過(guò)程使用了 javac 命令),生成的二進(jìn)制文件,叫做字節(jié)碼文件(后綴名是 .class )。如Test.java經(jīng)過(guò)編譯就會(huì)生成Test.class。這個(gè)過(guò)程全部由Java編譯器自動(dòng)完成,不需要程序員進(jìn)行任何特殊操作。
3、運(yùn)行
Java培訓(xùn)程序的開(kāi)與運(yùn)行原理,并不是將字節(jié)碼文件(.class文件)簡(jiǎn)單的交給操作系統(tǒng)去執(zhí)行,那是因?yàn)椴煌牟僮飨到y(tǒng)中數(shù)據(jù)的大小、范圍和計(jì)算方式有很大不同,會(huì)導(dǎo)致同一段代碼在不同系統(tǒng)之間運(yùn)行效果差別很大,這不是設(shè)計(jì)者們想要看到的。