Diferenças entre Oracle JDK e OpenJDK

700

NOTA: Esta pergunta é de 2014. A partir do Java 11 OpenJDK e Oracle JDK estão convergindo.

Existem diferenças cruciais entre o Oracle e o OpenJDK?

Por exemplo, a coleta de lixo e outros parâmetros da JVM são os mesmos?

O GC funciona de maneira diferente entre os dois?

user1340582
fonte
3
Isso também pode ser relevante se você planeja mudar do Oracle para o OpenJDK, já que o Oracle não é mais gratuito. developers.redhat.com/blog/2018/11/05/...
Leo Ufimtsev

Respostas:

338

O OpenJDK e o Oracle JDK são criados e mantidos atualmente apenas pelo Oracle.

O OpenJDK e o Oracle JDK são implementações da mesma especificação Java aprovada no TCK (Java Technology Certification Kit).

A maioria dos fornecedores de JDK são escritos sobre o OpenJDK, fazendo alguns ajustes para [substituir principalmente peças proprietárias licenciadas / substituir por itens de alto desempenho que funcionam apenas em componentes específicos do SO] sem quebrar a compatibilidade do TCK.

Muitos fornecedores implementaram a especificação Java e passaram o TCK. Por exemplo, IBM J9, Azul Zulu, Azul Zing e Oracle JDK.

Quase todo JDK existente é derivado do OpenJDK.

Conforme sugerido por muitos, o licenciamento é uma alteração entre os JDKs.

A partir do JDK 11, acessando o suporte de longa data, o Oracle JDK / Java SE agora exigirá uma licença comercial. Agora você deve prestar atenção no JDK que está instalando, pois o Oracle JDK sem assinatura pode parar de funcionar. fonte

Ref: Lista de máquinas virtuais Java

Venkateswara Rao
fonte
13
Então você está dizendo que o openjdk é a linha de base para todos os outros jdks, apenas que eles o copiam e depois o ajustam após suas próprias especificações?
21816 Karl Morrison
24
Estou atrasado para a festa, mas vou perguntar assim mesmo. O que o jdk traz para a mesa que o openjdk não traz? Todas essas respostas fazem o openjdk parecer igual ou superior em todos os aspectos, mas se for esse o caso, por que a Oracle se preocupa em manter o jdk?
Kefka
@ Karl Morrison Até eu sei, .. todos implementação JVM especificação fazendo dessa maneira única .. mas não há nenhuma regra explícita que um tem que seguir esse caminho ...
Venkateswara Rao
13
@ Mella OpenJDK <= OracleJDK Por exemplo, o Oracle JDK possui poucas chaves confiáveis ​​configuradas, que não estavam no OpenJDK (atualmente, as pessoas apenas as importam para preencher essa lacuna). O Oracle JDK tem algumas bibliotecas SWING que são proprietárias para acelerar a renderização .. (Quem já executou aplicativos de servidor pode ser irrelevante para eles) O Oracle JDK possui um plug-in Applet (o mesmo motivo acima funciona) O Oracle JDK bugfix / hotfix seria distribuído e manipulado corretamente pela Oracle, onde o OpenJDK é pouco técnico para garantir que todos os patches são aplicados e que conflito eles teriam
Venkateswara Rao
Observe que, com o novo modelo de versão para java, a Oracle planeja reduzir ao máximo a diferença entre os dois jdk. Existem outros colaboradores de código aberto para abrir o jdk que não sejam os desenvolvedores da Oracle? Isso é para entender se haveria suporte suficiente para suportar uma correção da versão mais recente para a versão anterior. Alguma ideia?
Andy Dufresne
329

Para o Java 7 , nada crucial. O projeto OpenJDK é baseado principalmente no código-fonte do HotSpot doado pela Sun.

Além disso, o OpenJDK foi selecionado para ser a implementação de referência para Java 7 e é mantido pelos engenheiros da Oracle.

