为什么 JDK 与 Web/应用服务器一起安装?

为什么 JDK 与 Web/应用服务器一起安装?

我正在将应用服务器的 JDK 版本升级到 1.6。但是我不明白为什么我们需要将 JDK 放在应用服务器上,而不是 JRE?

因为不需要在应用服务器上重新编译任何代码。

JDK 升级是否会影响任何密钥库?因为我将 JAVA_HOME 指向了另一个新路径。

感谢您的信息。

答案1

JDK 或 JRE 的要求取决于特定的应用程序服务器本身。(例如 JBOSS、tomcat、glassfish 等)及其编译为字节码的策略,以及它如何在启动时决定其依赖关系。

从严格意义上讲,如果您的 Java 应用程序仅以类的形式执行 Java 字节码,那么您应该能够仅使用 JRE。然而,这是否正确取决于 Java 应用服务器策略,即在启动时防御性地检查是否已安装 JDK,或者在请求编译时在某个时刻抛出异常。

一些应用服务器使用 javac 将 jsp 编译为类文件,因此需要安装系统 JDK,这可以与以下情况形成对比:雄猫,它捆绑了自己的 jps 编译器,因此可以在 JRE 下运行

java 密钥库是 Java SE 的一个功能,openJDK 和 Hotspot 都引用文件 $JAVA_HOME/lib/security/java.security 来选择它们的默认值。

除非您进行了更改$JAVA_HOME/lib/security/java.security,否则默认的 keystore.type=jks 文件实现会查找$HOME/.keystore因此由您来覆盖位置,并且 sunJDK 1.5 和 1.6 版本的都使用该格式和默认位置。

所以基本上改变$JAVA_HOME不会影响密钥库的位置

(除非您实际上已将密钥库位置覆盖到 $JAVA_HOME 文件夹中……)

但如果您使用某些非默认提供程序,或者在 java.security 中设置了一些非默认选项,则可能会有影响。

相关内容