Unix

為什麼 JDK 與 Web/應用程序伺服器一起安裝?

  • March 24, 2012

我正在將應用伺服器的 JDK 版本升級到 1.6。但是,我不明白為什麼我們需要在應用伺服器上放置 JDK 而不是 JRE?

因為不需要在應用伺服器上重新編譯程式碼。

JDK 的升級會影響任何密鑰庫嗎?因為我將 JAVA_HOME 指向另一個新路徑。

感謝並感謝您提供的資訊。

JDK 或 JRE 的要求取決於特定的應用程序伺服器本身。(例如 JBOSS、tomcat、glassfish 等)及其編譯為字節碼的策略,以及它在啟動時如何決定其依賴關係。

從嚴格意義上講,如果您的 Java 應用程序只是以類的形式執行 Java 字節碼,那麼您應該能夠只使用 JRE。但是,這是否正確取決於 Java App 伺服器策略,即在啟動時防禦性地檢查已安裝的 JDK,或者在請求編譯時在某個時刻拋出異常。

一些應用程序伺服器使用 javac 將 jsp 編譯為類文件,因此依賴於安裝系統 JDK,這可以與說tomcat形成對比,tomcat為 jsps 捆綁了自己的編譯器,因此可以在 JRE 下執行

java keystore 是 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 中設置了一些非預設選項,這可能很重要。

引用自:https://serverfault.com/questions/372997