Java 没有JRE的新JDK 12?这是怎么回事?

Java 没有JRE的新JDK 12?这是怎么回事?,java,Java,很长一段时间以来,我一直能够非常简洁地解释和区分jdk和JRE的概念。jdk是为开发人员准备的,只有在计划开发时才需要它,而JRE本质上是与Java虚拟机相关的资源,任何想要运行Java的人都需要它,无论他们是否是开发人员 现在,无论我读到哪里,人们都在告诉别人他们不需要JRE,jdk包含了所有必要的东西。因此,我最初的想法是虚拟机和运行Java所需的所有库都与jdk一起提供。那很好 然而,我很难理解普通用户的体验。我在自己的设备上看到了通知区域中Java的更新,我知道很多人在自己的计算机和其他

很长一段时间以来,我一直能够非常简洁地解释和区分jdk和JRE的概念。jdk是为开发人员准备的,只有在计划开发时才需要它,而JRE本质上是与Java虚拟机相关的资源,任何想要运行Java的人都需要它,无论他们是否是开发人员

现在,无论我读到哪里,人们都在告诉别人他们不需要JRE,jdk包含了所有必要的东西。因此,我最初的想法是虚拟机和运行Java所需的所有库都与jdk一起提供。那很好

然而,我很难理解普通用户的体验。我在自己的设备上看到了通知区域中Java的更新,我知道很多人在自己的计算机和其他非开发人员的设备上运行Java

也就是说,如果没有JRE,他们现在到底在更新什么?他们的机器上必须有一个Java虚拟机才能运行Java,对吗?新的虚拟机是否运行用jdk 12编写的软件?具体来说,我假设它必须与openjdk 12一起工作

这些变化有点让人困惑,所以我试图找出你们中是否有人可能有一些关于它们的信息


谢谢

大概是因为他们正在修订开发环境的一个或多个方面,但不需要更改JRE

我能想到的一个例子是修补javac。。。在以前的JRE上,输出可能仍然可以正常工作,但javac可能已经被更改以生成更高效的字节码或修补某些安全漏洞

这些本身并没有给我留下“重大修订”的印象,但这很可能是一个营销决策,而不是一个技术决策

编辑:更改的实际列表:

  • 气相色谱仪(实验)
  • 基准测试
  • switch/case的新语法(看起来像lamdas
    switch(foo){case-bar,baz->qux();}
  • “JVM常量API”?这怎么不是JRE的事情?(编辑:可能API已经存在,但现在已经公开)
  • 放弃对ARM上两种64位体系结构之一的支持。不必要的冗余就是不必要的冗余
  • “默认CD存档”CD:类数据共享更高效的反射
  • “G1的可中止混合集合”
  • “立即从G1返回未使用的已提交内存”
参见