Esses dias estava ouvindo o podcast Papinho Tech e, em um dado momento, o convidado — um dev bem conhecido da comunidade Java — soltou uma fala que me fez parar pra pensar:
“Me perguntaram se eu entendia do Garbage Collector do Java. Eu falei: pra quê? Ele é automático, já limpa a memória sozinho.”
Achei engraçado na hora, mas depois fiquei refletindo sobre o que essa frase realmente significa. Não é sobre a resposta em si, mas sobre como ela reflete um pensamento que ainda está muito presente em parte da comunidade Java.
Tem uma galera que parece acreditar que, no Java, “tudo é resolvido pela JVM”. A abstração de tudo, a confiança na magia por trás da linguagem, o uso de frameworks que nunca se questiona... Essa mentalidade, por mais prática que tenha sido no passado, acabou criando uma espécie de Javismo Cultural — uma forma de pensar que, muitas vezes, complica mais do que resolve.
O Java, como linguagem, deu vários passos pra frente nos últimos anos. Quem acompanha de perto sabe que a equipe por trás da linguagem tem trabalhado duro pra modernizar o que parecia engessado. Estamos vendo records, pattern matching, virtual threads com o Project Loom, entre outras melhorias. A linguagem está mais simples, mais enxuta. Mas, ao mesmo tempo, tem uma parte da comunidade que ainda segue com aquele jeitão antigo de programar.
Um exemplo simples: você já usou record no Java 14 ou superior? Olha como é simples:
record User(String name, int age) {}Em vez de escrever aquele monte de código com getters, setters e outros métodos repetitivos, você já tem tudo isso no formato simples de um record. Menos código, mais clareza.
Outro exemplo, com pattern matching:
if (obj instanceof String s) {
System.out.println(s.toLowerCase());
}Nada de fazer cast manual, nada de criar condições complexas. É direto ao ponto. O Java moderno está bem mais fácil de usar — mas nem todo mundo ainda percebe isso.
Acontece que, por muito tempo, o Java foi a linguagem do mercado corporativo. E, com isso, veio uma cultura de “mais é mais”. Mais camadas, mais abstrações, mais ferramentas. Só que, com o tempo, algumas dessas soluções se tornaram tão pesadas e complicadas que acabaram virando um peso.
E o pior é que isso se perpetua. O dev mais experiente acaba ensinando novos devs a seguir os mesmos padrões, mesmo que hoje em dia não faça mais tanto sentido. O que acontece? Novos projetos se tornam reféns de frameworks pesados, design patterns que são mais ornamentais do que úteis, e uma complexidade que, muitas vezes, não existe.
Pra quem está chegando agora no mercado, ou para quem já tem experiência em outras linguagens, o Java muitas vezes parece mais complexo do que realmente é. A mentalidade de que “tudo precisa ser complexo” acaba afastando os devs que buscam algo mais direto, como Go, Rust ou até JavaScript moderno.
Mas, no fundo, o problema não é o Java. O problema é como a gente usa ele, como a gente pensa no código. O que falta é a mudança de mentalidade. Em vez de aplicar soluções antigas a problemas modernos, por que não aproveitar as novidades que a linguagem já oferece?
A ideia aqui não é dar lição de moral, nem achar que Java está ultrapassado. Longe disso. A questão é que a linguagem evoluiu, mas a forma como muitas pessoas ainda programam nela ficou presa no tempo. O que temos que fazer é aprender a adaptar a cultura junto com a tecnologia. Questionar os padrões, repensar as práticas e, acima de tudo, não se prender a um legado que já não faz mais sentido.
Java tem muito a oferecer, mas para aproveitar o melhor dele, é preciso deixar para trás um pouco dessa bagagem cultural pesada. É hora de repensar, não só o código, mas também a mentalidade.