Ho 10+ anni di esperienza con Java (dalla versione 1.1, davvero!) E 7 anni di esperienza con .NET (principalmente C #).
Hai una decisione molto presa da prendere, ma soprattutto dovresti provare a scomporre in un paio di scenari:
Applicazione desktop
Se stai sviluppando un'applicazione desktop devi scegliere la piattaforma principale con cui lavorerai. Se si tratta di una piattaforma Microsoft, usa .NET, non ci sono soluzioni migliori della piattaforma sviluppata dalla stessa nave madre. Se si tratta di uno scenario Linux o multipiattaforma, prendere in considerazione Java o passare 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 creazione di nuove funzionalità nel linguaggio e nella piattaforma / framework. Tutto proviene da un unico fornitore e sicuramente questo è un vantaggio. Puoi anche utilizzare alcuni componenti molto potenti come DevExpress, ad esempio (Java non si avvicina nemmeno a qualcosa di simile a quello che il team DX ha messo insieme nel corso degli anni e questo rappresenta un enorme aumento della produttività).
Debolezza: per le applicazioni enterprise .NET non è maturo come Java. Non hai molti fornitori che creano software enterprise in .NET come per Java.
Giava
Forza: più maturo (già spiegato) e ha una grande comunità con diversi grandi progetti open source che possono aiutare. Diversi cosiddetti progetti open source di .NET sono in realtà solo una copia-cat di progetti di Java.
Debolezza: Oracle possiede Java (lo so, non il JCP) e questo è sicuramente un rischio da considerare. Le loro intenzioni non sono molto chiare e personalmente non mi piace dove sta andando la lingua in questo momento (so che molti sviluppatori Java hanno preoccupazioni simili).
Applicazione lato server
Fondamentalmente sono gli stessi argomenti delle applicazioni basate sul Web, ma poiché non devi preoccuparti troppo dell'interfaccia utente, Java in questo caso diventa più forte. Ma ancora una volta, se la piattaforma è principalmente Windows .NET potrebbe essere una scelta migliore.
Considerazioni generali
Nel complesso, a mio avviso, .NET ha il vantaggio principalmente a causa della stretta integrazione di Visual Studio 2010 (senza dubbio il miglior IDE disponibile), MS SQL, Entity Framework, IIS e così via. Tutto ciò rappresenta un enorme aumento della produttività e ho tonnellate di esperienza a dimostrarlo. 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ù forte che mai nel senso che .NET sarà lì per un po '. Quindi, guardando avanti tra 10-15 anni, mi sento più sicuro con .NET rispetto a Java.