Eu escrevi um pouco sobre isso em https://www.tabnews.com.br/maniero/286e5a2e-8144-46a7-bed3-8390f185e6a1.
Tecnologia que a pessoa se apaixona tem algo errado, ela pode ter uma preferência, mas a paixão é um sinal muito errado. Aversão nem tanto, mas depende do nível, porque tem tecnologias ruins e que causam dificuldades reais para as pessoas, em alguns casos até porque não encaixa com a personalidade da pessoa, dá para discutir que isso diminui um pouco o profissionalismo da pessoa, mas é um fato que você trabalhar com algo que você não gosta traz resultados piores. Sorte de quem é frio ao extremo e "gosta" de tudo.
Ubiquidade tem linguagens até mais bem posicionadas, não sei hoje, mas até C# em dado momento estava em plataformas importantes que Java não estava. Não dá para vender algo como diferencial positivo quando não é exclusivo dela e até nem é tão verdade quanto alguns acreditam. Tem a ver com o WORA também que já falei no link acima, é um marketing padrão que não traz valor real que outras não trazem. Quase sempre o WOCA é melhor por isso até o Java aderiu.
Comunidade e ecossistemas muitas linguagens têm forte e até mais que Java.
A esmagadora maiorias das linguagens são maduras e estáveis e histórico em alguns casos comprovados de confiabilidade e segurança.
A verbosidade é um fator, mas ele não é tão grande assim, sintaxe importa, é um motivo de alguns não gostarem, faz algum sentido, mas não é o fim do mundo. O mesmo vale pra ser antiquada, que no fundo é a mesma coisa. Java tem um problema de concisão, melhorou, mas isso importa pouco.
De fato ela não é tão fácil de aprender, e não a recomento para iniciantes, e achei um absurdo quando faculdades começaram adotá-la. Ou vai de C para formar profissionais de primeira linha, ou vai de JS pra entregar alguém rápido no mercado, mesmo que a carreira dessa pessoa fica limitada. Tanto C, quanto JS, a primeira mais ainda, tem bem menos conceitos para aprender e pode começar de forma mais confortável. Mas isso eu explico melhor em outros textos.
A questão do desempenho não gera aversão a não ser em idiotas. Ou a pessoa é completamente desinformada ou ela sabe muito bem o que precisa, e precisa de controle absoluto da memória, mais que o processamento, mas este também, e eventualmente acesso mais direto ao hardware. Não dá nem para comparar isso, é como a pessoa ter aversão ao fusca porque ele precisa transportar 20 toneladas de milho.
Não se pode culpar o fato de mexer com legado ao problema da linguagem. A maioria tem muito legado. As que tem menos se provam pouco interessantes para a maioria dos projetos, ou porque falta maturidade ou porque os projetos não duram.
Java tem agilidade no longo prazo comparando com linguagens de script, se os programadores souberem o que estão fazendo. Ela tem mais agilidade em quase tudo quando se compara com linguagens de sistemas que exigem você controlar mais a execução.
Java tem evoluindo bem nos últimos anos, e só não melhora mais porque poderia quebrar a compatibilidade ou é muito difícil encaixar com os erros cometidos no passado. Por exemplo estão prometendo struct
há mais de 10 versões e nada, nem sei se ainda vai rolar, e isso seria muito importante para ela servir a mais cenários. Isso é só um exemplo dos erros da linguagem no passado e que muitos amantes da linguagem falavam como se fosse algo positivo.
Java não é derivada de C, basicamente em nada, só um ou outro detalhe de sintaxe, mas a maioria não, em semântica praticamente zero, em filosofia completamente zero. Ela nem mesmo é uma "evolução do C++" ou o "C++ seguro" como a Sun fazia de marketing no começo, o que era absolutamente risível e só trouxa completamente sem noção acreditava nisso. C# é muito mais próxima de C++ e ainda assim está bem longe.
Como eu sempre falo a internet está cheia de informação total ou parcialmente errada e da mesma forma que as pessoas têm político de estimação, elas têm tecnologias de estimação.
O concorrente mais direto é obviamente C#. Eu sei que Jon Skeet que é uma lenda e usa as duas, prefere C#. Eu sei que os melhores desenvolvedores da linguagem e as cabeças mais privilegiadas entre usuários então em C#. Eu já vi debate de um dos maiores especialistas de Java, desses que estão na linha de frente mesmo, que participa em um nível quase de funcionário da Oracle, se hoje não for, contra um grande especialista de C#, mas não alguém tão no topo assim, o primeiro tomou um couro inacreditável. Em todas as comunidades tem gente muito boa e gente muito ruim, além das medíocres que costuma ser a maioria obviamente, mas a minha percepção que há mais gente preparada de forma completa em C# do que Java, parece que muitas vezes a escolha por Java é acaso ou porque a pessoa não sabia fazer uma boa escolha, e o acaso pode ser porque estava mais fácil conseguir emprego, que é um ótimo motivo pessoal, mas não tão bom tecnicamente falando.
Usando método científico, Java é uma linguagem muito boa e pode ser a melhor escolha em alguns cenários. Em outros casos tem melhores. Mas não costuma acontecer assim.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).