Evo malo i ja da trabunjam na ovu temu :)
Što se sintakse i semantike tiče, C# je praktično nastao kao MS-ov odgovor na Javu. Obzirom da je MS imao mogućnost da par godina prati šta je to dobro ili loše kod Jave, C# je uključio određena poboljšanja u odnosu na Javu, na šta je nedavno usledio SUN-ov odgovor u vidu kontroverznog Java 5 (jdk 1.5.x).
Lično mislim da je najveća prednost C# u odnosu na Javu odličan framework, kao i integrisanost sa ostalim MS tehnologijama. Onaj kome je Windows primarna razvojna platforma, svakako bi trebao da se pre opredeli za C# nego za Javu, tim pre što će u Longhornu VM za C# (.Net framework) biti integrisan u sistem. To praktično znači da će sve .net aplikacije raditi praktično kao native aplikacije, bez ikakvog dodatnog softwera koji je potreban da se instalira da bi se to poteralo. Možda ovo ne zvuči toliko bitno u prvom trenutku, ali ako si ikada do sada pravio neki sitan programčić u Javi koji ima ~1M ili manje, a bio prisiljen da uz instaler uključiš JRE koji ima 15M znaš o čemu pričam.
Sa druge strane, prednosti Jave su platformska nezavisnost (ne verujem preterano u mono projekat), ogromna baza Java proramera, sve veći broj jako dobrih besplatnih open source razvojnih okruženja (NetBeans, Eclipse ... ), odlična podrška j2me platforme na mobilnim telefonima itd.
Apsolutno se ne slažem sa konstatacijom weB_KiLeR-a da je Java mrtav jezik, niti smatram da će C# ili .Net uništiti Javu. Neko je jednom u nekoj j2ee vs. .Net raspravi rekao da će Java opstati na velikim enterprise sistemima, što imajući u vidu ko sve gura Javu (SUN, IBM, ORACLE) ima smisla.
Za kraj evo i jednog viđenja ove teme od strane Bruce Eckel-a :
http://www.mindview.net/WebLog/log-0035