Ho più di 10 anni di esperienza con Java (dalla versione 1.1, davvero!) e 7 anni di esperienza con .NET (principalmente C #).
Hai una decisione ben precisa, ma soprattutto dovresti provare a suddividere in un paio di scenari:
Applicazione desktop
Se stai sviluppando un'applicazione desktop devi andare con la piattaforma principale con cui lavorerai. Se si tratta di una piattaforma Microsoft che utilizza .NET, non esiste una soluzione migliore della piattaforma sviluppata dalla nave madre stessa.
Se si tratta di uno scenario Linux o Multi-piattaforma, considera Java o passa a una soluzione basata sul Web.
Applicazione basata sul Web
Questa è una decisione molto difficile da prendere perché ognuno ha la propria forza e debolezza.
Eccone alcuni:
C #
Forza: Attualmente ha più slancio nella costruzione di nuove funzionalità nel linguaggio e nella piattaforma / framework. Tutto viene da un fornitore e sicuramente questo è un vantaggio. Puoi anche utilizzare alcuni componenti molto potenti come DevExpress, ad esempio (Java non si avvicina nemmeno ad avere qualcosa di simile a quello che il team DX ha messo insieme nel corso degli anni e questo rappresenta un enorme incremento di produttività).
Debolezza: Per le applicazioni aziendali. NET non è maturo come Java. Non hai molti produttori che creano software enterprise in .NET come per Java.
Java
Forza: Più maturo (già spiegato) e ha una grande comunità con diversi grandi progetti open source che possono aiutare. Diversi progetti .NET cosiddetti open source sono in realtà solo una copia di progetti di Java.
Debolezza: Oracle possiede Java (lo so, non il JCP) e questo è sicuramente un rischio da prendere in considerazione. Le loro intenzioni non sono molto chiare e personalmente non mi piace dove la lingua sta andando adesso (so che molti sviluppatori Java hanno preoccupazioni simili).
Applicazione lato server
Fondamentalmente sono gli stessi argomenti delle applicazioni basate sul web, ma perché non devi preoccuparti troppo dell'interfaccia utente Java diventa più strong in questo caso. Ma ancora una volta, se la piattaforma è per lo più Windows .NET potrebbe essere una scelta migliore.
Considerazioni generali
Nel complesso, a mio avviso, .NET ha il vantaggio soprattutto a causa della stretta integrazione di Visual Studio 2010 (non ci sono i migliori IDE disponibili), MS SQL, Entity Framework, IIS e così via. Tutto ciò rappresenta un enorme aumento di produttività e ho un sacco di esperienza che lo dimostra. Inoltre, lavoro principalmente con sviluppatori Java che si sono rivolti a .NET e condividono sostanzialmente la stessa opinione.
Penso che sia anche un buon punto che Microsoft sia più strong che mai che .NET sarà lì per un po '. Quindi quando guardo 10-15 anni avanti mi sento più sicuro con .NET che Java.