Prefácio
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
Quando a O'Reilly me abordou pela primeira vez sobre a possibilidade de escrever um livro sobre o ajuste de desempenho do Java, fiquei inseguro. Pensava que o desempenho do Java não tinha acabado? Sim, ainda trabalho para melhorar o desempenho de aplicações Java (e outras) diariamente, mas gosto de pensar que passo a maior parte do meu tempo lidando com ineficiências algorítmicas e gargalos externos do sistema, em vez de qualquer coisa diretamente relacionada ao ajuste de Java.
Um momento de reflexão convenceu-me de que estava (como sempre) a enganar-me a mim próprio. É certamente verdade que o desempenho do sistema de ponta a ponta ocupa muito do meu tempo, e que às vezes me deparo com código que usa um quando poderia usar um algoritmo com desempenho O(logN). Ainda assim, acontece que todos os dias penso no desempenho da recolha de lixo (GC), ou no desempenho do compilador JVM, ou em como obter o melhor desempenho das APIs Java.
Isso não é para minimizar o enorme progresso que foi feito no desempenho do Java e das JVMs nos últimos 20 anos. Quando eu era um evangelista Java na Sun durante o final dos anos 90, o único "benchmark" real disponível era o CaffeineMark 2.0 do software Pendragon. Por uma variedade de razões, o design desse benchmark rapidamente limitou seu valor; ainda assim, em sua época, gostávamos de dizer a todos que o desempenho ...