Concordo com o Rafael Steil. Cada linguagem tem suas características, vantagens e desvantagens. Cabe a nós, profissionais, avaliar o problema de nossos clientes e adotar a solução mais viável, barata, segura, portável, escalável, de fácil manutenção, etc etc etc. No meu ver, o Java foi - e ainda é - um sucesso porque se encaixava perfeitamente em todos estes itens, na maioria dos problemas apresentados pelas empresas.
Mas se existisse A linguagem perfeita, não haveria sistemas rodando em Cobol até hoje.
Se o richardpeder me permite, vou fazer uma correção: O C# também é free. Tudo que vc precisa é do .NET Framework, que pode ser baixado de graça. O que é pago é o Visual Studio (yuck :P)
O Java nunca vai morrer. A quantidade de empresas e a comunidade por trás dele é enorme, gerando cada vez mais tecnologias satélites que têm o Java como coração e, além disso, é uma tecnologia consolidada no mercado. Acho que essa febre C# x Java vai passar. Tem muita gente que usa Java experimentando o C# (e acho que todos nós deveríamos, para termos argumentos em discussões e na escolha da tecnologia por nossos clientes), mas é como aquele brinquedo novo que vc ganha, deixa o velho de lado, experimenta, mas depois enjoa e percebe que não tem nada de tão extraordinário assim.