O gigante acordou: Jakarta EE 11 moderniza o Java para empresas
O universo do desenvolvimento Java empresarial acaba de receber um upgrade de peso. O Jakarta EE 11 finalmente está entre nós, marcando uma evolução significativa para a plataforma que sucedeu o antigo Java EE. De acordo com o anúncio oficial detalhado pelo portal InfoQ, esta versão chega para simplificar a vida dos desenvolvedores e turbinar o desempenho das aplicações, alinhando o ecossistema com as inovações mais recentes do Java SE, como os aguardados records e as threads virtuais.
A plataforma, que é a espinha dorsal de frameworks populares como Spring, Quarkus e Payara, lança mão de atualizações em 16 especificações e introduz um componente totalmente novo: o Jakarta Data. Este lançamento estabelece o Java 17 como requisito mínimo e oferece suporte completo ao Java 21, abrindo as portas para um desenvolvimento mais moderno e eficiente.
Atrasou, mas foi por um bom motivo
Para os mais ansiosos, a espera pelo Jakarta EE 11 pareceu longa. Conforme explicado pelo Jakarta EE Working Group, o atraso foi estratégico e teve um propósito nobre: modernizar o Technology Compatibility Kit (TCK). Pense no TCK como o rigoroso controle de qualidade da plataforma. A decisão de investir tempo para atualizá-lo, migrando de tecnologias como Ant para Maven e de TestHarness para Arquillian, foi como arrumar a fundação da casa antes de construir novos andares. Essa reforma interna, embora invisível para o usuário final, garante testes de compatibilidade mais robustos e facilita a evolução futura do ecossistema.
Além da faxina no TCK, a versão 11 também fez uma limpeza em seu core. O antigo Jakarta Managed Beans foi aposentado em favor das alternativas mais modernas do CDI (Contexts and Dependency Injection). Referências ao Security Manager, obsoleto desde o Java 17, foram removidas, assim como funcionalidades opcionais como Jakarta SOAP with Attachments, simplificando a plataforma para novos fornecedores e desenvolvedores.
As novidades que importam: Dados, Records e Threads
O grande destaque do Jakarta EE 11 é, sem dúvida, a introdução do Jakarta Data. Para quem já está familiarizado com o Spring Data, a proposta soa familiar: facilitar o acesso a bancos de dados, sejam eles SQL ou NoSQL, através de uma interface unificada. Com o Jakarta Data, desenvolvedores podem criar repositórios de dados com pouquíssimo código. A especificação permite gerar consultas de três formas: por convenção de nomenclatura de métodos, com a anotação @Find
ou usando a Jakarta Data Query Language (JDQL), um subconjunto da JPQL. Tarefas complexas como paginação também foram drasticamente simplificadas.
O suporte ao Java 17 e 21 trouxe duas das funcionalidades mais celebradas do Java moderno para o mundo empresarial:
- Java Records: Agora é possível usar Records como classes embutidas (
@Embeddable
) e como IDs compostos no Jakarta Persistence, tornando o código para estruturas imutáveis, como um endereço ou uma chave primária composta, muito mais limpo e conciso. A fonte do InfoQ ressalta, no entanto, que o suporte ainda não se estende para usar Records como entidades completas. - Threads Virtuais: O ganho de desempenho em aplicações concorrentes ficou absurdamente simples. A especificação Jakarta Concurrency agora permite habilitar threads virtuais com a mudança de um único atributo booleano. Ao definir um executor gerenciado, basta adicionar
virtual = true
na anotação@ManagedExecutorDefinition
e a aplicação passará a usar threads virtuais, otimizando o uso de recursos em cenários de alta concorrência.
Java também aprendeu a ser 'preguiçoso' (no bom sentido)
Paralelamente às novidades do Jakarta EE, o próprio núcleo do Java continua sua marcha evolutiva. Conforme detalhado em um artigo do Inside.java, a JEP 502, uma funcionalidade em preview no JDK 25, introduz os "Stable Values". Na prática, é uma forma otimizada e padronizada de implementar computação preguiçosa (lazy computation). Isso permite que um valor seja calculado apenas no momento em que é realmente necessário, e o compilador JIT do HotSpot pode otimizar esse processo a ponto de substituir a chamada por uma constante, garantindo um ganho de performance notável.
Uma curiosidade apontada no artigo é por que a feature se chama "Stable" (estável) e não simplesmente "Lazy" (preguiçoso). A resposta é que as propriedades de um campo "estável" são um superconjunto das de um campo "preguiçoso". Um valor estável é calculado no máximo uma vez, garantindo consistência, e pode até ser pré-calculado em cenários específicos, algo que o termo "lazy" não cobriria completamente.
O futuro já bate à porta: Vem aí o Jakarta EE 12
Mal o Jakarta EE 11 foi lançado e os planos para a próxima versão já estão em andamento. Segundo Ivar Grimstad, Developer Advocate da Eclipse Foundation, o Jakarta EE 12 já tem um rascunho de plano e uma data de lançamento prevista para julho de 2026. A InfoQ destaca que o grande tema da próxima versão será a "Idade dos Dados".
Gavin King, criador do Hibernate, manifestou seu entusiasmo com o futuro da persistência na plataforma. O plano para o Jakarta EE 12 é ambicioso e inclui a integração do Jakarta NoSQL 1.1 diretamente na plataforma, consolidando o suporte à persistência poliglota. Além disso, uma nova especificação, a Jakarta Query, será criada com o objetivo de unificar a linguagem de consulta entre Jakarta Persistence, Jakarta Data e Jakarta NoSQL. Essa é uma jogada estratégica para criar um ecossistema de dados coeso e poderoso.
Em suma, o Jakarta EE 11 não é apenas uma atualização, mas uma declaração de intenções. A plataforma está se modernizando, abraçando as melhores características do Java recente e pavimentando um caminho claro para um futuro onde o desenvolvimento empresarial será mais produtivo, performático e preparado para a diversidade de bancos de dados do mundo moderno.
{{ comment.name }}
{{ comment.comment }}