JRE 11在哪里?

更新:

(须为 更清晰)

你可以在甲骨文的官方网站上找到 JRE 8JRE 9JRE 10(点击每一个)

另外,JDK11不包含 JRE。我希望 JRE 与 JDK 一起安装。

我们应用程序的最终用户需要安装 JDK 吗?


问题的原始版本:

我从它的 官方网站下载并安装了 Oracle JDK 11。我同时安装了 ..._linux-x64_bin.rpm..._windows-x64_bin.exe(首先在 Linux 机器上安装,其次在 Windows 机器上安装)。但我看到了一件意想不到的事!JRE 在哪里?

这是 CentOS 7上安装路径的快照。如你所见,没有 jre文件夹:

# ls /usr/java/jdk-11.0.1/
bin  conf  include  jmods  legal  lib  README.html  release

有关 Oracle JDK 8的同一快照(特别参见 jre文件夹) :

# ls /usr/java/jdk1.8.0_191-amd64/
bin             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release

Windows 机器上的相同快照:

> dir /b "C:\Program Files\Java\jdk-11.0.1"
bin
conf
COPYRIGHT
include
jmods
legal
lib
README.html
release
           

> dir /b "C:\Program Files\Java\jdk1.8.0_181"
bin
COPYRIGHT
include
javafx-src.zip
jre
lib
LICENSE
README.html
release
src.zip
THIRDPARTYLICENSEREADME-JAVAFX.txt
THIRDPARTYLICENSEREADME.txt

在 Windows 机器上,JDK8和 JDK11还有两个不同之处。

  1. 一个独立的 JREJDK在一起,你可以看到:

    > dir /b "C:\Program Files\Java"
    jdk-11.0.1
    jdk1.8.0_181
    jre1.8.0_181
    
  2. 路径 C:\Program Files (x86)\Common Files\Oracle\Java:

    > dir "C:\Program Files (x86)\Common Files\Oracle\Java"
    ...
    ...                14 java.settings.cfg
    ...    <JUNCTION>     javapath [C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_3015921]
    ...    <DIR>          javapath_target_3015921
    ...
    

    正如你所看到的,javapath(在 PATH环境变量中)指向 javapath_target_3015921。这个文件夹包含 JDK8的3个可执行文件(不是 链接!):

    > dir /b "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
    java.exe
    javaw.exe
    javaws.exe
    

最后,我在网上搜索寻找一个独立的 JRE,发现它并不存在!

我们程序的最终用户需要安装 JDK 吗?

174397 次浏览

The whole structure with Java 11 has changed. Java is now a modular platform, where you can create your own "JRE" distribution with specifically the modules that you need to run your application.

The release notes at https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html have the following sentence:

In this release, the JRE or Server JRE is no longer offered. Only the JDK is offered. Users can use jlink to create smaller custom runtimes.

Documentation about jlink: https://docs.oracle.com/en/java/javase/11/tools/jlink.html

And another article about it: https://medium.com/codefx-weekly/is-jlink-the-future-1d8cb45f6306