日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

jdk和jre的區別,你真的懂嗎?

 

大家肯定在安裝JDK的時候會有選擇是否安裝單獨的jre,一般都會一起安裝,我也建議大家這樣做。因為這樣更能幫助大家弄清楚它們的區別:

Jre 是JAVA runtime environment, 是java程序的運行環境。既然是運行,當然要包含jvm,也就是大家熟悉的虛擬機啦,還有所有java類庫的class文件,都在lib目錄下打包成了jar。大家可以自己驗證。至于在windows上的虛擬機是哪個文件呢?學過MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一個jvm.dll呢?那就是虛擬機。

Jdk 是java development kit,是java的開發工具包,里面包含了各種類庫和工具。當然也包括了另外一個Jre. 那么為什么要包括另外一個Jre呢?而且jdk/jre/bin同時有client和server兩個文件夾下都包含一個jvm.dll。說明是有兩個虛擬機的。這一點不知道大家是否注意到了呢?

相信大家都知道jdk的bin下有各種java程序需要用到的命令,與jre的bin目錄最明顯的區別就是jdk下才有javac,這一點很好理解,因為 jre只是一個運行環境而已。與開發無關,正因為如此,具備開發功能的jdk自己的jre下才會同時有client性質的jvm和server性質的 jvm, 而僅僅作為運行環境的jre下只需要client性質的jvm.dll就夠了。

記得在環境變量path中設置jdk/bin路徑麼?這應該是大家學習Java的第一步吧,老師會告訴大家不設置的話javac和java是用不了的。確實jdk/bin目錄下包含了所有的命令。可是有沒有人想過我們用的java命令并不是 jdk/bin目錄下的而是jre/bin目錄下的呢?不信可以做一個實驗,大家可以把jdk/bin目錄下的java.exe剪切到別的地方再運行 java程序,發現了什么?一切OK!

那么有人會問了?我明明沒有設置jre/bin目錄到環境變量中啊?

試想一下如果java為了提供給大多數人使用,他們是不需要jdk做開發的,只需要jre能讓java程序跑起來就可以了,那么每個客戶還需要手動去設置環境變量多麻煩啊?所以安裝jre的時候安裝程序自動幫你把jre的java.exe添加到了系統變量中,驗證的方法很簡單,大家看到了系統環境變量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”這樣的配置,那么再去Windows/system32下面去看看吧,發現了什么?有一個java.exe。

如果強行能夠把jdk/bin挪到system32變量前面,當然也可以迫使使用jdk/jre里面的java,不過除非有必要,我不建議大家這么做。使用單獨的jre跑java程序也算是客戶環境下的一種測試。

jdk和jre的區別,你真的懂嗎?

 

通俗點來說: jdk是java的開發包,其中包括jre;jre僅僅是java的運行時環境;而JDK包括了同版本的JRE,此外還包括有編譯器和其它工具

JDK是java開發工具包(java Development Kit)的縮寫。它是一種構建在java平臺上發布的應用程序、Apple和組件的開發環境。JDK是一切java應用程序的基礎,所有的java應用程序是構建在這個之上的。它是一組API,也可以說是一些java Class。要成為一個Java程序員,JDK是必不可少的最基本的工具。

JRE是Java運行環境(Java Runtime Enviroment)的縮寫。它基本上就和Java虛擬機是同一個概念。一般來說,在談論一個具體的產品的時候,可以說“JRE”,而說到理論中的一個模型的時候,我們常用的是“Java虛擬機”。要使用Java程序,JRE是必不可少的環境。

如果機子里安裝了多個版本的jdk,如下:

BEA Weblogic Server 7.0 自帶一套 JDK1.3.1_02

下載了一套最新的JDK1.4.1_02

JBuilder9自帶一套JKD1.4.1_02

Oracle8.1.7自帶一套JRE1.1.7

Ration Rose自帶一套JDK1.3

DreamWeaver自帶一套JDK1.3

6套JRE,每套JRE都被各自安裝到不同的目錄,不會互相影響。當在控制臺執行java.exe,操作系統尋找JRE的方式如下:

先找當前目錄下有沒有JRE

再找父目錄下有沒有JRE

接著在PATH路徑中找JRE(一般運行時從path中查找,按照path設置前后順序,以前面為準)

注冊表HKEY_LOCAL_macHINESOFTWAREJavaSoftJava Runtime Environment 查看CurrentVersion的鍵值指向哪個JRE(一般XP下是這個:C:Program FilesJavajre6)