Há uma resposta mais detalhada de 2012 sobre a diferença entre JVM, JDK, JRE e OpenJDK , que se vincula a uma postagem do blog da Oracle :

P : Qual é a diferença entre o código fonte encontrado no repositório OpenJDK e o código que você usa para construir o Oracle JDK?

R : Está muito próximo - nosso processo de compilação para versões do Oracle JDK se baseia no OpenJDK 7 adicionando apenas algumas partes, como o código de implantação, que inclui a implementação da Oracle do Java Plugin e Java WebStart, além de alguns terceiros de código fechado componentes de terceiros, como um rasterizador de gráficos, alguns componentes de terceiros de código aberto, como o Rhino, e alguns bits aqui e ali, como documentação adicional ou fontes de terceiros. No futuro, nossa intenção é abrir o código fonte de todas as partes do Oracle JDK, exceto aquelas que consideramos recursos comerciais, como o JRockit Mission Control (ainda não disponível no Oracle JDK), e substituir componentes de terceiros sobrecarregados por alternativas de código aberto para obter uma paridade mais próxima entre as bases de código.

radai
fonte
42
Também há diferenças de licenciamento.
mcoolive
9
obrigado, encontrei uma resposta melhor. stackoverflow.com/questions/17360011/…
astroanu 30/03
9
No ARM, pelo menos esses dois parecem ser significativamente diferentes no desempenho. Eu precisaria fazer alguns perfis sobre o motivo disso estar acontecendo, mas a diferença subjetiva é "Oracle JDK está ok" e "OpenJDK é completamente inutilizável".
dualed
1
@dualed, no entanto, o android está mudando para o openjdk a partir do android 7. Parece que eles estão preparando melhorias significativas. venturebeat.com/2015/12/29/...
Johnny Doe
1
@JohnnyDoe Vamos torcer para que, se o Google estiver migrando para o OpenJDK, eles fornecerão atualizações de desempenho para que funcionem bem no ARM fora do Android também!
dualed
95

Uma diferença importante daqui para frente é o cronograma de lançamento e a política de suporte.

OpenJDK

O OpenJDK terá um release de recurso a cada 6 meses, que é suportado apenas até o próximo release de recurso. É essencialmente um fluxo contínuo de lançamentos direcionados aos desenvolvedores.

Oracle JDK

O Oracle JDK é voltado mais para um público corporativo que valoriza a estabilidade. Ele é baseado em uma das versões do OpenJDK, mas recebe suporte a longo prazo (LTS). O Oracle JDK tem lançamentos planejados a cada 3 anos.

insira a descrição da imagem aqui

Fonte: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

Adaga de Gilbert Arenas
fonte
3
Versões de longo prazo exigem que você compre suporte comercial para obter atualizações após 6 meses do lançamento do java. Qual o significado de lançamentos de longo prazo quando comparados com lançamentos de curto prazo? Versões de curto prazo como o JDK 9/10 não têm suporte comercial da Oracle?
Andy Dufresne
@AndyDufresne Por que você acha que terá que pagar pelo suporte após apenas 6 meses? Meu entendimento é que a linha do tempo é TBD. Seis meses parecem terrivelmente curtos ... duvido que possamos esperar atualizações públicas por 5 anos, como o Java 8 está recebendo, mas não ficaria surpreso se houvesse atualizações públicas por 2 ou 3 anos. Referência - é o seguinte: oracle.com/technetwork/java/eol-135779.html .
The Gilbert Arenas Dagger
1
O link da Oracle menciona "Por exemplo, a versão LTS para Oracle JDK 11 (18.9 LTS) será suportada por pelo menos 5 anos, conforme descrito na Política de suporte ao longo da vida da Oracle". A política tem três níveis de suporte, nenhum deles parece ser gratuito. Também mencionei isso depois de analisar o comentário do azul CTO aqui - blog.takipi.com/java-11-will-include-more-than-just-features/… . O principal objetivo desta nova estratégia de lançamento é não perder tempo mantendo os lançamentos antigos. Se o suporte fosse gratuito, o modelo seria o mesmo de agora.
Andy Dufresne
38

