Com o JDK (Java Development Kit) 24 tendo acabado de atingir a disponibilidade geral, o Oracle deu uma prévia dos recursos Java definidos para chegar no futuro não muito distante, variando de boxe primitivo aprimorado a tipos de classe de valor restrito a nulo.
O Oracle, em 18 de março, citou cinco recursos que estavam sendo preparados para um próximo lançamento do Java, incluindo valores estáveis, uma API que foi oficialmente alvo do lançamento do JDK 25 previsto para setembro. Os outros dois recursos citados incluem classes de valor e objetos e criação de registros derivados. As propostas de aprimoramento do JDK (JEPs) foram publicadas para todos os cinco recursos, que agora estão em uma fase de visualização:
- O boxe primitivo aprimorado usa o boxe para suportar aprimoramentos de linguagem que tratam tipos primitivos mais parecidos com tipos de referência. Os objetivos incluem permitir o boxe de valores primitivos quando são usados como o “receptor” de um acesso de campo, invocação de métodos ou referência de método e permitir tipos de retorno não caixas ao substituir um método com um retorno do tipo referência. Além disso, os tipos primitivos seriam suportados como argumentos de tipo.
- Tipos de classe de valor restrito a nulo permitem o tipo de variável que armazena objetos de valor para excluir
null
permitindo o armazenamento mais compacto e outras otimizações no tempo de execução. Os tipos de classe de valor restrito nulo estão sendo visualizados como um recurso de idioma e um recurso de máquina virtual. - Classes e objetos de valor aprimoram a plataforma Java com objetos de valores, que são instâncias de classe que apenas têm
final
campos e falta identidade de objetos. Os objetivos incluem permitir que os desenvolvedores optem por um modelo de programação para valores simples, nos quais os objetos são distinguidos apenas por seus valores de campo. A proposta também maximizaria a liberdade da JVM para codificar valores simples de maneira a melhorar a pegada de memória, a localidade e a eficiência da coleta de lixo. - A criação de registros derivados aprimora o idioma com a capacidade de criar um novo registro a partir de um existente. Um objetivo é fornecer um meio conciso de criar novos valores de registro derivados dos valores de registro existentes. Outro objetivo é simplificar a declaração de classes de registro, eliminando a necessidade de fornecer métodos explícitos, que são o análogo imutável dos métodos de setter.
- Valores estáveis são objetos que mantêm dados imutáveis. Como os valores estáveis são tratados como constantes pela JVM, eles permitem as mesmas otimizações de desempenho que são ativadas declarando um campo
final
. Ao mesmo tempo, eles oferecem maior flexibilidade quanto ao momento da inicialização. Os objetivos da proposta incluem a melhoria da startup dos aplicativos Java, quebrando a inicialização monolítica do estado de aplicação.