Cabeçalhos de Objeto Compactos do Java se Tornam Recurso de Produto

2025-05-22

O JEP 519 promove o recurso experimental 'Cabeçalhos de Objeto Compactos' para um recurso de produto completo em Java. Inicialmente introduzido no JDK 24 para otimizar o layout do cabeçalho do objeto e melhorar o desempenho, ele passou por testes extensivos na Oracle e na Amazon, provando sua estabilidade e ganhos de desempenho. A flag `-XX:+UnlockExperimentalVMOptions` não é mais necessária para ativação. Expansões futuras para mais bits de cabeçalho de objeto são planejadas, com os Projetos Valhalla e Lilliput fornecendo soluções.

Leia mais
Desenvolvimento

Melhoria do tempo de inicialização do Java com o cache AOT

2025-05-11

Esta melhoria reduz significativamente o tempo de aquecimento de aplicativos Java coletando perfis de execução de métodos durante execuções de treinamento do aplicativo e armazenando-os no cache AOT. Na inicialização na produção, o compilador JIT pode usar imediatamente esses perfis para gerar código nativo, eliminando a espera pela coleta de perfis e resultando em inicialização e desempenho de pico mais rápidos. Essa técnica não requer alterações de código e é compatível com os comandos de criação de cache AOT existentes. Experimentos mostram uma redução de 19% no tempo de aquecimento para um programa de exemplo simples.

Leia mais
Desenvolvimento Cache AOT

Java irá fortalecer a imutabilidade de campos finais

2025-03-31

Para melhorar a segurança e o desempenho de programas Java, o JDK planeja fortalecer a imutabilidade de campos finais. Atualmente, a reflexão profunda pode modificar campos finais, o que viola a intenção original da palavra-chave final e limita a otimização da JVM. Versões futuras irão, por padrão, proibir a reflexão profunda de modificar campos finais e emitir avisos. Os desenvolvedores podem habilitar seletivamente a modificação de campos finais usando a opção `--enable-final-field-mutation`, mas é recomendado evitá-la o máximo possível. Essa medida visa melhorar o recurso de "segurança por padrão" do Java e manter a consistência com o design de classes de registro.

Leia mais

JEP 483 do Java: Carregamento e Vinculação Antecipada de Classes Aumenta o Tempo de Inicialização

2024-12-22

O JEP 483 melhora significativamente o tempo de inicialização de aplicativos Java carregando e vinculando classes de aplicativos antecipadamente quando a JVM HotSpot inicia. Isso é alcançado monitorando uma única execução do aplicativo, armazenando as formas carregadas e vinculadas de todas as classes em um cache para reutilização em execuções subsequentes. Este recurso não requer alterações de código e oferece melhorias substanciais de velocidade para aplicativos de servidor grandes, com o Spring PetClinic mostrando uma redução de 42% no tempo de inicialização. Embora atualmente seja um processo de duas etapas, versões futuras simplificarão a criação do cache para uma única etapa e oferecerão uma configuração de execução de treinamento mais flexível.

Leia mais
Desenvolvimento