O Java começou o ano com o pé direito. No início deste mês de Março, a Oracle lançou a versão 10 da linguagem, dando início a seu novo cronograma de releases à curto prazo. De acordo com o novo cronograma, teremos uma nova versão a cada seis meses. Além destes lançamentos mais curtos, a cada três anos, haverá um lançamento de uma versão LTS (Long-term support). O próximo lançamento do LTS é o Java 11, que deve sair em setembro deste ano.

Neste artigo, daremos uma olhada nas melhorias trazidas nesta nova versão. Você notará que pouca coisa está relacionada a maneira como desenvolvemos com a linguagem, mas sim com a sua performance por debaixo dos panos.


Inferência de tipos para variáveis locais (JEP 286)

Esta talvez seja a novidade mais interessante. Quando estamos trabalhando com o Java, não é difícil cair em situações bem parecidas com esta:

URL url = new URL("http://codeprestige.com.br/");

O que acontece é que precisamos definir o tipo da variável e então chamar o construtor desta classe, o que resulta em um código deste tipo. A situação fica muito pior quando temos classes com nomes gigantes. No entanto, agora podemos utilizar o var na declaração de variáveis locais, pois o Java irá inferir este tipo “automagicamente”.

var url = new URL("http://codeprestige.com.br/");

Bem bacana, né? Só é preciso lembrar que a especificação diz claramente que só é possível utilizar esta funcionalidade para variáveis locais com inicializadores. Na prática, isso significa que não podemos fazer isso:

var url;
url = new URL("http://codeprestige.com.br/");

Se quiser saber um pouco mais, o Mateus Malaquias escreveu um artigo especificamente para explicar esta nova funcionalidade, confere lá.

Releases baseados em tempo (JEP 322)

Uma das grandes dificuldades do Java era o tempo que demorava para termos novas funcionalidades. O JavaScript sofria o mesmo problema há alguns anos atrás e o Java está caminhando para a mesma solução: releases baseados em tempo.

Falando em JavaScript, já conhece o nosso curso de ECMAScript 6?

O que isso significa? Na prática quer dizer que a cada seis meses uma nova versão do Java será lançada com as funcionalidades que estiverem prontas até então. Há muita discussão sobre este tópico: muitos defendem a velocidade dos releases enquanto outros são mais conservadores. Mas pelo menos por enquanto, o Java seguirá este novo cronograma:

Corre Java!

Garbage-Collector Interface (JEP 304)

Esta funcionalidade aumenta o isolamento do código de diferentes GCs (Garbage Collector) através de uma nova interface. Na prática, isso significa que agora é muito mais fácil excluir um GC de uma compilação do JDK, além de facilitar a inclusão de um novo GC sem afetar o código já existente.

Parallel Full GC para G1 (JEP 307)

O G1 (Garbage-first collector) foi feito o GC padrão para a JVM, que foi projetado para evitar o chamado Full GC (processo em que ele limpa todo o espaço da memória Heap). Mas quando as coletas simultâneas não conseguiam recuperar a memória com rapidez suficiente, acabavam caindo em um Full GC, e isso criava um problema de performance.

Essa alteração paralelizará o algoritmo completo de GC, de modo que, no evento improvável de um G1 Full GC, o mesmo número de threads possa ser usado nas coletas simultâneas para melhorar o desempenho geral.

Alocação da Heap em dispositivos de memória alternativos (JEP 316)

Agora é possível fazer com que a HotSpot VM aloque o Heap em um dispositivo de memória alternativo, especificado pelo usuário. Por exemplo, esse recurso torna possível designar processos com prioridade mais baixa para usar a memória NV-DIMM e, em vez disso, alocar apenas os processos de prioridade mais alta para a DRAM em um ambiente com várias JVMs.

Remoção da ferramenta de geração de cabeçalho nativo (JEP 313)

Agora não temos mais a ferramenta javah do JDK, uma ferramenta separada para gerar arquivos de cabeçalho ao compilar o código JNI (Java Native Interface), já que isso pode ser feito através do javac.

Compilador JIT experimental baseado em Java (JEP 317)

Esta funcionalidade permite habilitar o compilador JIT (Just in Time) experimental baseado em Java, o Graal, para ser usado como um compilador JIT na plataforma Linux de arquitetura 64x. É possível fazer isso com os seguintes atributos:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

No entanto, esta é uma funcionalidade ainda em estágio experimental, o que significa que não deve de maneira alguma ser usada em ambientes de produção.

Consolidar os repositórios do JDK em um repositório único (JEP 296)

A questão aqui foi combinar os numerosos repositórios do JDK em um único repositório, por questão de organização e gestão do código.

Conclusão

É verdade que há tempos o Java não é mais a linguagem queridinha da comunidade de desenvolvedores(as). Linguagens como o JavaScript e o Python ocupam as mentes dos(as) programadores(as), principalmente dos mais jovens. Mas com um novo ciclo de atualizações, a linguagem tem tudo para conquistar sua antiga fama.

E você? O que achou disso tudo? Acredita que o Java tem um futuro promissor pela frente? Comente abaixo!

Referências


Gostou? Recomende 👏 este artigo e acompanhe nossa publicação para não perder os próximos conteúdos!

Siga nossa publicação e não perca os próximos artigos! http://www.codeprestige.com.brFacebook, Twitter, Youtube

Siga o autor deste artigo e troque uma ideia com ele! http://www.diegopinho.com.br • Twitter, LinkedIn


Aprenda mais com nossos cursos de programação online!

ECMAScript 6ECMAScript 7 e 8React 16VS CodeMais

Code Prestige

Artigos, notícias e dicas sobre o melhor da tecnologia

Diego Martins de Pinho

Written by

Desenvolvedor de Software, Fundador da CodePrestige e autor do livro ECMAScript 6 - Entre de cabeça no futuro do JavaScript

Code Prestige

Artigos, notícias e dicas sobre o melhor da tecnologia

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade