Java SE é um kit de desenvolvimento de software usado para escrever applets e aplicativos com a linguagem de programação Java.
Após seis meses de desenvolvimento, A Oracle anunciou o lançamento de a nova versão da plataforma JavaSE 20 (Java Platform, Standard Edition 20), que usa o projeto de código aberto OpenJDK como uma implementação de referência.
Nesta nova versão lançada do Java SE 20, com exceção da remoção de alguns recursos obsoletos, o Java SE 20 mantém a compatibilidade com versões anteriores da plataforma Java: a maioria dos projetos Java escritos anteriormente continuarão a funcionar sem alterações quando executados com a nova versão.
Principais novos recursos do Java SE 20
JavaSE 20 é classificado como uma versão de suporte regular, com atualizações a serem lançadas antes da próxima versão. A ramificação de suporte de longo prazo (LTS) deve ser o Java SE 17, que receberá atualizações até 2029.
Vale lembrar que a partir do lançamento do Java 10, o projeto mudou para um novo processo de desenvolvimento, o que implica em um ciclo mais curto para a formação de novos lançamentos. Novas funcionalidades agora estão sendo desenvolvidas em uma ramificação mestre constantemente atualizada, incorporando alterações já feitas e bifurcando a cada seis meses para estabilizar novas versões.
Das inovações do Java 20 destaca-se que foi proposto suporte preliminar para valores com escopo permite o compartilhamento de dados imutáveis em threads e troca de dados eficiente entre threads filhos (os valores são herdados).
Valores Escoposestá sendo desenvolvido para substituir o mecanismo de variáveis locais de thread e são mais eficientes ao usar um grande número de threads virtuais (milhares e milhões de threads). A principal diferença entre os Scoped Values e as variáveis locais da thread é que os Scoped Values são escritos uma vez, não podem ser alterados posteriormente e permanecem disponíveis apenas durante a execução da thread.
Outra das mudanças que se apresenta nesta nova versão do Java SE 20 é que uma segunda implementação provisória de padrões de registro foi adicionada, que estende a capacidade de correspondência de padrões do Java 16 para analisar valores de classes do tipo record. Por exemplo:
Além disso, destaca-se também que adicionou uma quarta implementação preliminar de correspondência de padrões em expressões de "switch", que permite que as tags "case" não usem valores exatos, mas modelos flexíveis que cobrem vários valores de uma só vez, o que anteriormente exigia expressões de string complicadas como "if...else" » .
Além disso, podemos encontrar nesta nova versão, que adicionou um implementação do segundo rascunho da API FFM (Foreign Function & Memory), que permite orquestrar a interação de programas Java com código e dados externos chamando funções de bibliotecas externas e acessando a memória fora da JVM.
Por outro lado, vale a pena notar que uma segunda implementação preliminar de threads virtuais, que são threads leves que simplificam muito a escrita e a manutenção de aplicativos multithread de alto desempenho, foi adicionada.
Uma segunda variante da API experimental de paralelismo estruturado foi adicionada para simplificar o desenvolvimento de aplicativos multiencadeados, tratando várias tarefas executadas em diferentes encadeamentos como uma única unidade.
Adicionou um quinta implementação preliminar da API Vector que fornece funções para cálculos vetoriais que são executados usando as instruções vetoriais dos processadores x86_64 e AArch64 e permite aplicar operações Simultaneous Multi-Value (SIMD).
Ao contrário dos recursos fornecidos no compilador HotSpot JIT para vetorização automática de operações escalares, a nova API permite controlar explicitamente a vetorização para processamento paralelo de dados.
Finalmente, para os interessados nesta nova versão, devem saber que o compilações instaláveis do Java SE 20 (JDK, JRE e Server JRE) estão prontos para Linux (x86_64, AArch64), Windows (x86_64) e macOS (x86_64, AArch64).
A implementação de referência do Java 20 desenvolvida pelo projeto OpenJDK, totalmente de código aberto sob a licença GPLv2 com exceções GNU ClassPath que permitem vinculação dinâmica a produtos comerciais.