2014-01-11 40 views
11

我刚刚为Java SE 7下载了Oracle的Server JRE(link)我下载的文件是server-jre-7u45-linux-x64.tar.gz。当我提取这个文件时,我惊讶地发现一个名为的目录jdk1.7.0_45被创建为包含完整的java JDK。不是我所期望的JRE安装。这里发生了什么?Oracle的服务器JRE包含JDK?

+0

嗯,它包括javac? – user2864740

+1

@ user2864740是的。 –

+0

我再次检查,所以你这样做!哇。你在运行什么版本的Linux?您可能能够获得发行版的重新打包版本。 –

回答

21

答案是在父页面上的包的描述:

JDK(Java开发工具包)。对于Java开发人员。包含完整的JRE和用于开发,调试和监控Java应用程序的工具。

服务器JRE :(服务器Java运行时环境)用于在服务器上部署Java应用程序。包括用于服务器应用程序通常所需的JVM监视和工具的工具,但不包括浏览器集成(Java插件),自动更新和安装程序。

JRE:(Java Runtime Environment)。涵盖了大多数最终用户的需求。包含在系统上运行Java应用程序所需的所有内容。

在服务器JRE情况下,“工具通常所需的服务器应用程序”包括的JDK工具一些。例如,Web容器(如Tomcat)需要将JSP转换为已编译的Java Servlet,这需要一个可调用的Java编译器。

IMO,使用服务器JRE的好处在于它不包括;即Java插件是安全噩梦(!)和自动更新,这对于生产服务稳定性是不利的。

+5

其中一个更令人困惑的方面可能会更好地用作堆栈溢出的新问题,这是在服务器JRE中复制的二进制文件。我知道在主“JRE”二进制文件“jre/bin”的不同目录“bin”中有“服务器应用程序通常需要的工具”。我不明白在这两个目录中复制像“java”和“keytool”这样的二进制文件。任何人都知道他们为什么这样做,而不是仅仅不这样做,或者至少将它们混合在一起?它们在功能上有什么不同?他们的md5sums会显示“否”。 – Bradley

+0

你需要问“他们”。但是,符号链接可能会破坏(写得不好)的脚本;例如在依赖于JRE的第三方应用程序中。我不认为他们在功能上有所不同。 –