Java é lento?

Clayton K. N. Passos
codigorefinado
Published in
4 min readApr 1, 2018

“Só há dois tipos de linguagens: aquelas que as pessoas reclamam e aquelas que ninguém usa” — Não sei quem

Quando me dizem que o Java é lento, e ainda vejo muitos o fazerem, tento entender o motivo desta afirmação, há diversos aspectos que podem aparecer nesta afirmação, que vai desde a execução da aplicação a velocidade de execução dos testes do software.

Quanto a comparação referente a produtividade entre linguagens, não consigo perceber que Java seja menos produtivo que RubyOnRails ou PHP com Laravel, normalmente oque observo, é falta de conhecimento aprofundado nas duas que estão sendo comparadas, quando isto acontece sempre estão comparando Java sem frameworks com Ruby com Rails, ou PHP com Laravel, por exemplo, falta conhecimento do JHipster, Spring ou JBoss Forge por exemplo.

Quanto a performance na execução da aplicação escritas em Java, pergunto sobre pequenas coisas que é dever do programador saber, e outras que precisariam ter uma visão mais aprofundada da linguagem e de arquitetura de software, veja a minha lista abaixo, mas que não se limite a esta lista, há mais pontos que podem ser olhados para melhorar a performance de sua aplicação:

Todos os items acima são pontos de atenção que influenciam na performance, que é dever do programador saber, e decidir quando como e onde utilizar, não da plataforma Java otimizar, com exceção do que se refere a parallelStream, pois existe uma “pegadinha”, nada garante que a collection vai tirar proveito de multicores, mesmo a implementação do Java, no caso a que conheci é do Java 8, não garante, será que a collection do Hibernate garante? Sim a collection utilizada em objetos gerenciados por ele não é a do própio Java, diferente!

Cuidado com a generalização apressada

Por favor não me entenda mal, não estou dizendo que Java é rápido, ou lento, estou dizendo que antes de fazer uma afirmação como esta, tenha certeza de que conhece o assunto a fundo dos dois lados que está comparando. Toda vez que eu “aperto a pessoa” que faz esta afirmação percebo que ela não tem conhecimento profundo pra realizar tal afirmação, deixando claro que ela está proliferando uma falácia provida pelo que conhecemos como Generalização apressada.

Dados dois fatos verdadeiros, logo um terceiro em contexto diferente é igualmente verdadeiro? NÃOOOOOOO!!!!

Generalização apressada é basicamente acontece quando, a partir de uma afirmação verdadeira conclui-se que outra é igualmente verdade, por exemplo: “Quando Fulano se descobriu gay, pintou o cabelo de Loiro, logo, todos os Homens que pintam o cabelo de Loiro são gay”. Não né! Não preciso argumentar que essa afirmação é falsa.

Trazendo para o nosso contexto: “Trabalhei em uma aplicação terrível, era escrita em Ruby, migramos para Java rodando sobre GraalVM e estamos consumindo menos máquinas na nuvem para manter a mesma aplicação no ar. Logo, mude você também, pois você terá o mesmo resultado”. Não né! Não preciso argumentar que essa afirmação é falsa.

https://bookofbadarguments.com/pt-br/

E para deixar claro que não estou defendendo o Java, deixo uma excelente leitura de um dos caras que mais admiram e defendem o Ruby sobre um ponto de vista muito parecido com o meu. Fábio Akita fala da migração do Twitter de Ruby para Java, onde neste caso, o Java se mostrou 3x mais rápido que Ruby. Logo toda aplicação em Java é 3x mais rápido que Ruby, certo? NÃOOOO PORRA! ACABEI DE FALAR QUE NÃO É ASSIM QUE FUNCIONA KRALHOS!

Antes que digam que estou dizendo que a aplicação tem de nascer já otimizada, me permita esclarecer que otimizações prematuras também são ruins, aumentam o tempo de lançamento do produto, pode aumentar a complexidade desnecessariamente nos primeiros momentos de validação e concepção da aplicação. Esta avaliação deve se feita em conjunto com pessoal técnico e de produto.

Recomendo a leitura deste livro, ele trás diversas informações importantes quanto a este assunto

Java Efetivo (Português) 2º edição

Effective Java (3rd Edition) (Inglês)

E pra finalizar, de uma olhada na lista das tecnologias mais rápida e em qual linguagem é escrita.

--

--