Existem diferenças de desempenho entre o OpenJDK e o Oracle?

1

A Oracle decidiu recentemente começar a cobrar pelo uso comercial de sua JVM.

A empresa em que trabalho começou a usar o OpenJDK, e está descobrindo que tudo parece estar funcionando bem, exceto que estamos tendo um desempenho mais lento.

Nossos servidores são servidores linux e, de acordo com nossa equipe de desempenho,

We have observed significant slowness on most java calls. We reviewed the logs and investigated a few of the calls, and we are not seeing any exceptions or errors, just slowness.

Alguém mais tem dados sobre se isso é verdade ou não, que o OpenJDK é, em média, mais lento que o Oracle JVM?

    
por Brad Parks 09.10.2018 / 16:19

1 resposta

1

Você acharia interessante este trecho de uma postagem no blog da Oracle :

Q: What is the difference between the source code found in the OpenJDK repository, and the code you use to build the Oracle JDK?

A: It is very close - our build process for Oracle JDK releases builds on OpenJDK 7 by adding just a couple of pieces, like the deployment code, which includes Oracle's implementation of the Java Plugin and Java WebStart, as well as some closed source third party components like a graphics rasterizer, some open source third party components, like Rhino, and a few bits and pieces here and there, like additional documentation or third party fonts. Moving forward, our intent is to open source all pieces of the Oracle JDK except those that we consider commercial features such as JRockit Mission Control (not yet available in Oracle JDK), and replace encumbered third party components with open source alternatives to achieve closer parity between the code bases.

Como a Oracle é responsável por criar os dois, é claro que isso garantirá que seus clientes terão boas razões para pagar, e desempenho é o óbvio significa.

Acredito que o OpenJDK é uma JVM somente de intérprete. Isso é mais fácil de portar como não tem código de montagem específico da arquitetura, mas, infelizmente, tem menos desempenho.

O OracleJDK eu acho que aproveita a ABI de ponto flutuante da plataforma (Soft Float no RP1 e Hard Float no RP2). Também pode ter uma certa quantidade de código específico da plataforma para torná-lo mais rápido.

Um Compilador JIT (just-in-time) já foi incluído em ambos, chamado Shark, mas não tenho conhecimento se está incluído no OpenJDK. Wikipedia OpenJDK não menciona JIT e eu encontrei este problema antigo e preocupante Remover o compilador Shark . Contudo, Histórico de versões do Java da Wikipédia inclui JIT.

Se o OracleJDK incluir um compilador JIT específico da plataforma, mas o OpenJDK não, isso pode explicar a diferença no desempenho,

    
por 09.10.2018 / 17:00

Tags