面試官:服務器安裝 JDK 還是 JRE?可以只安裝 JRE 嗎?


前些日子有知友面試時被問到如題所示的問題,由於他之前沒有準備到這些最最基礎的知識,沒有考慮過這個問題,所以被問到時竟一臉萌幣,回答的不是很好。這道題主要考的是對 Java 基礎知識的瞭解,有些同學可能已經忘了。

其實很多 Java 程序員在寫了很多代碼後,你問他 jre 和 jdk 之間有什麼關係,jvm 又是什麼東西,很多人不知所云。

現在我們一起來分析下:

首先了解下這兩者的概念

JRE :英文名稱(Java Runtime Environment),我們叫它:Java 運行時環境。它主要包含兩個部分,jvm 的標準實現和 Java 的一些基本類庫。它相對於 jvm 來說,多出來的是一部分的 Java 類庫。

JDK :英文名稱(Java Development Kit),Java 開發工具包。jdk 是整個 Java 開發的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。

顯然,這兩者的關係是:包含關係。JDK 包含了 JRE

留心的同學可能會發現,我們的 jdk 安裝成功後,在 C:\Program Files\Java 目錄會是這樣的(這裏,我是裝的 jdk1.8 的版本)

而 jdk 的子目錄下也存在一個 jre

這兩個不同版本的 jre 相互之間有什麼聯繫嗎?

答案是:沒有聯繫。甚至準確的來說,它倆是一樣的,無論是用哪一個都是可以的。只是很多人習慣將會單獨安裝另一個 jre,雖然單獨安裝的 jre 也並沒有被使用,原因可能就是剛開始大家都不清楚 jdk 和 jre 之間的關係,所以就默認的都安裝上了。

在 jdk 的 bin 目錄下,基本上都是一些可執行文件,並且它們還不大。其實這些可執行文件只是外層的一層封裝而已,這樣的目的是避免輸入的命令過長。例如 javac.exe 內部調用的其實是 JDK 中 lib 目錄中的 tools.jar 中 com.sun.tools.javac.Main 類,也就是說這些工具只是入口而已。而實際上它們本身又都是由 Java 編寫的,所以在 jdk 目錄下的 jre 既提供了這些工具的運行時環境,也提供了我們編寫完成的 Java 程序的運行時環境。

所以,很明顯,jdk 是我們的開發工具包,它集成了 jre ,因此我們在安裝 jdk 的時候可以選擇不再安裝 jre 而直接使用 jdk 中的 jre 運行我們的 Java 程序。(但是大部分人都默認將兩個都裝上了)。但是如果你的電腦不是用來開發 Java 程序的,而僅僅是用來部署和運行 Java 程序的,那麼完全可以不用安裝 jdk,只需要安裝 jre 即可。


服務器上是否只安裝 JRE 就可以了?

另外一個問題,既然如此,那麼在服務器上是否只安裝 JRE 就可以了?

理論上是可以的,但是有前提條件。

服務器上只安裝 JRE 的前提

  • 發佈到服務器上時所有文件都是編譯好的文件,包括 JSP 文件
  • 後期不在服務器上直接修改(因爲導致修改後的文件未重新編譯)

如果部署的項目都是編譯後重新部署,不在服務器上直接修改的話是可以只安裝 JRE 的。

注意:如果存在未編譯的 Java 源文件,或者在服務器上修改源文件,服務器就需要安裝 JDK。

在服務器上安裝 JDK 的好處:

  • 可以編譯 java 文件,方便後期維護
  • 保證 JSP 文件修改後穩定運行

綜合考慮,爲避免以後這樣那樣的麻煩事發生,服務器上還是安裝 JDK 吧!畢竟項目後期維護纔是主要的事情。

有了以上的分析,相信面試官再問你這樣的問題你該知道怎麼回答了吧。

面向對象編程,爲什麼這個對象我總是 new 不出來

關注公衆號:「Java 知己」,教你 new 出上面這個對象,嘻嘻!

  • 發送「1024」,免費領取 30 本經典編程書籍。
  • 發送「Group」,與 10 萬程序員一起進步。
  • 發送「JavaEE 實戰」,領取《JavaEE 實戰》系列視頻教程。
  • 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章