wat ik vooral moeilijk vind (ik ben er maar net mee begonnen, met c#) is de manier van werken van visual studio en c#.
In java is het zeer simpel: heb je 1 klasse en daar begin je met je JFrames en kun je daar alles in zetten wat je wil.
In c# heb je voor 1 klein venstertje al 3 bestanden nodig die elk een aparte functie hebben. Daar moet je je een beetje inwerken.
Qua IDE's gebruik ik voor java netbeans. Netbeans helpt je ook wel wat door code aan te vullen, maar visual studio gaat een stapje verder door met een drag en drop systeem te werken waardoor je minder code moet schrijven. Als je dat doorhebt gaat het wel sneller maar voor mensen die gewoon zijn alles zelf te schrijven is het wennen.
Een andere kritiek punt is de integratie van componenten met de IDE's. In netbeans is dat zeer gemakkelijk te zoeken en te installeren en te gebruiken. In VS moet je zelf nog exe's gaan zoeken en is het niet zo simpel om alles te doen samen werken (ik zoek zelf nog altijd hoe ik sql server laat werken met VS).
Zuiver qua taal zijn java en c# vrijwel gelijk, de grootste overeenkomst is garbage collecting en zijn de grootste verschillen denk ik dat klassen in c# nog werken met een namespace boven de klassen en dat java natuurlijk multi OS is.