A Oracle anunciou o lançamento do Java 16, que chegou pronto para reforçar a segurança e o suporte ARM. Confira os detalhes dessa atualização.
A Oracle anunciou o lançamento do Java 16 (ou melhor, JDK 16), a versão mais recente da tecnologia que dominou a computação por grande parte deste século e cujo desenvolvimento acelerou há muito tempo, então agora vemos a cada ano mais do que uma nova versão principal do o kit de desenvolvimento.
Java 16 chegou pronto para reforçar a segurança e o suporte ARM
Desde a adoção da cadência de lançamento atual, cada nova versão do JDK inclui um número menor de novos recursos, embora isso não signifique que a introdução ou modificação de recursos importantes tenha parado.
O JDK 16 incorporou 1.887 correções, das quais 1.397 vêm de funcionários da Oracle e 500 de desenvolvedores individuais ou pessoas que trabalham para outras organizações, das quais a Red Hat se destaca.
Java 16 inclui um total de 17 novos recursos, dos quais tentaremos destacar alguns dos mais importantes. A Java Enhancement Proposal (JEP) 371 permitiu o uso dos recursos da linguagem C++ 14 no código-fonte C++ do JDK, oferecendo também orientações sobre os recursos que podem ser usados no código HotSpot.
Com o JEP 369, os repositórios da comunidade do OpenJDK foram movidos para o GitHub, algo que poderia estar relacionado ao JEP 369, que cobria a migração do Mercurial para o Git como um gerenciador de versão.
Por meio do JEP 376, o processamento de threads dos pontos seguros para a fase simultânea foi movido no coletor de lixo ZGC para corrigir um gargalo mais do que palpável, enquanto os canais de soquete do domínio Unix (JEP 380), aos quais eles foram adicionados as APIs dos canais de soquete e servidor de soquete do pacote ‘java.nio.channels’, são responsáveis por adicionar suporte para todas as características dos soquetes de domínio Unix que são comuns nas principais plataformas Unix e Windows.
Java 16 também é responsável por expandir o número de plataformas suportadas, pois o JDK foi portado para Alpine Linux (JEP 386) e outras distribuições que usam ‘musl’ como a biblioteca C principal nas arquiteturas x86 e AArch64 (ARM64), além disso para cobrir oficialmente o Windows para AArch64 (JEP 388) para possivelmente antecipar a revolução que poderia vir no futuro devido ao aparecimento do Apple M1.
Outro aspecto interessante do JDK 16 é a introdução de um módulo de nível de “incubadora” que é responsável por fornecer a API Vector (JEP 338), que permite expressar os cálculos vetoriais que são gerados em tempo de execução para obter as instruções de hardware ideais no sistema em uso.
Finalmente, destacamos o fato de que todos os elementos internos do JDK (JEP 396) foram fortemente encapsulados, exceto por algumas APIs internas críticas, como ‘as sun.misc.Unsafe’.
A intenção com esta mudança é fortalecer a segurança e manutenção do JDK e incentivar os desenvolvedores a mudar o uso de internos por APIs padrão, facilitando assim as atualizações para futuras versões do Java.
Java é um projeto de licença dupla desde o lançamento da sétima versão principal porque a versão comercial do Oracle começou a ser baseada no OpenJDK.
Isso significa que não há necessidade de se preocupar com a mudança de licença que a empresa introduziu no Java 11, já que o OpenJDK é distribuído gratuitamente usando a licença GPLv2.
Enquanto a implementação de software livre de Java é bastante conhecida entre usuários Linux e está presente nos repositórios de todas ou quase todas as distribuições, aqueles que usam Windows ou macOS possivelmente começaram a conhecê-la por meio da iniciativa AdoptOpenJDK, que recebeu um forte impulso após comercial mudança de licença no Java 11.
Todos os detalhes sobre o Java 16 podem ser consultados na página correspondente no site do OpenJDK.
A versão de software livre do JDK pode ser obtida no site do Java (alternativamente e não oficialmente no AdoptOpenJDK, especialmente para usuários do Windows e macOS) e a versão comercial no site da Oracle.
Recomendamos o uso do OpenJDK se você tiver dúvidas sobre as restrições da versão comercial.