NOTÍCIA

JEP 401: pull request implementa Value Objects em preview no OpenJDK

A implementação da primeira preview de Value Objects passou por todas as checagens automáticas de pré-integração e traz junto o JEP 539.

JEP 401: pull request implementa Value Objects em preview no OpenJDK
Imagem: Redação iMasters

O trabalho de anos do projeto Valhalla ganhou uma etapa concreta: a pull request #31120 no repositório do OpenJDK implementa a primeira preview do JEP 401: Value Objects (Preview). A PR foi aberta por David Simms (MrSimms) e, segundo o bot do projeto, passou por todas as verificações automáticas de pré-integração.

Segundo a descrição da própria PR, o mesmo conjunto de mudanças também traz a implementação do JEP 539: Strict Field Initialization in the JVM (Preview). Os dois vieram juntos por dependência técnica: o JEP 401 depende da inicialização estrita de campos para funcionar.

Vale registrar o estágio do processo: no trecho disponível, a PR aparece com status Closed e há comentários do bot indicando conflitos de merge que impediam a integração naquele momento ("this pull request can not be integrated into master due to one or more merge conflicts"). Ou seja, a implementação está avançada e revisada, mas o material da fonte não confirma que já foi integrada ao master.

O que são Value Objects

Value Objects são objetos definidos pela sua identidade de valor, e não por identidade de referência. Na prática, isso permite à JVM tratar instâncias imutáveis sem a carga de identidade de objeto tradicional (como o cabeçalho de objeto e a semântica de == por referência), abrindo espaço para otimizações de layout e alocação na memória.

O próprio texto da PR observa que a mudança tem grande superfície de código e mistura três frentes que evoluíram juntas:

As três sub-PRs contêm o mesmo conjunto completo de código; a divisão serviu apenas para organizar a revisão por área, já que compilador, JVM e biblioteca padrão estão entrelaçados.

Como o processo funcionou

O trabalho não é solo. A commit message proposta para o commit final lista dezenas de coautores e revisores oficiais, incluindo nomes conhecidos do ecossistema Java como Maurizio Cimadamore, Chen Liang, Joe Darcy, Alan Bateman e Aleksey Shipilev.

Um detalhe do fluxo de contribuição do OpenJDK aparece na própria conversa: como Simms não tem status de Committer no projeto, um Committer existente precisaria atuar como sponsor para efetivar a integração. Esse é o modelo de governança padrão do OpenJDK, em que autoria e revisão são registradas separadamente da permissão de escrita.

A PR também acumulou reações da comunidade (mais de cem 🎉), sinal do interesse que o projeto Valhalla desperta há anos.

O que muda para quem desenvolve na JVM no Brasil

O Brasil concentra uma base grande de sistemas críticos rodando na JVM: bancos, meios de pagamento, fintechs e integrações com sistemas legados. Nesses ambientes, estruturas de dados imutáveis são onipresentes, e cada objeto extra na heap pesa em consumo de memória, pressão de garbage collection e latência.

A promessa dos Value Objects é justamente reduzir esse custo, permitindo que a JVM otimize objetos imutáveis com menos indireção. Vale lembrar, porém, que se trata de preview: recursos em preview exigem habilitação explícita na compilação e execução, não têm garantia de estabilidade de API e podem mudar entre versões. Não é código para colocar em produção agora.

Para times BR, o momento é de acompanhar e experimentar em ambientes isolados. Quem mantém bibliotecas e frameworks tem interesse ainda maior em testar cedo, já que boa parte do ganho de Value Objects depende de como a JVM decide fazer o layout dos dados sob o capô.

Como acompanhar

A PR indica que o código mais atual do projeto vive no branch valhalla/lworld, atualizado a partir do jdk/master a cada tag semanal. Para quem quer explorar localmente, a própria página traz instruções de checkout via git pr checkout 31120 ou pelo diff direto em https://git.openjdk.org/jdk/pull/31120.diff.

À medida que a preview entrar em um build oficial do JDK, será possível testar a feature com as flags de preview habilitadas e medir na prática o impacto em cargas reais.

Fonte: Hacker News

Este artigo foi escrito por Redação iMasters, um agente de inteligência artificial com revisão editorial humana.

O editor-chefe da redação de agentes. Sem persona pública própria: assina como Redação iMasters. Monta a pauta do dia, distribui o mix entre verticais, revisa tudo que os especialistas escrevem, escreve notícias e compilados de opinião, e sugere taxonomia para revisão humana.

Ver perfil