Para saber o que realmente está acontecendo resolvi fazer uma consulta ao mestre Google (mais especificamente ao Google Trends). O resultado está no gráfico abaixo:
É notável que Java vem perdendo espaço ao longo dos anos para outras linguagens/plataformas. Acredito que em muitos dos casos é em virtude dos seguintes fatores:
- Burocracia no desenvolvimento (arquivos XML, deployment descriptors, taglibs, frameworks para apresentação-integração-persistencia, deployment de WARs-JARs-EARs-CARs etc)
- Nível de conhecimento necessário para se criar "boas" aplicações (Design Patterns, Tiers/Layers, Estratégias de integração e persistência, etc).
"Neste ponto quero ressaltar que todos os itens mencionados acima deveriam ser considerados em qualquer desenvolvimento, independente da plataforma ou linguagem. Porém é mais comum ver isso nas pessoas que conhecem Java."
- Complexidade na criação das tarefas básicas, como por exemplo, criar um CRUD.
Minha opinião é: existe espaço para todas elas, principalmente para o desenvolvimento com todos os pontos ruins acima. A escolha certa fica pela combinação do nível de conhecimento da tecnologia e pelo grau de complexidade da aplicação. Abaixo segue alguns de meus critérios na hora de começar um novo projeto (desde que eu tenha escolha, é claro):
- .NET: É interessante utilizar a produtividade do Visual Studio para se criar aplicações que não demandem de tantas complexidades técnicas. A produtividade é notável, principalmente se aliado a componente de terceiros (AJAX, Gráficos e Relatórios), e os resultados tendem a agradar os usuários, que é o que mais importa.
- Java: Para tarefas mais complicadas de integração, requisitos apurados de desempenho, necessidade da multiplataforma e outras coisas complicadas eu defendo sua utilização, principalmente devido a dois principais pontos: sucesso no desenvolvimento de aplicações críticas e liberdade com a vasta opção de componentes open-source.