Guia de Java Moderno (Versões 17 a 21)
1. Introdução ao Java Moderno
O ecossistema Java passou por mudanças drásticas desde o lançamento do Java 8. Com o novo
ciclo de lançamentos semestrais, as versões LTS (Long Term Support) como a 17 e a 21
consolidaram recursos que transformaram a verbosidade clássica da linguagem em uma sintaxe
elegante e performática.
Este guia aborda os pilares da produtividade: Records, Pattern Matching, Sealed Classes, Text
Blocks e as revolucionárias Virtual Threads.
Página 1
Guia de Java Moderno (Versões 17 a 21)
2. Record Classes (Páginas 2-3)
Records são classes de dados imutáveis. Antes, para criar um DTO, precisávamos de:
- Campos privados final
- Construtor canônico
- Getters
- equals() e hashCode()
- toString()
Com Java 17+, basta uma linha:
public record Product(String name, double price) {}
O compilador gera automaticamente todos os métodos citados acima. Records não podem
estender outras classes, mas podem implementar interfaces.
Página 2
Guia de Java Moderno (Versões 17 a 21)
Exemplo Avançado de Record:
public record Order(Long id, List<String> items) {
public Order {
if (items == null || [Link]()) {
throw new IllegalArgumentException('Items cannot be empty');
O construtor compacto acima permite validações sem repetir os parâmetros do record.
Página 3
Guia de Java Moderno (Versões 17 a 21)
3. Pattern Matching e Sealed Classes (Páginas 4-6)
Pattern Matching para 'instanceof' elimina o casting manual.
Antes:
if (obj instanceof String) {
String s = (String) obj;
[Link]([Link]());
Agora:
if (obj instanceof String s) {
[Link]([Link]());
Página 4
Guia de Java Moderno (Versões 17 a 21)
Sealed Classes permitem restringir a hierarquia de herança. Você define quem pode ser sua
subclasse.
public sealed interface Shape permits Circle, Square {}
public final class Circle implements Shape {}
public final class Square implements Shape {}
Isso é fundamental para a exaustividade no Switch.
Página 5
Guia de Java Moderno (Versões 17 a 21)
Switch Expressions:
var result = switch (shape) {
case Circle c -> 'Área do círculo';
case Square s -> 'Área do quadrado';
// default não é necessário se o switch for exaustivo em tipos selados
};
Página 6
Guia de Java Moderno (Versões 17 a 21)
4. Text Blocks e String Methods (Páginas 7-8)
Text Blocks (triple quotes) facilitam o uso de JSON, XML e SQL:
String json = """
"user": "Rafael",
"role": "Developer"
""";
Novos métodos úteis:
- [Link]()
- [Link]() (gera um Stream de linhas)
- [Link](n)
Página 7
Guia de Java Moderno (Versões 17 a 21)
5. Virtual Threads - Java 21 (Páginas 9-10)
Threads tradicionais (Platform Threads) são pesadas e mapeadas 1:1 ao Sistema Operacional. No
Java 21, as Virtual Threads permitem criar milhões de threads com baixo custo.
[Link]().start(() -> {
[Link]('Executando em Virtual Thread');
});
Página 8
Guia de Java Moderno (Versões 17 a 21)
As Virtual Threads são ideais para tarefas de I/O bloqueante (chamadas de API, Banco de Dados).
Elas 'estacionam' quando bloqueadas, liberando o processador para outras tarefas, mudando o
paradigma de escalabilidade sem precisar de programação reativa complexa.
Página 9