Mostrando postagens com marcador Oracle JDK. Mostrar todas as postagens
Mostrando postagens com marcador Oracle JDK. Mostrar todas as postagens

quarta-feira, 8 de setembro de 2021

🔍 Lançamentos do Oracle JDK para Java 11 e Versões Posteriores

🔄 Resumo Executivo

A partir do Java 11, a Oracle fornecerá lançamentos do JDK sob a licença de código aberto GNU General Public License v2, com a Exceção de Classpath (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 que não desejam usar software de código aberto. Essa combinação de uso de uma licença de código aberto e uma licença comercial substitui a licença histórica "BCL", que tinha uma combinação de termos comerciais gratuitos e pagos.

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


📜 Da BCL para a GPL

A Binary Code License para tecnologias Oracle Java SE ("BCL") tem sido a licença principal para tecnologias Oracle Java SE por mais de uma década. A 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 compilações do OpenJDK com licença 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 Oracle Java SE gratuitamente, pode simplesmente continuar fazendo isso com as compilações OpenJDK da Oracle disponíveis em jdk.java.net. Se você está acostumado a obter binários Oracle Java SE como parte de um produto ou serviço comercial da Oracle, pode continuar a obter lançamentos do Oracle JDK por meio do My Oracle Support (MOS) e outros locais.


⚙️ Funcionalmente idênticos e intercambiáveis...

Historicamente, o JDK licenciado pela BCL da Oracle 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:

  • Java Flight Recorder
  • Java Mission Control
  • ZGC
  • AppCDS

A partir do Java 11 em diante, portanto, as compilações do Oracle JDK e do OpenJDK serão essencialmente idênticas.


🎨 ...ainda com algumas diferenças cosméticas e de empacotamento

Ainda restam um pequeno número de diferenças, algumas intencionais e cosméticas, e outras simplesmente porque é necessário mais tempo para discussão com os contribuidores do OpenJDK.

🚫 Opção -XX:+UnlockCommercialFeatures

O Oracle JDK 11 emite um aviso ao usar a opção

-XX:+UnlockCommercialFeatures
, enquanto nas compilações do OpenJDK esta opção resulta em um erro. Esta opção nunca fez parte do OpenJDK e não faria sentido adicioná-la agora, já que 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 posteriores.


📊 Console de Gerenciamento Avançado

O Oracle JDK 11 pode ser configurado para fornecer dados de log de uso para a ferramenta "Advanced Management Console", que é um produto comercial separado da Oracle. Trabalhar-se-á com outros contribuidores do OpenJDK para discutir como esses dados de uso podem ser úteis no OpenJDK em versões futuras, se é que serão. Essa diferença permanece principalmente para fornecer uma experiência consistente aos clientes da Oracle até que tais decisões sejam tomadas.


🎯 Comportamento do javac –release

O comando

javac –release
se comporta de maneira diferente para os destinos Java 9 e Java 10, pois nessas versões o Oracle JDK continha alguns módulos adicionais que não faziam parte dos lançamentos 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 legado. Esses módulos agora estão disponíveis separadamente como parte do OpenJFX, agora estão tanto no OpenJDK quanto 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).


ℹ️ Saída dos comandos java –version e java -fullversion

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, executar
java –version
com uma compilação do Oracle JDK 11 resulta em:

java 11 2018-09-25
Java(TM) SE Runtime Environment 18.9 (build 11+28)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)

E para uma compilação do OpenJDK 11:

openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

🔐 Provedores criptográficos de terceiros

O Oracle JDK sempre exigiu que os provedores criptográficos de terceiros fossem assinados por um certificado conhecido. A estrutura de criptografia no OpenJDK tem 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 um provedor de criptografia de terceiros com assinatura válida ou não assinado.


📦 Instaladores, marcação e empacotamento JRE

O Oracle JDK 11 continuará a incluir instaladores, marcação e empacotamento JRE para uma experiência consistente com usos legados de desktop. 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.


🏷️ Como devemos chamá-los?

Idealmente, simplesmente nos referiríamos a todas as compilações do Oracle JDK como "Oracle JDK", seja sob a GPL ou a licença comercial, dependendo da sua situação. No entanto, por razões históricas, enquanto as pequenas diferenças remanescentes existirem, nos referiremos a elas separadamente como compilações OpenJDK da Oracle e Oracle JDK.