O Java 25 já está disponível como versão de suporte alargado (LTS) desde o passado dia 16 de setembro e traz mudanças: desenvolver programas simples é mais fácil, as aplicações iniciam-se mais depressa, consomem menos memória e diagnosticar problemas é mais simples. Além disso, os IDE como o IntelliJ IDEA já o suportam desde o primeiro dia, pelo que começar é uma questão de minutos.
As novidades
- Ficheiros fonte compactos e main “de instância”: pode criar exemplos, utilitários e protótipos sem a cerimónia do costume; menos boilerplate e mais foco na lógica. Ideal para aprender, fazer demonstrações rápidas ou provas de conceito.
- Importações por módulo: acabou-se o lutar com importações repetidas quando utiliza muitas classes do mesmo módulo; uma forma mais limpa de organizar as suas fontes em exemplos e protótipos.
- Construtores mais flexíveis: agora pode validar ou preparar dados antes de chamar super(), o que torna certos designs mais naturais sem truques estranhos.
Concorrência e contexto
- Scoped Values (valores com alcance): uma alternativa moderna a ThreadLocal pensada para threads virtuais; partilhar dados imutáveis entre chamadas e tarefas filhas é mais fácil e seguro.
Desempenho
- Início mais rápido: a JVM pode utilizar perfis de execuções anteriores para render melhor logo após o arranque, reduzindo o tempo até ao “ritmo de cruzeiro”.
- Menos memória por objeto: os “cabeçalhos compactos” reduzem a pegada, algo que se nota em serviços com muitos objetos pequenos e implementações elásticas.
- GC mais suave: o Shenandoah agora é geracional e existem melhorias no carregamento/ligação de classes, o que ajuda a reduzir pausas em cargas de tipo servidor.
Melhor observabilidade (diagnosticar é mais fácil)
- JFR con amostragem cooperativa e traços/tempos de método: perfis mais precisos com menos impacto e mais detalhe para acompanhar o que a sua aplicação faz quando está “no limite”.
Se vem do Java 21, também encontrará
- Stream Gatherers (operações intermédias personalizadas), JavaDoc em Markdown, variáveis anónimas com “_” e melhorias em threads virtuais (sem “pinning” ao sincronizar).
Pronto para utilizar já no seu IDE
- No IntelliJ IDEA pode descarregar o JDK 25 a partir do próprio IDE e definir o “Language level: 25 – Compact source files, module imports”; suporte pleno para as novas ajudas e quick-fixes.
- Concorrência estruturada (preview): organiza tarefas concorrentes como uma unidade, com código mais legível e cancelamento/erros melhor geridos.
- Padrões com tipos primitivos (preview): unifica a forma como utilizamos instanceof e switch com primitivos, simplificando a lógica e evitando conversões desnecessárias.
- Stable Values (preview): objetos imutáveis que a JVM pode otimizar como “constantes”, melhorando o desempenho em cenários repetitivos.
- Vector API (incubator): operações vetoriais que aproveitam o SIMD do CPU para acelerar cálculos numéricos e de dados.
- Segurança: PEM encodings e KDF API: suporte nativo para formatos PEM e novas funções de derivação de chaves para fortalecer a gestão criptográfica.
- AOT Command‑Line Ergonomics: facilidades para gerar caches AOT e melhorar o tempo de arranque sem complicar o fluxo de build.
- Calendário e suporte LTS: suporte de longa duração e atualizações periódicas que conferem estabilidade para planear a adoção.