Por que o JDK é instalado com Web / Application Servers?

4

Estou atualizando a versão do JDK do servidor de aplicativos para o 1.6. No entanto, eu não entendo por que precisamos colocar o JDK no servidor de aplicativos em vez de um JRE?

Como não há necessidade de qualquer recompilação de códigos nos servidores de aplicativos.

O upgrade do JDK afetaria qualquer keystore? Desde que eu estou apontando o JAVA_HOME para outro novo caminho.

Aprecie e obrigado pela informação.

    
por ilovetolearn 24.03.2012 / 14:51

1 resposta

1

O requisito do JDK ou do JRE depende do próprio servidor de aplicativos específico. (por exemplo, JBOSS, tomcat, glassfish, etc), e suas estratégias para compilar para bytecode, e como ele decide sobre suas dependências na inicialização.

Em um sentido estrito, se o seu aplicativo java apenas executar o código de byte Java na forma de classes, você deverá conseguir sair com apenas um JRE. No entanto, se isso é verdade ou não, depende da estratégia do servidor Java App para verificar um JDK instalado defensivamente na inicialização ou apenas lançar uma exceção em algum momento quando a compilação é solicitada.

Alguns servidores de aplicativos usam o javac para compilar o jsp para a classe arquivos e, portanto, são dependentes de ter um sistema JDK instalado, isso pode ser contrastado com dizer tomcat , que inclui seu próprio compilador para jsps, portanto pode ser executado sob o JRE .

O keystore java é um recurso do Java SE, e tanto o openJDK quanto o Hotspot fazem referência a um arquivo $ JAVA_HOME / lib / security / java.security para selecionar seus padrões.

A menos que você tenha alterado $JAVA_HOME/lib/security/java.security , a implementação do arquivo keystore.type = jks padrão procura $HOME/.keystore , portanto cabe a você ultrapassar o local e as versões 1.5 e 1.6 do sunJDK usam esse formato e localização padrão.

então, basicamente, alterar $JAVA_HOME não afeta a localização do keystore

(a menos que você tenha percorrido o local do keystore na pasta $ JAVA_HOME ...)

mas pode ser importante se você estiver usando algum provedor não padrão ou tiver definido algumas opções não padrão em java.security.

    
por 24.03.2012 / 16:30