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