Ontem, uma tradução da postagem “Não caia na armadilha do uso do Oracle JDK 11” foi publicada no Habré, seguida de uma discussão sobre “Java pago”, mas nem tudo é tão assustador quanto parece à primeira vista - abaixo está a tradução da publicação do blog da Oracle com a posição oficial de licenciamento e distribuição JDK versões 11+.Sumário
A partir do Java 11, a Oracle lançará o JDK sob a
GNU General Public License v2, com a Classpath Exception (GPLv2 + CPE) e sob uma licença comercial para aqueles que usam o Oracle JDK como parte dos produtos ou serviços Oracle ou que não desejam usar o código aberto software. Essa combinação de licença do sistema operacional e comercial substitui a antiga
BCL (Oracle Binary Code License), que consiste em termos de uso comercial e gratuito.
Os conjuntos separados serão fornecidos para cada licença, mas esses conjuntos serão
funcionalmente idênticos , exceto por algumas diferenças estéticas e diferenças na maneira como os binários são empacotados, descritos em detalhes abaixo.
De BCL para GPL
A licença BCL para Oracle Java SE é usada para licenciar tecnologias Oracle Java SE há mais de 10 anos. Sob certas condições, a BCL permite o uso sem royalties. Para simplificar o trabalho adicional, a partir do Java 9, a Oracle começou a fornecer assemblies OpenJDK sob a licença do SO usada pela plataforma Linux
(o kernel do Linux é distribuído sob a licença GNU GPLv2) . Se você está acostumado a usar os binários do Oracle Java SE de graça, basta continuar fazendo isso com os binários do OpenJDK disponíveis em jdk.java.net. Se você está acostumado a usar os binários Oracle Java SE como parte dos produtos ou serviços comerciais da Oracle, poderá continuar recebendo as versões do Oracle JDK por meio do
My Oracle Support (MOS) ou em outro local.
Idêntica funcionalmente e intercambiável ...
O Oracle JDK licenciado pela BCL historicamente continha "recursos comerciais" que não estavam disponíveis nas compilações do OpenJDK. Conforme prometido, no ano passado, a Oracle adicionou esses recursos ao OpenJDK, incluindo:
Portanto, a partir do Java 11 e posterior, os conjuntos Oracle JDK e OpenJDK serão essencialmente idênticos.
... mas com algumas diferenças cosméticas e de embalagem
Ainda existe um pequeno número de diferenças, algumas intencionais e cosméticas, e outras exigem apenas mais tempo para discutir com os colaboradores do OpenJDK.
- O Oracle JDK 11 exibe um aviso ao usar a opção
-XX:+UnlockCommercialFeatures
, enquanto no OpenJDK essa opção resultará em erro. Essa opção nunca fez parte do OpenJDK, portanto, não faz sentido adicioná-la, pois não há recursos comerciais no OpenJDK. Essa diferença permanece para facilitar para os usuários do Oralce JDK 10 ou anterior o upgrade para o Oracle JDK 11 ou posterior. - O Oracle JDK 11 pode ser configurado para fornecer dados de log ao Advanced Management Console , um produto Oracle comercial separado. Trabalharemos com outros colaboradores do OpenJDK na necessidade de fornecer esses dados e seus benefícios no OpenJDK em versões futuras. Essa diferença permanece principalmente para preservar a experiência adquirida pelos clientes da Oracle.
- O
javac --release
se comporta de maneira diferente no Java 9 e Java 10, porque nessas versões do Oracle JDK contém alguns componentes adicionais que não faziam parte das versõ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 distinção permanece para manter a compatibilidade em alguns casos herdados. Agora, esses módulos estão disponíveis separadamente como parte do OpenJFX ou estão presentes no OpenJDK e no Oracle JDK, porque eram recursos comerciais que a Oracle adicionou ao OpenJDK ou foram removidos do Oracle JDK 11 (por exemplo, JNLP). - A saída dos
java -fullversion
java --version
e java -fullversion
será diferente entre as versões do Oracle JDK e do OpenJDK, para que as equipes de suporte possam diagnosticar quaisquer problemas que surgirem. Em particular, a execução do java --version
com uma compilação do Oracle JDK 11 produzirá:
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 com o 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 assinassem com um certificado conhecido. A criptografia no OpenJDK possui uma interface aberta, o que significa que não há restrição no provedor de criptografia usado. O Oracle JDK 11 continuará a exigir uma assinatura válida e os assemblies do OpenJDK continuarão a permitir o uso de um provedor de criptografia de terceiros, com uma assinatura válida e sem uma assinatura.
- O Oracle JDK 11 continuará incluindo instaladores, marcas e JREs para compatibilidade com aplicativos de desktop herdados. Agora, os assemblies do OpenJDK estão disponíveis como arquivos zip e tar.gz, enquanto formatos alternativos para distribuição estão sendo considerados.
Como os chamamos?
Idealmente, poderíamos referenciar todos os assemblies do Oracle JDK como "Oracle JDKs", sob a GPL ou sob uma licença comercial, dependendo da sua situação. No entanto, por razões históricas, embora haja pequenas diferenças, nós as referiremos separadamente: OpenJDK e Oracle JDK.