Java 12: descubra o que entrou e saiu na nova versão

Foi anunciada a 12ª versão do Java, uma das tecnologias mais importantes na área de TI. Ela trouxe recursos bastante úteis para os desenvolvedores. (...)

Autor: Redação Impacta

Em 2019, foi anunciada a disponibilidade da 12ª versão do Java, uma das tecnologias mais importantes na área de TI. E foi por conta dessa importância que a Oracle optou por aumentar o ritmo de desenvolvimento da plataforma, de modo a aproximá-la das exigências de mercado e outros desenvolvimentos.

As novidades do Java 12 são diversas e, ainda que não se trate de uma versão LTS — o que implica em um menor tempo de suporte e manutenção —, ela trouxe recursos bastante úteis para os desenvolvedores.

Por conta dessas novidades, preparamos esse post em que explicaremos melhor quais foram as principais novidades e melhorias, além do que foi retirado na nova versão. Quer saber mais? Então continue a leitura e confira!

Novos métodos String

A proposta de aprimoramento do JDK nº 326 — a JEP 326 — inclui dois novos métodos no Java 12 para lidar com strings: o indent e o transform.

Indent

O indent é bastante intuitivo e, como seu nome deixa claro, aplica uma identificação — o espaçamento à esquerda — no texto de saída. Confira o exemplo a seguir:

captura java 3

Para o código acima, a saída será:

captura java 4

No exemplo de saída acima, foram adicionados 3 espaçamentos no lado esquerdo de cada linha, conforme passado como argumento do método.

Transform

Além disso, a Oracle implementou o método transform. Basicamente, ele recebe uma expressão lambda com uma string como parâmetro e retorna um objeto. Abaixo, temos um exemplo.
java 5

Nesse caso, a saída será:

captura java 6

Um outro exemplo de uso é na transformação de texto para caixa alta:

captura java 7

Ao adicionar esse trecho no exemplo de código mostrado, teremos a mesma saída, porém, com todos os caracteres maiúsculos.

Expressões switchs

A nova versão do Java conta com duas novidades nas expressões switch: introdução da case value -> sintaxe e a possibilidade de atribuição de uma expressão switch a uma variável. A primeira novidade torna as instruções break desnecessárias, enquanto a segunda permite que uma expressão switch seja utilizada como retorno de um método.

Nos exemplos a seguir, mostramos o antes e o depois dessa mudança.

Antes:

código java 1

Com a refatoração do Java 12:

captura java 8

Dessa forma, o código fica muito mais fácil de ler, sendo uma ótima alternativa ao switch tradicional.

Melhorias significativas no garbage collector G1

A versão 12 da JDK também trouxe melhorias para o garbage collector G1. Um dos objetivos dessa ferramenta é atender a meta de tempo de pausa para as coletas de lixo na memória RAM. Entretanto, há casos em que esse objetivo não é alcançado.

Grupos de coleta

Para que a meta do tempo de pausa fornecido pelo usuário seja alcançada, a JEP 344 faz com que o coletor se comporte de maneira diferente. Agora, a ferramenta aborta o processo de coleta e divide as regiões a serem coletadas em dois grupos: partes obrigatórias e opcionais.

Assim, se a meta de tempo de pausa não for alcançada de outra maneira, o coletor pode abortar a coleta da parte opcional.

Retorno automático da memória heap

Outro ponto que era problemático no G1 era a demora no retorno da memória utilizada na heap para o sistema operacional, visto que o G1 apenas fazia esse retorno ao realizar uma coleta completa ou durante um ciclo concorrente.

Essa forma de gerenciamento de memória se mostra uma desvantagem principalmente em ambientes de containers, em que os recursos são pagos pelo uso. Assim, um dos objetivos da atualização é o de solucionar essa questão ao permitir que a memória heap seja automaticamente devolvida para o sistema operacional assim que estiver ociosa.

Recursos removidos na JDK 12

Naturalmente, alguns recursos são removidos conforme uma plataforma é atualizada — seja pela implementação de técnicas mais eficazes ou simplesmente por se tratarem de recursos obsoletos. Considerando isso, algumas remoções foram feitas na versão 12 do Java e a seguir, listamos as principais delas.

Remoção da classe com.sun.awt.SecurityWarning

A classe com.sun.awt.SecurityWarning foi descontinuada e marcada como forRemoval=true na versão 11 do Java (JDK-8205588).

Assim, por não ser mais utilizada, foi removida neste release.

Remoção de métodos finalize nas classes de entrada e saída de arquivo

Os métodos finalize das classes FileInputStream e FileOutputStream foram descontinuados ainda na versão 9 do Java, mas estavam presentes na plataforma até a versão 12, na qual foram removidos.

Vale notar, nesse caso, que o java.lang.ref.Cleaner foi implementado no JDK 9 com o objetivo de fechar descritores de arquivos que não são mais acessíveis a partir das classes FileInputStream e FileOutputStream.

Remoção do finalize nas classes java.util.ZipFile/Inflator/Deflator

O método finalize também foi descontinuado nas classes java.util.ZipFile, java.util.Inflator, e java.util.Deflator da JDK 9 e sua implementação foi atualizada para evitar sua utilização até que na versão 12 foi oficialmente removido.

Assim, as subclasses que substituem o método finalize para executar a limpeza devem ser modificadas para usar mecanismos de limpeza alternativos.

Remoção do suporte aos sinalizadores -source, -target e -release do javac 6/1.6

De acordo com a política descrita na JEP 182 — a Política de Aposento das Opções javac -source e -target —, o suporte aos sinalizadores -source, -target e -release do javac 6/1.6 foi removido.

A importância dos cursos

A Oracle tem buscado aumentar o ritmo de desenvolvimento do Java para garantir a entrega de recursos testados e otimizados e que atendam às demandas do mercado.

Nesse sentido, nota-se que além da necessidade de dar atenção a questões como a metodologia ágil ideal, por exemplo, é importante observar o quanto a tecnologia tem crescido e a necessidade de as companhias estarem por dentro dessas novidades.

Para a carreira em desenvolvimento, é necessário que esses novos recursos sejam implementados em projetos de forma que se possa ter um desempenho de ponta nas aplicações desenvolvidas. Por conta disso, a realização de cursos é vista como de grande importância para profissionais que desejem estar atualizados em relação ao seu mercado.

Entendeu quais foram as novidades do Java 12? Quer continuar por dentro do que vem por aí? Então, não deixe de assinar a nossa newsletter para conhecer as novidades e tendências da área!

Deixe o seu comentário!

Não perca nenhum post!