Para Java 8 , Oracle JDK x OpenJDK, considero as principais diferenças:

  • O OpenJDK é uma implementação de código aberto da plataforma Java Standard Edition com a contribuição da Oracle e da comunidade Java aberta.

  • O OpenJDK é liberado sob a licença GPL v2, em que o Oracle JDK é licenciado sob o Contrato de Licença de Código Binário da Oracle.

  • Na verdade, o processo de compilação do Oracle JDK se baseia no código-fonte do OpenJDK. Portanto, não há grande diferença técnica entre o Oracle JDK e o OpenJDK. Além do código base, o Oracle JDK inclui a implementação do Java Plugin e Java WebStart pela Oracle. Ele também inclui componentes de código aberto e de código aberto de terceiros, como rasterizador de gráficos e Rhino, respectivamente. O OpenJDK Font Renderer e o Oracle JDK Flight Recorder são as principais diferenças notáveis ​​entre o Oracle JDK e o OpenJDK.

  • Rockit era a JVM da Oracle e, a partir do Java SE 7, HotSpot e JRockit, foram fundidos em uma única JVM. Portanto, agora temos apenas a JVM HotSpot mesclada disponível.
  • Há casos em que as pessoas afirmam que tiveram problemas ao executar o OpenJDK e que foram resolvidos quando passaram para o Oracle JDK.
  • O Twitter tem seu próprio JDK.
  • Software como o Minecraft espera que o Oracle JDK seja usado. De fato, adverte.

Para obter uma lista completa das diferenças, consulte o artigo de origem: Oracle JDK vs OpenJDK e Java JDK Development Process

45hook
fonte
4
Para o Android Studio, isso não é mais verdade: uma cópia do OpenJDK mais recente vem com o Android Studio 2.2 e superior, e esta é a versão do JDK que recomendamos para seus projetos do Android. Fonte: developer.android.com/studio/intro/studio-config#jdk
MKesper 25/10/18
“Software como o Minecraft espera que o Oracle JDK seja usado. De fato, adverte. Na verdade, no Ubuntu, o instalador oficial .deb da Mojang puxa o OpenJDK ao instalar o iniciador.
Moilleadóir 18/03
29

As JVMs do Oracle e do OpenJDK são iguais e possuem os mesmos recursos do GC (nas versões mais recentes 10+). Antes do Oracle gerenciar o OpenJDK JVM, havia diferenças concretas que tornavam o Openjdk JVM antigo quase inutilizável em muitos ambientes. As JVMs agora são as mesmas.

Os JDKs que incluem a JVM como parte do Kit diferem no cronograma de licenciamento, liberação e manutenção e nas bibliotecas de software incluídas no JDK. Diferenças cruciais para mim também significam coisas que tornariam o código não executado se não estivesse presente. Não apenas licenciamento.

diff --brief -r openjdk oraclejdk

