Pergunta

Se eu estou implantando servidores com WebSphere 6.1 (Java 1.5), devo usar da IBM JDK na minha caixa de construção? Ou será JDK compilação da Sun para o mesmo binário?

Se eu deveria usar da IBM, onde posso obter a versão do Windows x64?

Foi útil?

Solução

Eu faria tanto quanto possível, tentar manter o desenvolvimento tão perto quanto possível da produção. IBM e JDK da Sun é certamente tanto satisfazer a certificação SDK, mas eles não são de forma idêntica. Sua instrumentação e gerenciamento de memória são pelo menos um pouco diferente. Se nada mais, os erros no JDK será diferente, que o código só pode tropeçar em um cenário vs. outro. Ele provavelmente também só acontecem às 4 da manhã, e quando a lua está cheia, especialmente quando você tem companhia mais.

Eu não posso te dizer onde conseguir jdk da IBM, mas se você tem uma licença para websphere na sua empresa, você deve ter um contato na IBM para obter um link para que JDK.

Boa sorte, e sempre tentar minimizar as diferenças sempre que possível.

Outras dicas

Não se deve fazer qualquer diferença. Provavelmente não será exatamente o mesmo binário, mas 100% compatível. Eu suponho que você está usando bibliotecas externas de qualquer maneira como log4j ou talvez hibernar ou qualquer outra coisa e os que não são construídos usando o IBM JDK.

Existem diferenças nos JREs, no entanto. Por exemplo, lembro-me que quando eu listados métodos ou campos de uma classe usando reflexão, o IBM JRE usado para dar-lhes a mim em uma ordem diferente do que o do Sol.

Gostaria de usar o mesmo JDK para compilação que vai ser usado quando a aplicação é implementada (se você tem controle sobre isso).

Os binários pode ser diferente se o compilador é diferente, mas eles devem ser semanticamente idênticos. Eu não sei se a IBM escreveu seu próprio compilador. O JRockit JDK realmente usa o compilador Sun mas as JVMs são diferentes. Assim, com JRockit os binários são idênticas.

Se o aplicativo é usado com diferentes JDKs em tempo de execução, eu ainda construir com o que você acha que vai ser usado em tempo de implantação a maior parte do tempo e fazer alguns testes de tempo de execução com diferentes JDKs.

Os navios IBM JDK com J9 VM e Sun JDK é executado em Hotspot VM que têm diferentes algoritmos para funcionar. Você aplicativo pode não executar a mesma se você implantar e sintonizar SUN JDK e sua produção utiliza IBM JDK para o WAS. Verifique com os fornecedores e abrir um ticket, deixe-nos saber como ele vai.

Compilando com qualquer JDK não deve causar um problema a menos que você está fazendo referência aulas fora do java. * E javax. * Pacakges (que você não deve ser.) Claro que há sempre uma chance de que há uma discrepância entre um determinado fornecedor JDK ea especificação que poderia causar alguns erros de execução muito estranho que são difíceis de rastrear, mas eu nunca vi isso antes na minha experiência.

Eu recomendaria executar quaisquer conjuntos de testes que você usando o JRE alvo como comportamentos de tempo de execução diferentes entre fornecedores muito mais frequentemente do que a semântica de compilação fazer.

JDKs está compilando seu código para um bytecode e não diretamente ao código Máquina . É esperado que os compiladores de diferentes fornecedores gerando código compatível cross-fornecedor. Por exemplo compilador IBMs para jdk1.5 irá produzir código que é executado em de SUN JDK 1.5 e mais tarde sem qualquer problema.

Outra questão é como compiladores otimizar o bytecode, eu não tenho informação que alguns compiladores desempenho melhor otimização do que outros. A maior parte de otimização é realizada durante a execução pela JVM (por exemplo JIT (just-in-time) ou AOT (ahead-of-time) estratégias).

Tendo trabalhado com WebSphere muito tempo a versão do JDK é muito importante. WebSphere 6.1 é enviado com a IBM JDK 1.5 (ou é 5). Quando você corrigir o WebSphere há manchas equivalentes para o JDK bem. Embora possa trabalhar com uma versão diferente do JDK (mesmo um fornecedor diferente) Eu duvido que você vai ter muito apoio da IBM, se algo der errado.

Se você precisa de um pouco de 64 JVM Eu sugeriria que há provavelmente uma compilação de 64 bits, enquanto eu não posso comentar sobre janelas especificamente posso dizer-lhe que há um 64 bit WebSphere 6.1 Build tanto para AIX e Linux.

A melhor resposta é verificar com o vendedor e ver se eles vão apoiar a sua configuração. O que você não quer fazer é fazê-lo funcionar, então temos um problema ao vivo, chamar apoio e descobrir que você tem um ambiente sem suporte.

Eles devem compilar com a mesma especificação código de bytes, embora possam compilar código de bytes diferente (tal como na mesma maneira diferentes compiladores C gerar o código de máquina diferente). Eu não acho que não haveria nenhum problema em executar o código resultante - Eu compilei Java 1.4 em um Mac e, em seguida, implantado da IBM J9 rodando em um PocketPC antes sem problemas (isso foi antes J9 poderia lidar com Java 5 bytecode) .

De qualquer maneira, eu definitivamente fazer a sua plataforma de compilação um ponto de bala em seu arquivo leia-me para que o seu cliente pode ver se é um problema.

Como alternativa, você pode criar e implantar com Ant, e usar o JDK da Sun com ANT.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top