Pular para o conteúdo principal

Mudanças no Java. JDK 9, Java EE 8, OpenJDK e Spring

Mudanças no Java. JDK 9, Java EE 8, OpenJDK e Spring



Olá, começamos 2018 com muitas novidades lançadas ainda em 2017. JDK 9, JavaEE 8, sendo este transferido para a eclipse foundation com o nome de EE4J. Spring 5 e muitas outras novidades.

Então em seus próximos projetos, é bom levar em consideração todos estes fatores.

Falando especificamente em JDK, faremos uma analise de quanto ainda vale se utilizar do JDK da Oracle ou partir para o uso do OpenJDK. Se você acompanha, nos últimos anos a Oracle vem se "esforçando" para deixar o Java mais open source e focando na parte comercial. Dentre alguns exemplos, podemos citar: Netbeans sendo doado para o Apache, certificações Java que exigem cursos oficiais da Oracle, desenvolvimento de ferramentas e suporte estendido ao JDK (JDK 8 da Oracle não terá mais updates públicos a partir de janeiro de 2019). Ferramentas de monitoramento tais como o Mission Control e Flight Recorder, são de uso comercial.

Se você utiliza o JDK da Oracle desde a versão 6, provavelmente não será uma tarefa muito simples utilizar o OpenJDK devido alguns pacotes proprietários. O OpenJDK foi liberado oficialmente na versão 7 do Java, tendo como base inicial a versão 6 e 7. Embora o OpenJDK 6 tenha ficado em um projeto separado.

A Sun iniciou este processo em 2016 e a primeira versão do OpenJDK foi liberada em maio de 2007 (JDK 7)


Implementações do OpenJDK

Como o OpenJDK é a implementação referência e de código aberto, qualquer pessoa pode utilizar os códigos para criar sua própria JVM. Algumas implementações conhecidas:
Diferenças entre OpenJDK e Oracle JDK

Diferente do Oracle JDK, o OpenJDK não possui um instalador do tipo wizard para facilitar a instalação no Windows por exemplo. Basicamente você vai descompactar o OpenJDK em uma pasta e colocar o diretório bin no path. Geralmente fazemos isso através da variável de ambiente JAVA_HOME.

Download Oracle JDK
http://www.oracle.com/technetwork/java/javase/downloads/

Download OpenJDK
http://jdk.java.net/9/

Após a instalação de ambos, podemos comparar as duas versões:

Digite o comando abaixo no console:

java -version

java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

Até ai tudo bem, ambos JDKs estão na mesma versão e build.

Compatibilidade com JavaFX

Se você tem uma aplicação JavaFX, pode ter problemas em rodar ela com o OpenJDK e precisará instalar um pacote complementar chamado OpenJFX

Diferenças na API

Aqui um ponto importante a se considerar. A API do Java possui diferenças em suas bibliotecas. Alguns pacotes adicionais que não existem no OpenJDK que você pode estar usando com o JDK Oracle.

Pacotes somente do JDK Oracle
jdk.packager.services
jdk.packager
javafx.web 
javafx.swing 
javafx.media 
javafx.graphics 
javafx.fxml 
javafx.controls 
javafx.base


Se engana quem acha que não vai encontrar pacotes com o nomes "com.sun" ou "sun.*". Pois bem, estão todos la. Não se preocupe em varrer o seu código em busca de imports destes pacotes, pois continuarão funcionando com o OpenJDK.

Diferenças nos binários

Existem três grandes diferenças entre os binários OpenJDK  e binários Oracle a partir do OpenJDK 8 (Java 8).
  1. Fonte rasteriser (Freetype vs. T2K)
  2. Gerenciamento de cores (o OpenJDK usa o LCMS e o Oracle usa o Kodak CMM)
  3. Renderizador gráfico (pisces vs. ductus)
Para o Java 9, existem duas diferenças, uma vez que o renderizador gráfico Marlin foi adotado no OpenJDK.
  1. Fonte rasteriser (Freetype vs. T2K)
  2. Gerenciamento de cores (o OpenJDK usa o LCMS e o Oracle usa o Kodak CMM)

Parâmetros da JVM

Os parâmetros são quase iguais para as duas VM's. Para ver a lista completa, use:


