A Oracle publicou sua última atualização trimestral para GraalVM, o Java JVM e JDK de código aberto implementado em Java que também oferece suporte a outros modos de execução e linguagens de programação de Python a R a Ruby.
Dado o lançamento do mês passado do Java 17 e OpenJDK 17, o GraalVM 21.3 adicionou suporte ao Java 17. Além disso, há muitas outras melhorias em seus vários front-ends de linguagem e outros componentes.
A Oracle lança GraalVM 21.3 com suporte a Java 17 e outros aprimoramentos. Alguns dos destaques do GraalVM 21.3 incluem:
- Suporte a Java 17 com compilações GraalVM baseadas em Oracle Java 17 e OpenJDK 17. OpenJDK 11 também continua a ser suportado enquanto OpenJDK 8 não é mais suportado por GraalVM.
- Novas otimizações e outras melhorias para o suporte de imagem nativa.
- O suporte a JavaScript de GraalVM implementou as propostas em torno de Error Cause e Import Assertions. O código JavaScript também se expandiu em sua integridade WebAssembly.
- O suporte a Ruby agora tem TRegex habilitado por padrão para correspondência muito mais rápida de expressões regulares. O código Ruby também possui suporte totalmente integrado para características de objetos estranhos.
- Mais do suporte à linguagem Python principal foi intrinsecado e otimizado para inicialização mais rápida e pegada menor. Também existe agora um back-end compatível com o binário para HPy 0.0.3, suporte para o módulo de multiprocessamento Python, suporte para o módulo ctypes e outras adições.
- O LLVM Runtime foi reestruturado para o LLVM toolchain versão 12.0.1.
- Várias otimizações de compilador e outros ajustes de desempenho limitados ao GraalVM Enterprise, incluindo melhor vetorização SIMD fora do código sequencial.
Downloads e mais detalhes sobre a edição comunitária do GraalVM 21.3 via GitHub.
Java 17 e OpenJDK 17
O Java 17 alcançou o status de disponibilidade em setembro com uma série de melhorias.
Entre as mudanças no OpenJDK 17 estão um novo pipeline de renderização macOS, porta macOS AArch64 para Apple Silicon, geradores de números pseudo-aleatórios aprimorados, descontinuando a API Java Applet antes de sua remoção completa, suporte a classes seladas, removendo o experimental antes do tempo (AOT) e compiladores just-in-time (JIT), a API Java Vector está em sua segunda fase de incubadora e filtros de desserialização específicos do contexto.
O novo pipeline de renderização do macOS está usando a API Metal da Apple devido à depreciação do OpenGL na plataforma. A implementação de classes e interfaces seladas do Java permite restringir as outras classes e interfaces que podem estendê-las ou implementá-las.
Os compiladores experimentais AOT e JIT estão sendo removidos devido ao pouco progresso neles, enquanto a interface da interface do compilador JVM de nível Java (JVMCI) ainda será mantida para versões construídas externamente do compilador. Enquanto isso, a API do miniaplicativo Java está sendo reprovada para remoção, visto que a maioria dos navegadores da web já cancelou o suporte a miniaplicativos Java.
A API Vector do Java é bastante empolgante e constrói o código inicial em Java 16. A API Vector do Java visa tornar mais fácil permitir o manuseio em tempo de execução e a geração de instrução de vetor ideal em arquiteturas de CPU para SSE, AVX, Arm NEON e outras instruções definir extensões.
O Java 17 é bastante notável por ser um lançamento de Long-Term Support (LTS), incluindo da Oracle.
Mais detalhes sobre o lançamento do Java 17 via o anúncio de lançamento e a página do projeto JDK17