“Existem dois tipos de linguagens de programação: aquelas das quais as pessoas reclamam e aquelas que ninguém usa.” — Bjarne Stroustrup.
“As pessoas que criticam e reclamam de Java geralmente são jovens e parecem ter sido expostas muito mais a JavaScript do que a qualquer outra coisa. Em comparação com JS, Java pode parecer um pouco mais pesado e restritivo. Há boilerplate por toda parte, além de um sistema de tipos aplicado rigidamente pelo compilador. Mas, se eu tivesse escolha, escolheria uma base de código Java não ideal em vez de JS. Sem a menor dúvida.”
“Só depois de adquirir experiência real lidando com código espalhado por dezenas ou centenas de arquivos é que você começa a perceber que as chamadas ‘restrições’ do Java, na verdade, são mecanismos de proteção para impedir que você dê um tiro no próprio pé.”
“Descobrir Java e voltar a usar a linguagem foi quase uma revelação. Percebi que amo Java e seu ecossistema. Então resolvi anotar algumas das coisas de que mais gosto no ecossistema Java. Portanto, se alguém falar mal de Java, aqui estão 25 razões para mostrar por que essa pessoa está errada.”
- Ecossistema maduro
- WRITE ONCE, RUN EVERYWHERE
- Compatibilidade com versões anteriores (backward compatibility)
- Linguagem fortemente tipada
- Ciclo de lançamentos rápido, com melhorias contínuas
- Bons IDEs
- Suporte a Native Image do GraalVM
- Bibliotecas e frameworks open source
- Multithreading
- Orientação a objetos madura
- Gerenciamento de memória e coleta de lixo
- Observabilidade e monitoramento
- Suporte à programação funcional
- Documentação rica
- Ferramentas de build e gerenciamento de dependências
- Recursos robustos de teste
- Comunidade enorme
- Anotações
- Recursos de segurança
- Conjunto rico de APIs
- Desempenho
- Concorrência estruturada
- Threads virtuais
- Pattern matching para a instrução
switch - Templates de string
62 comentários
Todas as vantagens atribuídas ao Java na verdade parecem ser pontos em que outras linguagens são muito melhores do que ele.
Ninguém mencionou o Spring.
Não tenho reclamações sobre a linguagem Java em si,
mas a realidade local de ter que aprender Spring me pareceu um pouco sufocante, então ela acabou não me parecendo tão atraente.
Java é boa, mas o Spring é... horrível :(
Os 25 não têm poder de diferenciação nenhum. Independentemente do respeito, são hienas num banquete de legado.
Embora apresentem até 25 motivos para dizer que ele ainda é popular em 2024,
parece que existem linguagens suficientes para substituí-lo, mesmo que não seja necessariamente Java...
O que é popular é a JVM.
A maioria dos motivos, quando comparados ao ecossistema das outras linguagens modernas,
não são exatamente pontos tão fortes, e parece que o autor escreveu o texto sem separar Spring e Java.
É natural preferir Java, porque a linguagem conta com um ecossistema de desenvolvimento muito bem estruturado.
Da mesma forma, como você só consegue ter desempenho trabalhando dentro desse ecossistema, acaba querendo trabalhar apenas nele, e quando pedem outro ambiente isso também gera certa resistência.
Mas, daqui para frente, parece que a IA vai programar cada vez melhor nessas linguagens, e a capacidade de adaptação para sobreviver em ambientes diversos, e não só no seu ambiente confortável, será mais necessária do que nunca.
Nesse sentido, a adaptabilidade a várias linguagens agora parece ser não uma opção, mas uma necessidade.
Se eu tivesse que criar um web app de entries, provavelmente usaria Java sem pensar. Só o item 1 já basta... Para desenvolvimento simples e rápido, acho que Python é uma boa. JS... sei lá, eu acho tão enrolado que me irrita.
Se fosse para usar Java, eu usaria Kotlin; e, mais do que Java como linguagem, considero que a família de linguagens .NET acompanha melhor a evolução do Kotlin. Java talvez devesse continuar como linguagem de manutenção para servidores de órgãos públicos que foram construídos em Java no passado; na Coreia, muitos CEOs tendem a insistir em Java porque estão familiarizados com a palavra “Java” por tê-la visto em propagandas. Experimente Kotlin e .NET antes de considerar Java.
Pessoal, já que surgiu o assunto de Java... o que vocês acham de Go? Na verdade eu gosto mais de Kotlin do que de Java, mas tive frustrações demais com Gradle e acabei me estabelecendo no Go. Pela pouca experiência que tive usando, fiquei pensando: será que em qualquer lugar onde Java é necessário, Go também não daria conta?
No caso de JS/TS, eu também gosto, mas ainda assim acho meio forçado colocar na mesma linha e comparar com Java. De qualquer forma, continua existindo a limitação de ser single-thread, e embora digam que dá para fazer multiprocessamento com pm2 e coisas do tipo, Java também tem virtual thread muito bem implementada, e sinceramente acho isso melhor. Claro, meu raciocínio foi seguindo por esse caminho e, quando vi goroutines, acabei me fixando no Go... hahaha;;
Acho que o ideal é usar cada linguagem no lugar certo, conforme a necessidade. Mesmo agora, em 2024, eu continuo gostando muito de PHP, e também tenho carinho por JS e Java (Kotlin), ainda que não tanto quanto por Go. Linguagem é ferramenta, então desde que seja usada corretamente para o propósito certo, não é isso que importa? Estou deixando este comentário por pensar assim.
Acho que agora realmente chegou a um nível bem utilizável. Eu também trabalho só com Go na empresa.
Na época em que usávamos
godepeglide, bastava uma dependência sair do lugar para eu passar o dia inteiro tentando encaixar tudo de novo, pensando se aquilo era mesmo uma linguagem ou algo ali na beirada de ser uma linguagem.. 😂Mesmo com as limitações de single-thread, nesta era de orquestração em que você encapsula em contêineres e faz com que cada pod não consuma CPU demais, eu só consigo pensar: essa limitação é realmente tão grande assim?
A não ser que, como antigamente, em vez de subir vários contêineres em um único servidor, esse contêiner em específico acabasse consumindo muita CPU.
Na maioria dos casos de servidores web, como eles não consomem muita CPU e o volume de throughput de I/O é alto, acho que Node também pode ser tratado como uma das opções.
Claro, se for um domínio que exige muito CPU, aí dá para considerar outra linguagem ou até chamar código nativo via
napi.Acho que é uma linguagem útil para trabalho assíncrono, porque tem a característica de abstrair bem esse tipo de tarefa com goroutines. O código assíncrono em Rust ou Python me parece um caso de se pensar demais. Acho que tende a ter uma carga cognitiva alta, tanto para escrever quanto para ler.
Eu só usei Go antes da inclusão de generics, mas acho que é uma ótima linguagem. No começo as ferramentas eram realmente bem fracas, mas evoluíram bastante.
A sintaxe é meio bruta, mas por isso mesmo é fácil de aprender.
Não briguem....
A discussão está ficando acalorada.
Se você tiver alguma contestação, por favor escreva apenas esse conteúdo.
Comentários que violavam as regras de uso do site foram removidos.
Além disso, informamos que foram bloqueadas contas que repetidamente realizaram atividades em desacordo com as regras de uso.
Pedimos uma discussão saudável.
O Java 1.8 é realmente uma versão excelente!
Acho que
write once run everywherejá é um slogan que talvez esteja na hora de aposentar... hahaMas é Java, né! kkk
Programar Java no IDEA é uma alegria, mas se não fosse o IDEA eu teria sido infeliz. (E fui mesmo.)
No mercado doméstico, há também a vantagem nas contratações e o framework de governo eletrônico, a ponto de surgir a expressão de que o país é uma “república do Java”, então há muitos desenvolvedores Java.
Muitas empresas também migram de outras linguagens para Java e, pela minha experiência, alguns? desenvolvedores Java parecem querer trabalhar só com Java.
Dizem que sistemas existentes em outras linguagens são problemáticos e que é preciso migrar para Java. Mas também não querem usar Kotlin.
Parecia haver uma certa resistência a aprender algo novo. Uma sensação de “se dá para fazer tudo em Java, por quê?”
Quem trabalha com SI não costuma usar genéricos, não é?
Parece que esse é justamente o problema... kkk
Nesse ponto, parece que Java é uma religião.
As pessoas que criticam e reclamam de Java geralmente são jovens e parecem ter tido mais contato com JavaScript do que com qualquer outra coisa.Se invertermos essa frase, também dá para dizer que, justamente por terem usado js, essas pessoas concluíram pela experiência que java não é tão bom assim.
Por que não reconhecem que cada um tem suas vantagens e desvantagens e ficam só dizendo que java é melhor...
É parecido com quem nunca usou document db e, independentemente dessas características, só diz que sql é melhor.
Parece que deixam de lado o fato de que já existia um cenário em que java era muito usado, e que muitos desenvolvedores mais antigos só sabem java e não querem mudar, então não conseguem trocar. Do ponto de vista atual, acho que java quase não tem mais pontos fortes próprios.
Pela minha longa experiência, acho que Python e JS têm uma proporção maior de fanáticos.
Acho que isso pode dar a sensação de haver argumentos mais enfáticos porque a pessoa provavelmente está numa posição em que precisa defender JS/Python em vez da linguagem Java.
Pessoalmente, já vi algumas pessoas que nem conseguem considerar qualquer outra linguagem além de Java. Já quem trabalhava com outras linguagens, na maioria dos casos, parecia ter disposição para usar uma linguagem diferente dependendo da situação.
Consigo imaginar que isso possa acontecer se a primeira linguagem da pessoa for Java, mas nunca vi um caso assim ao meu redor, então é difícil visualizar bem.
No meu caso também, entrei na universidade e a primeira linguagem que aprendi nas aulas foi C++, e conforme fui avançando nos semestres acabei tendo contato naturalmente com outras linguagens, então não encaro aprender uma linguagem nova como algo tão pesado... na verdade, a sintaxe básica (declaração de variáveis, estruturas de controle, funções etc.) é parecida em quase todas.
Nesses casos, talvez a pessoa tenha aprendido a linguagem de forma estreita demais no começo, e por isso o repertório acabou ficando limitado. E acho que vi isso com mais frequência em pessoas que tiveram Python como primeira linguagem com foco em deep learning ou estatística matemática. Eu também estou falando por experiência própria, então provavelmente os dois lados têm razão.
Também tive uma experiência parecida, então penso o mesmo.
Quem gosta de Python não fica dizendo que Python é uma linguagem boa. No caso de JS também não tem gente insistindo que a linguagem em si é boa. Tanto Python quanto JS só têm um ecossistema bom para desenvolver em áreas específicas. Só o pessoal de Java passa essa sensação de insistir que é bom de qualquer jeito...
JS é motivo de piada até entre os próprios desenvolvedores de JS. Isso é uma linguagem mesmo... se não fosse o TS T_T
Se eu fosse defender o Java, diria que, por outro lado, ele acaba virando alvo de piada com frequência por vários motivos. Meio que ocupa a posição daquele tio do bairro que todo mundo conhece...?
Hoje em dia, quando pesquiso no Google sobre Java,
chove post de blog em coreano com exatamente o mesmo conteúdo ensinado em cursos,
e isso me irrita porque fica difícil encontrar referências realmente decentes.
A busca do Google piorou bastante...
18, 25, 20, 10, 8, 6, 5, 3, 2, 1 etc. não são exclusividade do Java. Comparação equivocada
Vendo agora, o Java também tem esses recursos e não há motivo para ser criticado; não parece que a ideia seja usar Java só porque isso só funciona nele.
Na verdade, enquanto lia, só conseguia pensar: hum... será que .NET não é melhor?
Eu também gosto de C#, mas em ambientes que não sejam Windows, fico na dúvida se faz sentido usá-lo.
É o mesmo conteúdo do comentário acima. Isso acabou há muito, muito tempo.
A decisão tardia da MS realmente acabou distorcendo assim a percepção das pessoas.
Se você só faz aplicativos para Windows, há muitas vantagens no ecossistema da MS, o que é bom, mas no Linux ou no macOS eu acho que não há nada melhor do que Java. A MS passou a dar suporte tardiamente, mas não há um motivo real para usar isso. O momento não é bom.
Não é mais o .NET da época do .NET Framework, então por que limitá-lo a aplicativos de Windows?
Aliás, o motor de jogos baseado em .NET já está rodando nos celulares que vocês têm nas mãos;
222
333
Não é uma crítica ao Java, mas o motivo de o Java ser irritante é que, de forma particularmente frequente, só desenvolvedores Java menosprezam desenvolvedores de outras linguagens, ficam comparando tudo e demonstram um estranho orgulho de Java. Eu gosto de Java, mas não entendo por que fazem isso. Cada linguagem tem sua própria filosofia, seus prós e contras e um ecossistema diferente; só isso. Mas aí exibem esse orgulho esquisito de Java de forma repentina e acabam causando antipatia.
Parece que são necessários materiais para apresentar como base do orgulho que desenvolvedores Java têm do Java. Se isso for difícil de apresentar, considero que essa é uma afirmação difícil de aceitar.
Parece que sempre existe esse tipo de pessoa em qualquer linguagem ou ferramenta. Acho que, na época em que foi lançada, Java era uma linguagem mais descolada que C/C++ e, ao mesmo tempo, passou a ser amplamente usada no mercado corporativo, o que ampliou muito a base de desenvolvedores e talvez a faça se destacar mais.
E hoje em dia, me parece que os desenvolvedores de Rust estão assumindo esse papel.
Surpreendentemente, o motivo de Java ter se tornado mainstream foi porque gastaram uma fortuna em marketing kkkkk
https://www.youtube.com/watch?v=NVuTBL09Dn4
Há um vídeo no YouTube sobre como uma linguagem se torna mainstream, e acho que vocês também vão achar interessante!
https://www.youtube.com/watch?v=QyJZzq0v7Z4
Você deveria ficar irritado com os desenvolvedores Java, mas acaba descontando no Java...
Isso é questão da sua compreensão de leitura...
Alguém já respondeu por mim, então não precisei responder.
Não é bem assim, né?
Parece que nem sabe o que é letramento?
De repente, se você pensou no Eclipse feito em Java e no VSCode feito em JavaScript (TypeScript)... seria uma comparação equivocada? Claro, o Eclipse tem mais funcionalidades.
É uma comparação equivocada..
Tem que olhar a época em que surgiu.
Quando o Eclipse apareceu, por um bom tempo ele teve um status parecido com o do VSCode hoje.
Eu também acho o Eclipse realmente desconfortável de usar, então não uso,
mas naquela época a única opção minimamente viável era o Eclipse.
O ponto forte do JavaScript é que o mecanismo V8 é mantido pelo Google.
Java abandonado..
O backend de um app em Electron é JavaScript mesmo, certo... O processo principal e o processo do renderizador rodam separadamente, mas os dois funcionam com código JavaScript.
Da mesma forma, a JVM no fim das contas também não é um runtime implementado de forma nativa?