Fundamentalmente, os seguintes arquivos estão ausentes, além de vários outros no JDK do linux (por isso, se você 'alegou' que o código não funcionava no OpenJDK e o fazia no OracleJDK enquanto estava usando o javafx, estava correto):

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`
Marte
fonte
5
Obrigado por apontar as diferenças reais : o código não está em execução é um problema da vida real. De onde você se baseou diff?
Matthieu
19

De acordo com o blog da Oracle , o Oracle JDK é lançado para Java 11 e posterior

A partir do Java 11, a Oracle fornecerá versões do JDK sob a GNU General Public License v2 de código aberto , com a exceção de caminho de classe (GPLv2 + CPE) e sob uma licença comercial para aqueles que usam o Oracle JDK como parte de um produto ou serviço Oracle, ou quem não deseja usar software de código aberto. Essa combinação de usar uma licença de código aberto e uma licença comercial substitui a licença histórica " BCL ", que possuía uma combinação de termos comerciais gratuitos e pagos.

Compilações diferentes serão fornecidas para cada licença, mas essas compilações são funcionalmente idênticas, exceto por algumas diferenças cosméticas e de embalagem, descritas em detalhes abaixo.

Do BCL à GPL

A Licença de Código Binário para tecnologias Oracle Java SE (“BCL”) é a licença principal para tecnologias Oracle Java SE há mais de uma década. O BCL permite o uso sem taxas de licença sob certas condições. Para simplificar as coisas no futuro, a Oracle começou a fornecer versões OpenJDK licenciadas de código aberto a partir do Java 9, usando o mesmo modelo de licença da plataforma Linux. Se você está acostumado a obter binários do Oracle Java SE gratuitamente, basta continuar fazendo isso com as compilações do OpenJDK da Oracle disponíveis em jdk.java.net . Se você está acostumado a obter binários do Oracle Java SE como parte de um produto ou serviço comercial da Oracle, poderá continuar obtendo versões do Oracle JDK por meio do My Oracle Support (MOS) e outros locais.

Funcionalmente idêntico e intercambiável ...

O JDK licenciado pela BCL da Oracle historicamente continha "recursos comerciais" que não estavam disponíveis nas compilações do OpenJDK. Conforme prometido , no entanto, no ano passado, a Oracle contribuiu com esses recursos para a Comunidade OpenJDK, incluindo:

Do Java 11 em diante, portanto, as versões do Oracle JDK e do OpenJDK serão essencialmente idênticas.

... mas com algumas diferenças cosméticas e de embalagem

Ainda existem um pequeno número de diferenças, algumas intencionais e cosméticas e outras simplesmente porque é necessário mais tempo para discutir com os colaboradores do OpenJDK.

  • O Oracle JDK 11 emite um aviso ao usar a opção -XX: + UnlockCommercialFeatures, enquanto no OpenJDK constrói essa opção resulta em erro. Essa opção nunca fez parte do OpenJDK e não faria sentido adicioná-la agora, pois não há recursos comerciais no OpenJDK. Essa diferença permanece para facilitar a migração dos usuários do Oracle JDK 10 e versões anteriores para o Oracle JDK 11 e posterior.
  • O Oracle JDK 11 pode ser configurado para fornecer dados de log de uso à ferramenta " Advanced Management Console ", que é um produto comercial Oracle separado. Trabalharemos com outros colaboradores do OpenJDK para discutir como esses dados de uso podem ser úteis no OpenJDK em versões futuras, se houver. Essa diferença permanece principalmente para fornecer uma experiência consistente aos clientes Oracle até que essas decisões sejam tomadas.
  • O comando javac --release se comporta de maneira diferente para os destinos Java 9 e Java 10, pois nessas liberações o Oracle JDK continha alguns módulos adicionais que não faziam parte das liberações correspondentes do OpenJDK:
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.management.resource
    • jdk.packager.services
    • jdk.snmp

Essa diferença permanece para fornecer uma experiência consistente para tipos específicos de uso herdado. Esses módulos agora estão disponíveis separadamente como parte do OpenJFX , agora no OpenJDK e no Oracle JDK porque eram recursos comerciais que a Oracle contribuiu para o OpenJDK (por exemplo, Flight Recorder) ou foram removidos do Oracle JDK 11 (por exemplo, JNLP) .

  • A saída dos comandos java --version e java -fullversion distinguirá as compilações do Oracle JDK das compilações do OpenJDK, para que as equipes de suporte possam diagnosticar quaisquer problemas que possam existir. Especificamente, a execução de java --version com uma compilação do Oracle JDK 11 resulta em:

java 11 2018-09-25

Java (TM) SE Runtime Environment 18.9 (compilação 11 + 28)

Servidor Java HotSpot (TM) de 64 bits VM 18.9 (compilação 11 + 28, modo misto)

E para uma compilação do OpenJDK 11:

versão do openjdk "11" 25/09/2018

OpenJDK Runtime Environment 18.9 (compilação 11 + 28)

Servidor OpenJDK de 64 bits VM 18.9 (compilação 11 + 28, modo misto)

  • O Oracle JDK sempre exigiu que fornecedores de criptografia de terceiros fossem assinados por um certificado conhecido. A estrutura de criptografia no OpenJDK possui uma interface criptográfica aberta, o que significa que não restringe quais provedores podem ser usados. O Oracle JDK 11 continuará a exigir uma assinatura válida e as compilações do Oracle OpenJDK continuarão a permitir o uso de uma assinatura válida ou de um provedor de criptografia de terceiros não assinado.
  • O Oracle JDK 11 continuará incluindo instaladores, marcas e embalagens JRE para uma experiência consistente com os usos de desktop herdados. As compilações do Oracle OpenJDK estão atualmente disponíveis como arquivos zip e tar.gz, enquanto formatos de distribuição alternativos estão sendo considerados.
Naresh Joshi
fonte
10

Uma lista das poucas diferenças remanescentes de cosméticos e embalagens entre o Oracle JDK 11 e o OpenJDK 11 pode ser encontrada nesta postagem do blog:

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Em resumo:

  • O Oracle JDK 11 emite um aviso ao usar a opção -XX: + UnlockCommercialFeatures,
  • ele pode ser configurado para fornecer dados de log de uso à ferramenta "Advanced Management Console",
  • sempre exigiu que fornecedores de criptografia de terceiros fossem assinados por um certificado conhecido,
  • continuará a incluir instaladores, marcas e embalagens JRE,
  • enquanto o comando javac --release se comporta de maneira ligeiramente diferente para os destinos Java 9 e Java 10, e
  • a saída dos comandos java --version e java -fullversion distinguirá as compilações do Oracle JDK das compilações do OpenJDK.
Dalibor Topic
fonte
2
Notei que a maioria das suas respostas tinha uma assinatura nelas. Eu os editei. Leia os slogans e assinaturas proibidos? e stackoverflow.com/help/behavior (especificamente seção "Não use assinatura, slogans ou saudações.")
Mark Rotteveel
7
  1. A Oracle entregará lançamentos a cada três anos, enquanto o OpenJDK será lançado a cada seis meses.
  2. A Oracle fornece suporte de longo prazo para seus lançamentos. Por outro lado, o OpenJDK suporta as alterações em uma liberação apenas até a próxima versão ser lançada.
  3. O Oracle JDK foi licenciado sob o Contrato de Licença de Código Binário Oracle, enquanto o OpenJDK possui a Licença Pública Geral GNU (GNU GPL) versão 2 com uma exceção de vinculação.
  4. O produto Oracle possui os recursos Flight Recorder, Java Mission Control e Application Class-Data Sharing, enquanto o OpenJDK possui o recurso Font Renderer. Além disso, a Oracle possui mais opções de coleta de lixo e melhores renderizadores,
  5. O Oracle JDK é totalmente desenvolvido pela Oracle Corporation, enquanto o OpenJDK é desenvolvido pela Oracle, OpenJDK e pela Comunidade Java. No entanto, empresas de primeira linha como Red Hat, Azul Systems, IBM, Apple Inc. e SAP AG também participam ativamente de seu desenvolvimento.

Do Java 11, mude para uma grande mudança

A Oracle mudará sua licença histórica "BCL" com uma combinação de uma licença de código aberto e comercial

  • O kit do Oracle para Java 11 emite um aviso ao usar a opção -XX: + UnlockCommercialFeatures, enquanto no OpenJDK constrói, essa opção resulta em erro
  • O Oracle JDK oferece uma configuração para fornecer dados de log de uso à ferramenta "Advanced Management Console"
  • A Oracle sempre exigiu que fornecedores de criptografia de terceiros fossem assinados por um certificado conhecido, enquanto a estrutura de criptografia no OpenJDK possui uma interface de criptografia aberta, o que significa que não há restrições quanto a quais fornecedores podem ser usados.
  • O Oracle JDK 11 continuará a incluir instaladores, marcas e embalagens do JRE, enquanto as compilações do OpenJDK estão atualmente disponíveis como arquivos zip e tar.gz
  • O comando javac –release se comporta de maneira diferente para os destinos Java 9 e Java 10 devido à presença de alguns módulos adicionais na liberação do Oracle
  • A saída dos comandos java –version e java -fullversion distinguirá as compilações do Oracle das compilações do OpenJDK


Atualização: 25-Ago-2019



insira a descrição da imagem aqui

para mais detalhes oracle-vs-openjdk

Istiaque Hossain
fonte
5

Além da óbvia diferença de licenciamento, a principal diferença entre o OpenJDK e o OracleJDK 11 são as atualizações de estabilidade e desempenho.

Fonte: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385

A cada 6 meses, as duas bases de código estarão sincronizadas. Porém, durante a janela de 6 meses, o OpenJDK receberá apenas atualizações de segurança, enquanto o OracleJDK receberá atualizações adicionais de estabilidade e desempenho.

Dado que as versões de atualização ocorrem apenas a cada três meses para o OpenJDK e o OracleJDK, isso significa que você está perdendo (no máximo) três meses no valor de correções até a próxima versão principal e a atualização. No entanto, se você optar por seguir as versões LTS, uma licença comercial começará a fazer mais sentido.

Gili
fonte
3

Também para Java 8, um interessante benchmark de desempenho para o aplicativo REST Spring Boot reativo (sem bloqueio) hospedado em várias JVMs pelo AMIS Technology Blog foi publicado em novembro de 2018, mostrando que, entre outras diferenças:

  • O OpenJDK tem maior uso de CPU que o OracleJDK,
  • O OpenJDK possui um tempo de resposta um pouco menor que o OracleJDK,
  • O OpenJDK possui maior uso de memória que o OracleJDK,

Para detalhes, consulte o artigo fonte.

Claro YMMV, este é apenas um dos pontos de referência.

Greg Dubicki
fonte
3

Meu entendimento é que o Oracle JDK não pode ser usado na produção, portanto, não posso usá-lo legalmente (sem pagar), para o aplicativo Web que estou construindo para minha empresa. Eu tenho que usar o OpenJDK. Por favor corrija-me se eu estiver errado! Deste artigo .

A partir do Java 11, o Oracle JDK é restrito aos ambientes de desenvolvimento e teste. Os JDKs Oracle só podem ser usados ​​na produção se você comprar o suporte comercial. Em vez disso, a Oracle fornecerá compilações Java baseadas no OpenJDK gratuitamente, que podem ser usadas na produção. Mas para o Oracle JDK oficial, o verdadeiro roteiro será assim:

ATUALIZAÇÃO: Estou errado. Posso usar o Oracle JDK gratuitamente, mas não receberei atualizações de segurança após 6 meses e teremos de assumir o risco. Veja a seção de artigo vinculada acima "O que o novo trem de lançamento significa para minha empresa?".

nettie
fonte
Isso pode não ser mais verdadeiro a partir do JDK 13. Há uma nova licença para o Oracle JDK, de acordo com a Oracle: "A nova licença permite certos usos, como uso pessoal e desenvolvimento, sem nenhum custo - mas outros usos autorizados sob licenças anteriores do Oracle JDK podem não estar mais disponíveis ". Consulte oracle.com/downloads/licenses/javase-license1.html .
AL Flanagan
Só queria saber, a versão atual do oracle jdk8u241 é gratuita para uso em produção?
Nirav Shah