JAVA入门级教学之(JAVA程序的加载和运行)
JAVA程序的加載和運(yùn)行
多思考多動(dòng)腦(邊參考文章最后的示意圖,邊按步驟理解)
1.JAVA程序的加載和運(yùn)行包括兩個(gè)非常重要的階段:
- 編譯階段
- 運(yùn)行階段
2.我們先來了解一下什么是編譯階段:
-
首先,我們自己動(dòng)手敲的JAVA代碼(只要你安裝好JDK后在記事本都可以敲JAVA代碼),記事本的擴(kuò)展名改為xxx.java
-
然后,擴(kuò)展名由xxx.java–>xxx.class,這就是一次編譯,那為什么要變成xxx.class的文件呢?xxx.class文件是什么呢?
-
接來下我們帶著這個(gè)疑問去了解 什么是編譯
-
編譯階段主要的任務(wù)是檢查java源程序是否符合java語法要求:
-
符合java語法則能夠生成正常的字節(jié)碼文件(即xxx.class文件)
-
不符合java語法規(guī)則則無法生成字節(jié)碼文件
-
那么字節(jié)碼文件是什么呢?:
-
字節(jié)碼文件就是我們所說的.class文件
-
字節(jié)碼文件中不是純粹的二進(jìn)制代碼:
-
因此字節(jié)碼文件無法直接和操作系統(tǒng)交互(因?yàn)椴僮飨到y(tǒng)和純二進(jìn)制打交道)
3.編譯階段的過程的實(shí)現(xiàn):
-
程序員需要在硬盤的某個(gè)位置(位置隨意)新建一個(gè)xxx.java擴(kuò)展名的文件,
-
該文件就叫做java源文件,在源文件中編寫的代碼叫做java源代碼,源代碼不可以隨意編寫,需要符合java語法規(guī)則
-
程序員需要使用JDK中自帶的 javac.exe 命令進(jìn)行編譯,過程如下:
-
xxx.java–>javac.exe(在JDK中會(huì)調(diào)用javac.exe工具)–>xxx.class
-
javac.exe是一個(gè)java編譯器工具
-
javac在哪里用呢?怎么用?:
-
在DOS命令窗口中使用
-
在窗口命令行輸入 javac java源文件路徑
-
這樣系統(tǒng)就會(huì)調(diào)用JDK的javac.exe資源,將java源文件編譯成字節(jié)碼文件
-
此時(shí)在源文件同級路徑位置會(huì)出現(xiàn)一個(gè)xxx.class文件,表示編譯成功
-
下面是因?yàn)镴DK的路徑在D盤中,所以用命令D:跳轉(zhuǎn)盤符
-
一個(gè)java源程序可以編譯生成多個(gè)xxx.class文件:
-
A.class/B.class/C.class這個(gè)以后再說
字節(jié)碼文件是最終要執(zhí)行的文件,所以說class文件生成后,即使你刪除java源程序也不會(huì)影響java程序的執(zhí)行。
但是最好不要?jiǎng)h除源程序,因?yàn)樽止?jié)碼文件最終執(zhí)行效果可能不是我們想要的,那么這個(gè)時(shí)候只需要回頭重新修改源程序,然后將源程序重新編譯生成新的字節(jié)碼文件,得到新的效果。
- 編譯結(jié)束后,可以將xxx.class文件拷貝到不同的操作系統(tǒng)中運(yùn)行:
- 解釋:因?yàn)閤xx.class文件還要變成純二進(jìn)制代碼才可以和系統(tǒng)交互
- 所以你只需要拷貝xxx.class文件到相應(yīng)的位置,然后xxx.class文件通過JVM虛擬機(jī)和操作系統(tǒng)交互,剩下的事情就交給JVM
4.接下來我們了解 運(yùn)行階段:
-
JDK安裝之后,除了自帶的一個(gè)javac.exe負(fù)責(zé)編譯之外,還有另一個(gè)工具,叫做java.exe工具
-
java.exe工具負(fù)責(zé)運(yùn)行階段
-
java.exe在哪里用?怎么用?:
-
同樣,java.exe和javac.exe一樣在DOS命令窗口中使用
-
在窗口中輸入 java 類名
-
類名我們后面再解釋
-
例如:
硬盤上有一個(gè)A.class,那么就 輸入: java A
硬盤上有一個(gè)B.class,那么就 輸入: java B
硬盤上有一個(gè)C.class,那么就 輸入: java C
-
千萬要注意:不要寫成這樣: java A.class 【錯(cuò)誤示范】:
-
A、B、C指的是類名,記住就行
5.運(yùn)行階段的過程解析:
- 打開DOS命令窗口
- 輸入: java A 然后按下回車
- java.exe工具會(huì)啟動(dòng)java虛擬機(jī)(JVM),JVM會(huì)啟動(dòng) 類加載器ClassLoader
- 類加載器ClassLoader會(huì)去硬盤上搜索A.class文件,找到該文件則將該文件裝載到JVM中
- JVM將A.class字節(jié)碼文件解釋成二進(jìn)制1001000101這樣的數(shù)據(jù)
- 然后操作系統(tǒng)執(zhí)行二進(jìn)制和底層硬件平臺(tái)進(jìn)行交互
總結(jié):編寫好java源程序后,以xxx.java結(jié)尾修改擴(kuò)展名,打開DOS命令窗口,輸入 javac xxx.java 回車執(zhí)行后,在我們放java源程序的文件里多出來一個(gè)xxx.class文件 意味著編譯成功(這就是加載) 那么這個(gè)xxx.class文件可以拷貝到不同的系統(tǒng)中使用,為了讓xxx.class文件里的代碼變成純二進(jìn)制代碼 我們再次打開DOS命令窗口,輸入 java xxx 這時(shí)候就是java.exe工具啟動(dòng)JVM,JVM啟動(dòng)類加載器 類加載器找到剛剛編譯好的xxx.class文件 在JVM環(huán)境里 xxx.class文件變成純二進(jìn)制的代碼 這時(shí)候就可以和操作系統(tǒng)直接交互啦
這個(gè)章節(jié)涉及的內(nèi)容概念有點(diǎn)多,不必全部都了解,只需要了解字面意思的概念
后面我們會(huì)深入講解
參考來源:動(dòng)力節(jié)點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的JAVA入门级教学之(JAVA程序的加载和运行)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux安装python3.6 set
- 下一篇: JAVA入门级教学之(static静态代