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.