Java 15, lançado em setembro de 2020, introduziu diversas funcionalidades novas e aprimoramentos que continuam a evolução incremental da linguagem Java. Este artigo explora as principais novidades do Java 15, destacando como essas mudanças impactam o desenvolvimento de software.
1. Text Blocks (Feature Completa)
Text Blocks, introduzidos como preview nas versões anteriores, foram finalizados e integrados como uma feature padrão no Java 15 (JEP 378). Eles permitem a criação de strings multilinha de forma mais intuitiva e legível:
String json = """
{
"name": "John Doe",
"age": 30,
"city": "New York"
}
""";
2. Sealed Classes (Preview)
As Sealed Classes, introduzidas como uma feature preview (JEP 360), permitem que classes e interfaces controlem quais outras classes ou interfaces podem estendê-las. Isso oferece maior controle sobre a hierarquia de classes:
public abstract sealed class Shape
permits Circle, Square, Rectangle {}
public final class Circle extends Shape {}
public final class Square extends Shape {}
public final class Rectangle extends Shape {}
3. Hidden Classes (JEP 371)
Java 15 introduz as Hidden Classes, que são classes que podem ser usadas por frameworks para gerar classes dinamicamente em tempo de execução sem poluir o espaço de nomes da aplicação:
Class<?> hiddenClass = MethodHandles.lookup()
.defineHiddenClass(bytecode, true, MethodHandles.Lookup.ClassOption.NESTMATE)
.lookupClass();
4. Pattern Matching para instanceof
(Segundo Preview)
O Pattern Matching para instanceof
continua como uma feature preview no Java 15 (JEP 375), simplificando ainda mais a verificação de tipos e o casting:
if (obj instanceof String s) {
System.out.println(s.toLowerCase());
}
5. Records (Segundo Preview)
Os Records, introduzidos no Java 14, continuam como preview no Java 15 (JEP 384). Eles simplificam a criação de classes de dados imutáveis, tornando o código mais conciso e legível:
public record Point(int x, int y) {}
6. ZGC: Concurrent Thread-Stack Processing (JEP 377)
O Garbage Collector ZGC foi aprimorado para suportar o processamento concorrente de pilhas de threads, melhorando a performance e reduzindo as pausas no coletor de lixo.
7. Foreign-Memory Access API (Segundo Incubator)
A Foreign-Memory Access API, introduzida no Java 14, continua em incubação no Java 15 (JEP 383). Esta API permite acesso seguro e eficiente à memória fora do heap gerenciado pela JVM.
8. Removed Features
- Nashorn JavaScript Engine (JEP 372): O mecanismo Nashorn JavaScript foi removido, refletindo a diminuição de seu uso em favor de outros motores JavaScript como o GraalVM.
- RMI Activation (JEP 385): A funcionalidade de ativação do RMI foi removida, simplificando a manutenção da plataforma.
Conclusão
Java 15 continua a evolução incremental da linguagem, introduzindo funcionalidades que simplificam o desenvolvimento e melhoram a performance das aplicações. Com Text Blocks finalizados, Sealed Classes, Hidden Classes, aprimoramentos no Pattern Matching e Records, melhorias no ZGC e na API de Acesso à Memória Estrangeira, Java 15 oferece ferramentas poderosas para desenvolvedores, permitindo um desenvolvimento mais ágil e eficiente.
A adoção dessas evoluções permite que desenvolvedores se concentrem mais na lógica de negócios e menos nos detalhes de baixo nível da linguagem. Java mantém sua relevância e robustez, continuando a se adaptar às necessidades do desenvolvimento moderno de software.
Java 15 é uma atualização essencial para desenvolvedores que desejam aproveitar as últimas ferramentas e técnicas de programação, proporcionando um ambiente de desenvolvimento mais ágil e produtivo.
Share this content: