jdk/bin/java和jdk/jre/bin/java之间的差异

Thi*_*rda 10 java jvm

本周进行一些测试我发现了这种情况:

当我使用jdk/jre/bin/java中的java可执行文件运行tomcat时,性能比使用jdk/bin/java运行时要好很多.问题是:有人知道为什么jdk包提供了2个java可执行文件,它们之间有什么区别可以证明性能差异?

hoc*_*age 10

我迟到了,但是......我来到这里寻找javaOpenJDK中几个变种之间的区别.我最后只得到了一些澄清和其他问题,以解决"他们之间有什么区别"问题的一部分; 希望它有所帮助.

查看OpenJDK(我正在使用OpenJDK 1.7.0)基本目录,我看到三个 java s,都有不同的哈希值:

  • bin/java,二进制
  • jre-abrt/bin/java,二进制; 假设ABRT是自动错误报告工具
  • jre/bin/java中,外壳脚本execS中的jre-abrt/bin/java变型中,以两种不同的方式(更下文)之一.

上面的二进制变体具有相同的文件大小和创建时间(在我的版本和系统中,无论如何),但两个文件之间有4个字节不同(我没有进一步看 - 这是你问题的另一部分 - -但它们不同的,它看起来并不像一个ASCII字符串,例如).

脚本变体是你说的更快,这似乎违反直觉,因为它似乎做得更多.(或许你只是看到了执行脚本的时间而不是exec'd java命令?).该脚本检查是否存在ABRT共享对象文件,如果存在,则传递(作为-agentpath...).soabrt=on.再次,这似乎应该只是更多的工作......假设使用ABRT.

如果您仍然对此主题感兴趣,可能会看到以下内容会很有趣:

  • 您正在使用的脚本中的哪条路径(检查脚本中是否存在/usr/lib64/libabrt-java-connector.so或其他内容jre/bin/java)
  • 如果直接执行第三个变量(jre-abrt/bin/java)更快
  • 还有什么被触摸在这两种情况下-样inotifystrace什么的,但是这可能是巨大的像这样的服务.


Thi*_*thi 4

java.exe 文件实际上是相同的。JDK 是 Java 开发工具包,其中包括开发应用程序所需的所有 java 可执行文件。

JRE 是 Java 运行时环境,其中包括运行 Java 应用程序所需的环境

因此,为了在部署模式下运行应用程序,您只需要 JRE,因为最终用户可能只有 JRE 而没有 JDK。