1. 程式人生 > >Java基礎(一)——JVM、JRE、JDK、Javac等

Java基礎(一)——JVM、JRE、JDK、Javac等

Life is like a box of chocolates,you never konw what you're going to get.

在大學的時候已經學習過java,但是對java瞭解的越多越發現自己越來越不瞭解java。這有點像自以為擁有了整個天空的井底之蛙,跳出了水井,才發現自己乃滄海之一粟。可謂,學然後知不足。再者,溫故知新。鑑於以上兩個原因,我決定再次學習java語言。

一、JVM(Java Virtual Machine)

大家都知道Java有一個特性:“write once,run everywhere.”就是一次編譯,到處執行。這充分地體現了java語言有良好的跨平臺特性,怎樣理解這個特性呢?
程式從開發到執行一共要經過三個階段:第一個階段是編寫階段,即編寫原始碼。例如,我們編寫的以.java結尾的原始檔。第二個階段是編譯階段,編譯階段把程式語言翻譯成目標語言(二進位制程式碼——計算機可以直接執行),也就是把原始檔翻譯成可執行檔案,對應java中的.class檔案。這裡的“翻譯官”就是編譯器了,不同語言的“翻譯官”是不同的。第三個階段是執行、除錯階段了,執行、除錯是在一個特定的平臺上的,比如Windows、Doc、Linux等等。前面提到的編譯器的作用就是溝通源程式和程式的執行平臺。所以平臺不同,翻譯出來的結果就不同。結果不同就出現了相容性等各種問題。這個過程如下圖:
這裡寫圖片描述

二、JRE

在理解跨平臺和JVM之前,我們先來了解一下JRE(Java Runtime Environment)。JRE是SUN公司的產品,包括兩部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上執行、測試和傳輸應用程式的Java平臺。它包括Java虛擬機器(jvm)、Java核心類庫和支援檔案。它不包含開發工具(JDK)–編譯器、偵錯程式和其它工具。JRE需要輔助軟體–Java Plug-in–以便在瀏覽器中執行applet。
J2RE是Java2 Runtime Environment,即Java執行環境,只是強調其匹配Java2平臺,有時簡稱JRE。如果你只需要執行Java程式或Applet,下載並安裝它即可。

如果你要自行開發 Java軟體,請下載JDK(JRE和JDK的區別)。
這裡寫圖片描述

三、JDK

1. JDK(Java Development Kit) 是 Java 語言的軟體開發工具包(SDK)。

  • SE(J2SE),standard edition,標準版,是我們通常用的一個版本,從JDK 5.0開始,改名為Java SE。
  • EE(J2EE),enterprise edition,企業版,使用這種JDK開發J2EE應用程式,從JDK 5.0開始,改名為Java EE。
  • ME(J2ME),micro edition,主要用於移動裝置、嵌入式裝置上的java應用程式,從JDK 5.0開始,改名為Java ME。
    -沒有JDK的話,無法編譯Java程式,如果想只執行Java程式,要確保已安裝相應的JRE。

2. JDK包含的基本元件包括:

  • javac – 編譯器,將源程式轉成位元組碼
  • jar – 打包工具,將相關的類檔案打包成一個檔案
  • javadoc – 文件生成器,從原始碼註釋中提取文件
  • jdb – debugger,查錯工具
  • java – 執行編譯後的java程式(.class字尾的)
  • appletviewer:小程式瀏覽器,一種執行HTML檔案上的Java小程式的Java瀏覽器。
  • Javah:產生可以呼叫Java過程的C過程,或建立能被Java程式呼叫的C過程的標頭檔案。
  • Javap:Java反彙編器,顯示編譯類檔案中的可訪問功能和資料,同時顯示位元組程式碼含義。
  • Jconsole: Java進行系統除錯和監控的工具。

其中JDK中包含了JRE和編輯器(javac)。所以寫過Java程式的朋友們,只需要安裝JDK即可,不需要安裝JRE,就是這個原因了。

具備了以上只是我們就很好理解java程式的跨平臺特性了,java原始檔(.java檔案)經過java編譯器(javac)被編譯成位元組碼(.class檔案),這些直接是在JVM上執行的,所以只要平臺上安裝了J2RE,就可以執行Java程式。這裡JVM實際上是java執行平臺,但是這個平臺可以按照到其它平臺上,所以相當於其它平臺也可以執行Java程式。這樣就達到了“write once,run everywhere”的效果。關於JVM,我們暫時理解成一個平臺就可以了。不過對於一個好的java程式設計師,JVM的執行原理,我們也必須是知道的。

下面這張圖涵蓋了上面說有的知識:
這裡寫圖片描述