Optimizing Java: Guia prático para otimização de desempenho de aplicações Java
450 páginas
Portuguese
PDF
4.5

Optimizing Java: Guia prático para otimização de desempenho de aplicações Java

Optimizing Java: Guia prático para otimização de desempenho de aplicações Java

Autor:

Ano:

Resumo:

Introdução

O livro «Optimizing Java» (autores: Benjamin J. Evans, James Gough, Chris Newland, 2018, 450 páginas) não é mais um guia de referência sobre sintaxe da linguagem, mas sim um guia prático e aprofundado para extrair o máximo desempenho de aplicações Java. Na era dos microsserviços, altas cargas e computação em nuvem, a capacidade de "extrair" velocidade da JVM torna-se uma habilidade crítica para um desenvolvedor sênior. Os autores — especialistas reconhecidos na área de JVM e desempenho — oferecem uma abordagem sistemática: desde a compreensão do funcionamento da máquina virtual até metodologias específicas de criação de perfis e otimização de código.

Sobre o que é este livro?

O livro abrange o ciclo completo de trabalho com desempenho: teoria, ferramentas e técnicas práticas. Ele não ensina a escrever código "bonito", mas sim a escrever código rápido e previsível, entendendo o que acontece "sob o capô" da JVM.

Tópicos principais:

  • Hardware e SO: como o processador, memória cache, arquitetura NUMA e o sistema operacional afetam o desempenho de aplicações Java.
  • Funcionamento interno da JVM: análise detalhada do funcionamento do garbage collector (G1, ZGC, Shenandoah), compilador JIT (C1, C2, Graal), heap e pilha.
  • Criação de perfis e benchmarking: uso prático de JMH, VisualVM, Java Flight Recorder, async-profiler e outras ferramentas.
  • Otimização de código: trabalho com coleções, strings, exceções, sincronização, I/O e serialização.
  • Configuração da JVM: flags de inicialização, escolha do GC, tamanhos de heap, metaspace, configuração para contêineres (Docker).
  • Tópicos avançados: observações JIT, caches inline, desotimização, trabalho com código nativo via JNI e Panama.

Para quem é este livro?

O livro é direcionado a desenvolvedores Java experientes (nível pleno/sênior) que já escrevem código com confiança, mas desejam entender por que uma aplicação funciona rapidamente e outra fica lenta, e como corrigir isso. Conhecimentos básicos de Java são obrigatórios, mas não é necessária experiência profunda em JVM — os autores explicam conceitos complexos de forma acessível, com exemplos.

O que o leitor aprenderá?

  • Como funciona a compilação JIT e como "sugerir" o caminho correto ao compilador.
  • Como escolher e configurar o garbage collector para uma carga específica (latência vs throughput).
  • Como escrever micro-benchmarks corretamente com JMH para evitar resultados falsos.
  • Como criar perfis de aplicação em produção com overhead mínimo (JFR, async-profiler).
  • Como otimizar o uso de memória: evitar vazamentos, reduzir o número de objetos, usar off-heap.
  • Como configurar a JVM para contêineres (Docker, Kubernetes) considerando limitações de CPU e memória.
  • Como usar recursos modernos do Java (módulos, records, sealed classes) para melhorar o desempenho.

Pontos fortes do livro

  • Abordagem prática: cada capítulo contém exemplos de código, capturas de tela de profilers e recomendações específicas.
  • Atualidade: apesar de ser de 2018, o livro abrange Java 11 e versões mais recentes (incluindo ZGC), bem como ferramentas modernas.
  • Profundidade: os autores não têm medo de se aprofundar nos detalhes da JVM, mas fazem isso de forma sequencial, sem academicismo excessivo.
  • Estrutura: o material é logicamente organizado do simples ao complexo, permitindo usar o livro tanto como tutorial quanto como referência.
  • Experiência dos autores: Evans, Gough e Newland são palestrantes renomados em conferências Java, e seus conselhos são testados em projetos reais.

Para quem é recomendado

O livro será útil para todos que trabalham com Java em nível de produção: desenvolvedores backend, engenheiros DevOps, arquitetos, líderes técnicos. Se você já enfrentou problemas de desempenho (pausas longas do GC, inicialização lenta, alto consumo de memória)

Recommendations