O Java Development Kit (JDK) 23, a próxima versão planejada do Java padrão, está pronto e em execução, com dois recursos agora agendados para lançamento.
Previsto para 19 de setembro, o JDK 23 acaba de adicionar uma segunda prévia de uma API de arquivo de classe, fornecendo uma API padrão para analisar, gerar e transformar arquivos de classe Java. Este recurso foi previamente visualizado no JDK 22, que foi lançado em 19 de março. Anteriormente previsto para o JDK 23 havia uma visualização de tipos primitivos em padrões, instanceof
e switch
.
A API de arquivo de classe destina-se a fornecer uma API para processar arquivos de classe que rastreia o formato de arquivo de classe definido pela especificação Java Virtual Machine. Também permitiria que os componentes do JDK migrassem para a API padrão e, eventualmente, removessem a cópia interna do JDK da biblioteca ASM de terceiros. A API do arquivo de classe adicionaria refinamentos, incluindo a simplificação do CodeBuilder
classe, que possui métodos de fábrica para instruções de bytecode, incluindo fábricas de baixo nível, fábricas de nível médio e construtores de alto nível para blocos básicos.
Para o JDK 23, os construtores Java removeram métodos de nível médio que duplicavam métodos de baixo nível ou eram usados com pouca frequência, enquanto renomeavam os métodos de nível médio restantes para melhorar a usabilidade. Eles também refinaram o ClassSignature
modelo de classe, que foi aprimorado para modelar as assinaturas genéricas de superclasses e superinterfaces com mais precisão. De acordo com a proposta do OpenJDK por trás desse recurso, a plataforma Java deve definir e implementar uma API de arquivo de classe padrão que evolui junto com o formato do arquivo de classe, que pode evoluir a cada seis meses.
Citado anteriormente para inclusão no JDK 23 está outro recurso de visualização, tipos primitivos em padrões, instanceof
e switch
. Este recurso melhoraria a correspondência de padrões, permitindo padrões de tipos primitivos em todos os contextos de padrões e estenderia instanceof
e switch
para trabalhar com todos os tipos primitivos. Os objetivos incluem permitir padrões de tipo para todos os tipos (primitivos ou de referência), permitir padrões de tipos primitivos em contextos aninhados e de nível superior e fornecer construções fáceis de usar que eliminam o risco de perda de informações devido a conversões inseguras. Outros objetivos incluem alinhar tipos de padrões com instanceof
alinhando instanceof
com fundição segura e permitindo switch
para processar valores de qualquer tipo primitivo.
Vários outros recursos visualizados no JDK 22 poderiam ser incluídos no JDK 23. Isso inclui declarações antes super(…)
, o que daria aos desenvolvedores maior liberdade para expressar o comportamento do construtor; modelos de strings, que facilitariam a expressão de strings que incluem valores computados em tempo de execução; coletores de fluxo, o que tornaria os pipelines de fluxo mais flexíveis e expressivos; valores com escopo definido, que permitiriam o compartilhamento de dados imutáveis dentro e entre threads; e classes declaradas implicitamente e métodos principais de instância, o que tornaria mais fácil para programadores iniciantes escreverem programas sem a necessidade de entender os recursos da linguagem projetados para programas grandes.
Uma API vetorial, que expressaria cálculos vetoriais que seriam compilados de forma confiável em tempo de execução para instruções vetoriais ideais em arquiteturas suportadas, é outro recurso potencial no JDK 23. Uma API vetorial estava em um sétimo estágio de incubadora no JDK 22. Criação de registros derivados e um hot proposta de heap de código, que reduziria o tempo de execução de aplicações, também são possibilidades.
O administrador de Java, Oracle, também revelou planos para Java em 2024. A Oracle delineou melhorias que envolvem projetos OpenJDK que vão desde Amber, para desenvolver recursos menores e orientados à produtividade, até Babylon, para estender Java a modelos de programação estrangeiros, como GPUs, até Valhalla, para aumentando o modelo de objeto Java com objetos de valor para eliminar gargalos de desempenho de longa data.