The fact is that it's quicker to develop high quality software on the MS platform. Their server OS's are generally quite good, and they have a superior level of integration compared to a similar Linux server performing similar duties (e.g. IIS, SQL, Exchange type stuff). I've developed a whole lot of Linux/UNIX software and a moderate amount of Windows software. Developing in Java is reasonably nice, I'd give the experience a 7/10. Developing in
.NET I'd give a 9/10. Most Linux people who blather on about Microsoft aren't real developers, or have little or no experience developing modern application software in Windows. Typically they're sysadmin-cum-developers who made the move from sh/perl to PHP/Ruby type environments and now consider themselves uber-developers.
There are things Linux excels at. Scientific computing. EDA. Supercomputing. Batch systems running certain types of afforementioned applications. "glueware". When we do write Java services for specific reasons (deployment issues into a predominately Linux environment, for example) we do prefer to host them on Linux.
Microsoft continues to hold hearts and minds of developers simply because they've made .NET so nice and because there's nothing like VS2008+TFS. Continued ranting from the SlashDot crowd isn't ever going to change that, no matter how many stars you wish upon.