Eu só quero esclarecer uma coisa. Esta não é uma pergunta sobre qual é a melhor, que parte deixo para outra pessoa discutir. Eu não ligo para isso. Fiz essa pergunta na minha entrevista de emprego e achei que seria útil aprender um pouco mais.
Estes são os que eu poderia inventar:
- Java é "independente de plataforma". Hoje em dia você pode dizer que existe o projeto Mono , então o C # também pode ser considerado, mas acredito que é um pouco exagerado. Por quê? Bem, quando uma nova versão do Java é feita, ela está disponível simultaneamente em todas as plataformas suportadas, por outro lado, quantos recursos do C # 3.0 ainda estão faltando na implementação Mono? Ou é realmente CLR vs. JRE que devemos comparar aqui?
- Java não suporta eventos e delegados. Até onde sei.
- Em Java, todos os métodos são virtuais
- Ferramentas de desenvolvimento: acredito que ainda não existe uma ferramenta como o Visual Studio. Especialmente se você trabalhou com edições de equipe, saberá o que quero dizer.
Por favor, adicione outras pessoas que julgue relevantes.
Atualização: Apenas me veio à mente, o Java não tem algo como atributos personalizados em classes, métodos etc. Ou não?