Após seis meses de desenvolvimento, A Oracle anunciou o lançamento de a nova versão de JavaSE 15 como uma implementação de referência que usa um projeto OpenJDK de código aberto.
JavaSE 15 é classificado como uma versão de suporte regular, com atualizações a serem lançadas até a próxima versão. Java SE 11 deve ser usado como perna de apoio de longo prazo (LTS) e as atualizações serão lançadas até 2026. O ramo anterior do Java 8 LTS será compatível até dezembro de 2020. O próximo lançamento do LTS está agendado para setembro de 2021.
Principais novos recursos do Java SE 15
Nesta nova versão, uma função de suporte para a assinatura EdDSA RFC 8032 é apresentada, a implementação proposta de EdDSA não depende de plataformas de hardware, é protegido contra ataques de canal lateral (é garantido um tempo constante de todos os cálculos) e supera a implementação ECDSA existente escrita em C em termos de desempenho, com o mesmo nível de proteção.
Outra mudança é o suporte experimental para classes e interfaces seladas que eles não podem ser usados por outras classes e interfaces para herdar, estender ou desimplantar.
Também destacado nesta nova versão do Java SE 15 é o suporte para classes ocultas que não podem ser usadas diretamente pelo bytecode de outras classes. O principal uso de classes ocultas é para estruturas que geram classes dinamicamente em tempo de execução e as usam indiretamente por meio de reflexão.
O coletor de lixo ZGC (Z Coletor de Lixo) foi estabilizado e reconhecido como pronto para uso geral. O ZGC opera em modo passivo para minimizar a latência devido à coleta de lixo tanto quanto possível (o tempo de inatividade ao usar o ZGC não excede 10 ms) e pode funcionar com heaps pequenos e grandes, variando em tamanho de várias centenas de megabytes a muitos terabytes.
O coletor de lixo Shenandoah se estabilizou e foi reconhecido como onipresente. Shenandoah é desenvolvido pela Red Hat e destaca-se pela utilização de um algoritmo que reduz os tempos de pausa durante a coleta de lixo ao limpar em paralelo com a execução de aplicativos Java.
Além disso também o suporte para blocos de texto foi estabilizado e digitados no idioma: a nova forma de strings literais Eles permitem que você inclua dados de texto de várias linhas em seu código-fonte sem usar caracteres de escape e preservando a formatação do texto original no bloco.
Por outro lado, A API DatagramSocket legada foi reformulada como as antigas implementações java.net.DatagramSocket e java.net.MulticastSocket foram substituídas por uma implementação moderna que é mais fácil de depurar e manter e é compatível com threads virtuais desenvolvidos pelo projeto Loom.
No caso de uma possível violação de compatibilidade com o código existente, a implementação antiga não foi removida e pode ser ativada usando a opção jdk.net.usePlainDatagramSocketImpl.
Além disso, uma segunda implementação experimental de casamento de padrões é proposta no operador "instanceof", que permite definir imediatamente uma variável local para acessar o valor verificado.
Finalmente, uma segunda implementação experimental da palavra-chave «record» também é destacada, que fornece uma forma compacta para definições de classe, evitando a necessidade de definir explicitamente vários métodos de baixo nível, como equals (), hashCode () e toString (), nos casos em que os dados são armazenados apenas em campos.
Finalmente outras mudanças que se destacam:
- Um segundo rascunho de uma API de acesso à memória externa é proposto
- A técnica de otimização de bloqueio polarizado usada pela JVM HotSpot para reduzir a sobrecarga de bloqueio foi desativada e reprovada.
- Ativação RMI do mecanismo declarado obsoleto, que será removido em uma versão futura.
- Removido o mecanismo Nashorn JavaScript, que estava obsoleto no Java SE 11.
- Portas removidas para o Solaris OS e processadores SPARC (Solaris / SPARC, Solaris / x64 e Linux / SPARC).
Si você quer saber mais sobre isso sobre esta nova versão. Você pode verificar os detalhes no link a seguir.