我做了一些搜索,試圖瞭解java源文件是如何執行的。我無法找到一個清晰的答案,以JRE和JDK行話從頭到尾說明各個步驟。所以我寫了我從不同博客中瞭解的內容,但有些空白確實存在。對我的理解的更正是非常受歡迎的。標記Q1和Q2的兩個問題都低於2點在Java中,源代碼到字節碼的編譯究竟發生在哪裏?
寫HellowWorld.java文件
的javac HelloWowrld.java給HelloWorld.class的。這是它給出了一個字節碼的類文件。現在我可以把這個在Mac中生成的字節碼轉到Windows機器上,運行它應該可以正常工作。
Q1:現在編譯成字節碼,這真的是編譯還是解釋?
Q2:Javac必須是JDK和NOT JRE的一部分?JRE包含JVM和其他庫來創建運行時環境。 JVM(它本身是平臺相關的)執行字節碼到機器碼。即時編譯器實際上是JVM的一部分,它將字節碼的真正編譯部分作爲機器代碼,並在必要時加上緩存字節代碼。
- 垃圾收集包含在JRE中。
令人驚訝的是,編譯器是將源代碼編譯爲字節碼的編譯器。 – SJuan76
那麼碰巧是JVM的一部分的JIT編譯器是什麼?編譯是否將字節碼轉換爲機器碼正確? – eagertoLearn
這是另一個編譯器,你不會直接使用它,並不總是運行。編譯是從源代碼到字節碼,從字節碼到機器碼。但是你要執行的唯一的「java編譯器」是'javac'。 – SJuan76