java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockCommercialFeatures -XX:+PrintFlagsFinal
A partir do JDK 8u131, a única diferença está nas seguintes flags (ausentes no OpenJDK):


 bool EnableResourceManagementTLABCache        = true         {product}
 bool EnableSharedLookupCache                  = true         {product}
 bool FlightRecorder                           = false        {commercial}
ccstr FlightRecorderOptions                    =              {product}
 bool LogCommercialFeatures                    = false        {product}
ccstr MemoryRestriction                        = none         {commercial}
 bool ResourceManagement                       = false        {commercial}
 intx ResourceManagementSampleInterval         = -1           {commercial}
ccstr StartFlightRecording                     =              {commercial}
 bool TraceSharedLookupCache                   = false        {product}
 bool UnlockCommercialFeatures                 = true         {commercial}
 bool UseAppCDS                                = false        {commercial}
Outras distribuições do OpenJDK

https://www.azul.com/downloads/zulu/zulu-windows/

https://developers.redhat.com/products/openjdk/download/


https://github.com/JetBrains/jdk8u


Conclusão

Cada vez mais o OpenJDK vem ganhando força, deixando as distribuições comerciais com o principal propósito de dar suporte a versões que não receberão mais patchs de segurança públicas.

Para entender a respeito do novo modelo de release do Java, acesse o link abaixo:


Comentários

Postagens mais visitadas deste blog

Certificação Java 11 - O que mudou

Certificação Java 11 - O que mudou A Oracle liberou recentemente uma atualização das suas certificações Java para atender a nova versão Java 11  LTS (Long Term Support) . Mas o que muda em relação a certificação Java 8? Preciso me atualizar? Por onde começo?  Neste post, vamos responder estas e outras questões sobre essa nova série de certificações. Caso você não tenha acompanhado a série sobre certificação, recomendo a leitura dos posts anteriores: https://www.guiadojava.com.br/2018/06/guia-da-certificacao-java-se-8.html Também temos um bate papo com os maiores especialistas de Java do mercado. Assista o replay aqui: https://events.genndi.com/replay/169105139238448348/23a5b3a7b0/0/83729443273C Nomenclatura e requisitos A partir de agora, você não receberá o certificado se fizer apenas a primeira prova, como era no Java 8 (1Z0-808 - Java SE 8 Programmer I). Você terá que fazer duas provas para obter o certificado " Oracle Certified Professional: Java SE 11 Dev

Java 15 - Novidades (ou não)

Java 15 - Novidades (ou não) O Java 15 já está em fase de testes com as suas features fechadas (Rampdown Phase One). Isso quer dizer que mais nenhuma feature será implementada. Teremos melhorias em funcionalidades já liberadas para testes e outras consolidadas agora nesta versão, mas nada de grandes mudanças. Porém é sempre bom ficar atualizado não é? Para acompanhar os builds e agenda da liberação, acesse esta página . Revisando o processo de versionamento Com o lançamento do  Java 9 em 2017 , o cronograma de lançamento do Java mudou, de um lançamento principal a cada  3 anos ou mais  para um lançamento a cada  seis meses . Um dos principais motivos dessa alteração foi oferecer aos desenvolvedores acesso mais rápido as melhorias contínuas. Os lançamentos ocorrem em  Março  e  Setembro  de cada ano. Ainda cabe um post específico para o modelo de versionamento para explicar sobre as versões LTS, versões intermediárias e funcionalidades " preview ". Para mais informações, veja

Guia da certificação Java SE 8 Programmer l - Parte 1: Conhecendo a certificação

Seja bem-vindo a série de postagens sobre a certificação Java. Como funciona, o que fazer para comprar, marcar o dia da prova e o principal, o que estudar. Para ver o índice da série e as datas das publicações, acesse este link Parte 1 – Conhecendo a certificação Nesta primeira parte, vamos navegar pelo site da Oracle Education e da Pearson VUE para conhecer como funciona a certificação e se ambientar. Ambos os site estão em Inglês e como já dito no índice da série, a prova não tem opção em português. Site da Oracle O site da Oracle não é um dos melhores em usabilidade. Então se procurar por certificação Java no Google, irá encontrar diversos cursos, livros e blogs falando a respeito da certificação menos o site da Oracle. Pois bem, abaixo o link direto para informações do exame 1Z0-808 - Java SE 8 Programmer I https://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-808 Neste link você encontrará