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

Guia da certificação Java SE 8 Programmer l

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.
IntroduçãoNeste guia dividido em 7 partes, você irá saber o que é cobrado na prova denominada “OCA Oracle Certified Associate Java SE 8 Programmer I. Exam 1Z0-808”, assim como os passos para se registrar no exame e fazer a prova. Algumas dicas para ser mais ágil no momento da prova.
Primeiro detalhe importante é que a prova não tem opção em português (existe uma opção em Espanhol). Então é bom se acostumar com a leitura em inglês para poder interpretar as questões. O site para marcar a prova também é todo em Inglês.
A prova tem 70 questões de múltipla escolha que devem ser respondidas em até 150 minutos. O candidato deve obter no mínimo 65% de acerto para receber a certificação.
Vou procurar dar algumas orientações para quem irá fazer a primeira certificação, assim como os que tem certificação em outras versões do Java e querem se atua…

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á as informações detalhadas do exame, tais co…

Certificação Java e carreira

Bate papo ao vivo sobre certificação Java e carreira. 

Venha conversar conosco e tirar suas dúvidas sobre carreira e Java. Certificação é suficiente? Como anda minha carreira? Será dia 15/08. Confere ai!
http://bit.ly/javacarreer