Fora o que falaram, tem as vantagens e desvantagens das duas plataformas, e do vendor-lockin.
Uma coisa que reclamam muito no mundo Java é a demora para evoluir a linguagem, no JCP demora anos para uma proposta ser feita, discutida, aprovada e implementada. Entrar em consenso com muitas pessoas de muitas empresas, cada uma com a sua agenda, é muito difícil. No mundo do .Net, a Microsoft disse, está feito.
Por outro lado, a especificação pode sair uma caca no lado do MS por não passar mais tempo discutindo com a comunidade sobre o que é melhor, porém a JCP já fez isso também, só para corrigir um pouco três anos depois numa nova especificação(por exemplo, Criteria API só vai sair na JPA 2.0, coisa que o Hibernate já faz desde anos antes do 1.0).
E terceiro, no .Net, se a MS levá-lo para um lado que pouca gente gosta, estará feito. Se quiser matar, estará morto. Para o Java, não dá para matar uma comunidade.
Dá uma raiva dessa lerdeza para lançar o Java 7, tem um monte de gente esperando algo como o invokedynamic, a última trava para liberar o boom de desenvolvimento na plataforma, e daqui a pouco vamos para o quarto ano de espera por isso.