Skip to main content

Command Palette

Search for a command to run...

Da Verbosidade à Elegância

A Revolução dos Paradigmas em Java

Updated
Da Verbosidade à Elegância
F

Especialista em Engenharia de Software, Engenharia de Dados e Big Data, com vivência em ambientes de alto volume e complexidade, incluindo o processamento e gestão de petabytes de dados. Com forte atuação em arquitetura de software, liderança técnica e coordenação de equipes, entrego soluções escaláveis e robustas, mantendo sempre um perfil hands-on, orientado à excelência técnica e à geração de valor de negócio. Além disso, atuo como instrutor técnico, mentorando profissionais e compartilhando conhecimento nas áreas de arquitetura, desenvolvimento moderno e engenharia de dados.

Introdução

O Java evoluiu ao longo das últimas décadas de uma linguagem fortemente orientada a objetos para uma plataforma moderna, que incorpora paradigmas funcionais, imutáveis e concorrência leve. Este artigo explora a evolução dos paradigmas de programação do Java, da versão 1.5 até a 21, com exemplos práticos.


Java 1.5 (2004): Generics e Anotações

Paradigma dominante: Orientação a Objetos com Generics

🧩 Recursos:

  • Generics (List<String>)
  • Anotações (@Override)
  • Auto-boxing/unboxing
  • Enhanced for
List<String> nomes = new ArrayList<>();
nomes.add("Ana");
for (String nome : nomes) {
    System.out.println(nome);
}

Java 8 (2014): Paradigma Funcional

Paradigma dominante: Programação funcional e declarativa

🧩 Recursos:

  • Lambdas
  • Stream API
  • Optional
  • Interfaces funcionais (Function, Predicate)
List<String> nomes = List.of("Ana", "Carlos", "Beatriz");
nomes.stream()
     .filter(n -> n.startsWith("B"))
     .forEach(System.out::println);

Java 9–14: Modularização e Sintaxe Moderna

Paradigma dominante: Modularização e concisão

🧩 Recursos:

  • Módulos (module-info.java)
  • var (Java 10)
  • switch como expressão
var nome = "Java";
System.out.println("Bem-vindo, " + nome);
String resultado = switch (dia) {
    case "SEGUNDA" -> "Início da semana";
    case "SEXTA" -> "Sextou!";
    default -> "Dia comum";
};

Java 16–17: Imutabilidade e Segurança

Paradigma dominante: Programação orientada a dados e segurança de tipos

🧩 Recursos:

  • record
  • sealed classes
public record Pessoa(String nome, int idade) {}

Pessoa p = new Pessoa("João", 30);
System.out.println(p.nome());
public sealed class Forma permits Circulo, Quadrado {}

Java 19–21: Concorrência Leve com Threads Virtuais

Paradigma dominante: Concorrência estruturada e leve

🧩 Recursos:

  • Threads virtuais (Project Loom)
  • Pattern Matching aprimorado
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
    IntStream.range(0, 10).forEach(i ->
        executor.submit(() -> {
            Thread.sleep(1000);
            System.out.println("Executando tarefa " + i);
        })
    );
}

Comparativo de Paradigmas

VersãoParadigma CentralDestaques
1.5OO com GenericsTipagem segura, início de anotações
8FuncionalLambdas, Stream API
10+Concisovar, switch moderno
17Imutável e segurorecord, sealed
21Concorrência leveThreads virtuais

Conclusão

A linguagem Java evoluiu sem perder sua base. De generics à concorrência leve, o Java 21 mostra como uma linguagem pode continuar relevante por décadas — modernizando paradigmas e mantendo compatibilidade.