De um tradutor: a decisão de traduzir este artigo não veio por si só - é uma medida necessária :). Nós, como fornecedores da estrutura CUBA, somos abordados com esse problema com regularidade invejável. Obviamente, esse também é um tópico extremamente importante para nós e, em resposta às mudanças mais recentes, aumentamos os bancos de teste no Oracle JDK e no OpenJDK - atualmente, essa medida protege nossos usuários contra despesas imprevistas de licença. No entanto, esse tópico ainda não está fechado e continuamos a monitorar de perto o desenvolvimento de eventos e, quem sabe, talvez tenhamos que adicionar estandes para outras assembléias do JDK no próximo ano ...
O artigo abaixo do gato cativa pelo fato de descrever sucintamente os problemas e os JDKs mais populares com seus recursos.
A Oracle anunciou recentemente que a evolução do Java mudará drasticamente graças à mudança para o "Release Train" - uma nova abordagem para o lançamento de versões. Essa alteração também implicou alterações em termos de suporte de versão, que agora serão implementadas não para todos, mas apenas para as versões LTS . A Comunidade Java Champions esclareceu as inovações que estão sendo introduzidas, um documento detalhado está disponível online .
Mesmo com essa notícia, ainda restam perguntas: quais versões do JDK estão disponíveis atualmente? Eles serão gratuitos ou comerciais? Antes de responder a essa pergunta, é importante entender quais são os requisitos para o JDK como um produto. De fato, existe apenas um código-fonte JDK principal. Ele está aqui Qualquer pessoa pode usar o código-fonte para criar seu próprio assembly e colocá-lo em algum lugar da rede. No entanto, existe um procedimento de certificação separado que deve ser concluído para que o conjunto do JDK seja considerado válido. A certificação é fornecida pelo Java Community Process (JCP), que fornece o Technology Compatibility Kit (TCK). Se uma organização criar um novo assembly do OpenJDK que atenda ao TCK, será considerado "compatível com Java SE".
Lembre-se de que um assembly não pode ser chamado de "Java SE", a menos que a montadora tenha adquirido uma licença comercial da Oracle. Por exemplo, as construções AdoptOpenJDK que passam no TCK não são "Java SE", mas são "compatíveis com Java SE". Você também precisa considerar que a certificação agora se baseia “em liberdade condicional” - os resultados não são enviados ao JCP / Oracle para verificação e são informações classificadas. Em resumo, todo fornecedor que pega o código-fonte do OpenJDK e cria a versão gera outra construção JDK separada.

Portanto, sem mais delongas, recomendamos que você se familiarize com os seguintes JDKs prontos para uso:
Oracle JDK
Este é o principal provedor do Java 11 (a liberação já ocorreu). Esta é uma versão comercial com suporte pago. Pode ser baixado gratuitamente e usado apenas diretamente para o desenvolvimento. Você não pode usá-lo na produção sem pagar o Oracle (portanto, para muitos que não estão interessados em licenciar, isso é uma armadilha). A Oracle planeja fornecer suporte pago até 2026 e além. Diferentemente do passado, a montagem do Oracle JDK não é "melhor" que o OpenJDK (desde que ambos estejam no mesmo nível de patch de segurança).
Compilação do Oracle OpenJDK
Existem versões gratuitas sem marca do OpenJDK distribuídas sob a GPL com a extensão de caminho de classe (adequado para uso comercial). Essas versões de compilação estão disponíveis apenas por 6 meses após o lançamento. Espera-se que o Java 11 libere a versão 11.0.0 do Java e dois patches de segurança, 11.0.1 e 11.0.2. Para continuar usando a versão do OpenJDK e seus patches da Oracle, você deve atualizar para o Java 12 o mais tardar um mês após o lançamento. Observe que o procedimento para fornecer patches de segurança é diferente do procedimento para fornecer suporte, que inclui pagamento pelo processamento de relatórios de erros.
AdoptOpenJDK
Essas também são compilações gratuitas e sem marca do OpenJDK distribuídas sob a GPL com a Extensão de caminho de classe. Diferentemente das compilações do OpenJDK da Oracle, essas versões da compilação durarão mais tempo para versões principais, como Java 11. As versões do Java 11 serão lançadas por 4 anos, um ano após o próximo grande lançamento. O AdoptOpenJDK é orientado para a comunidade. Enquanto outras equipes criam e publicam correções de segurança para o repositório OpenJDK original, elas lançam compilações. Tanto a IBM quanto a Red Hat indicaram que pretendem liberar esses patches.
AdoptOpenJDK OpenJ9
Além das compilações padrão do OpenJDK, o AdoptOpenJDK também fornecerá versões com o OpenJ9 em vez do HotSpot. O OpenJ9 era originalmente uma IBM JVM, mas o OpenJ9 agora é de código aberto. E, a propósito, essa opção é a mais digna de estudo.
Red Hat OpenJDK
A Red Hat fornece versões de compilação do OpenJDK no Red Hat Enterprise Linux (RHEL), um produto comercial com suporte pago. A Red Hat faz um bom trabalho de correções de segurança no OpenJDK. No passado, a Red Hat era responsável pelas atualizações de segurança Java 6 e 7. A compilação Red Hat é mais integrada ao sistema operacional, portanto, não pode ser chamada de compilação OpenJDK típica (não há JDK de usuário final).
Azul zulu
O Zulu é uma versão com marca do OpenJDK com suporte comercial pago. Além disso, embora a Azul forneça gratuitamente alguns itens do Zulu através da Comunidade Zulu, eles não têm nenhuma obrigação especial de disponibilizar essas montagens. A Azul possui um plano de suporte ao Zulu bastante amplo, incluindo suporte para Java 9, 13 e 15 , diferente de outros fornecedores.
Amazon corretto
Esta é a mais nova de todas as opções descritas. Corretto é uma versão gratuita do OpenJDK build, com suporte a longo prazo, passando pelo TCK. É distribuído sob condições de licenciamento padrão para todas as versões do OpenJDK: GPL + CE. A Amazon criará seus próprios patches e lançará o Corretto na AWS, para que seja usado de maneira bastante ativa (e já adicionada a alguns produtos). O suporte ao Java 8 está planejado pelo menos até junho de 2023.
No processo de conversão do OpenJDK original em diferentes versões da montagem, o fabricante pode adicionar vários utilitários ou marcar o produto se isso não impedir a certificação (TCK). Por exemplo, você não pode adicionar um novo método público à API ou a novos recursos de idioma.
Existem outras implementações do JDK, como IBM e SAPMachine. No entanto, essas versões do assembly não são usadas com tanta frequência, portanto não são mencionadas neste artigo. Mais informações podem ser encontradas aqui e aqui .
Conclusão
Pessoalmente, não vejo um problema específico na presença de várias versões do JDK, pois todas elas precisam ser certificadas (TCK). O que realmente vale a pena se preocupar é o uso de um dos JDKs proprietários e uma versão gratuita do assembly da Oracle, para evitar dores de cabeça no futuro. Se você usar apenas funções básicas (por exemplo, sua empresa não depende particularmente de atualizações de segurança), o OpenJDK builds da Oracle (NOT OracleJDK) será mais adequado para você, porque eles são atualizados constantemente (dentro de 6 meses após o lançamento) e você pode usar o JDK na produção sem problemas. Se sua empresa usa serviços em nuvem (ou com a AWS), o AWS Corretto, que já é utilizável no Amazon Linux e Docker , é uma boa opção.