最常用的是在PATH路徑中找JRE,一般情況下,自己的程序運行之前都會先在批處理文件里面臨時設置PATH,把自己用的JRE放到PATH路徑最前面,所以肯定會運行自己帶的JRE,不會造成版本混亂。

JDK就是Java Development Kit.簡單的說JDK是面向開發人員使用的SDK,它提供了Java的開發環境和運行環境。SDK是Software Development Kit 一般指軟件開發包,可以包括函數庫、編譯程序等。

JRE是Java Runtime Enviroment是指Java的運行環境,是面向Java程序的使用者,而不是開發者。

如果安裝了JDK,會發同你的電腦有兩套JRE,一套位于 jre 另外一套位于 C:Program FilesJavajre1.5.0_15 目錄下,后面這套比前面那套少了Server端的Java虛擬機,不過直接將前面那套的Server端Java虛擬機復制過來就行了。而且在安裝JDK可以選擇是否安裝這個位于 C:Program FilesJava 目錄下的JRE。如果你只安裝JRE,而不是JDK,那么只會在 C:Program FilesJava 目錄下安裝唯一的一套JRE。

JRE的地位就象一臺PC機一樣,我們寫好的Win32應用程序需要操作系統幫我們運行,同樣的,我們編寫的Java程序也必須要JRE才能運行。所以當你裝完JDK后,如果分別在硬盤上的兩個不同地方安裝了兩套JRE,那么你可以想象你的電腦有兩臺虛擬的Java PC機,都具有運行Java程序的功能。所以我們可以說,只要你的電腦安裝了JRE,就可以正確運行Java應用程序。

1、為什么Sun要讓JDK安裝兩套相同的JRE?

這是因為JDK里面有很多用Java所編寫的開發工具(如javac.exe、jar.exe等),而且都放置在 libtools.jar 里。從下面例子可以看出,先將tools.jar改名為tools1.jar,然后運行javac.exe,顯示如下結果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 這個意思是說,你輸入javac.exe與輸入 java -cp c:jdklibtools.jar com.sun.tools.javac.Main 是一樣的,會得到相同的結果。從這里我們可以證明javac.exe只是一個包裝器(Wrapper),而制作的目的是為了讓開發者免于輸入太長的指命。而且可以發現lib目錄下的程序都很小,不大于2 9K,從這里我們可以得出一個結論。就是JDK里的工具幾乎是用Java所編寫,所以也是Java應用程序,因此要使用JDK所附的工具來開發Java程序,也必須要自行附一套JRE才行,所以位于C:Program FilesJava目錄下的那套JRE就是用來運行一般Java程序用的。

2、如果一臺電腦安裝兩套以上的JRE,誰來決定呢?

這個重大任務就落在java.exe身上。Java.exe的工作就是找到合適的JRE來運行Java程序。 Java.exe依照底下的順序來查找JRE:自己的目錄下有沒有JRE;父目錄有沒有JRE;查詢注冊表: [HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment] 所以java.exe的運行結果與你的電腦里面哪個JRE被執行有很大的關系。

ADD:(小結)

1.JVM -- java virtual machineJVM就是我們常說的java虛擬機,它是整個java實現跨平臺的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行,也就是說class并不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。

2.JRE -- java runtime environmentJRE是指java運行環境。光有JVM還不能成class的執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。在JDK的安裝目錄里你可以找到jre目錄,里面有兩個文件夾bin和lib,在這里可以認為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。所以,在你寫完java程序編譯成.class之后,你可以把這個.class文件和jre一起打包發給朋友,這樣你的朋友就可以運行你寫程序了。(jre里有運行.class的java.exe)

3.JDK -- java development kitJDK是java開發工具包,基本上每個學java的人都會先在機器上裝一個JDK,那他都包含哪幾部分呢?讓我們看一下JDK的安裝目錄。在目錄下面有六個文件夾、一個src類庫源碼壓縮包、和其他幾個聲明文件。其中,真正在運行java時起作用的是以下四個文件夾:bin、include、lib、 jre。現在我們可以看出這樣一個關系,JDK包含JRE,而JRE包含JVM。bin:最主要的是編譯器(javac.exe)include:java和JVM交互用的頭文件lib:類庫jre:java運行環境(注意:這里的bin、lib文件夾和jre里的bin、lib是不同的)總的來說JDK是用于java程序的開發,而jre則是只能運行class而沒有編譯的功能。

eclipse、idea等其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,所以在安裝時你會發現他們只要求你選中jre路徑就ok了。

歡迎工作一到五年的Java工程師朋友們加入Java技術交流群:659270626

群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,redis,Kafka,MySQL,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

分享到:
標簽:jdk jre
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定