There are several advantages to the Java side. Microsoft is still sketchy on the Enterprise side. There are some various "black claims" as to their scalability but nothing has really been demonstrated to the acceptance of the software community.
Secondly, there has been a great deal of worldwide participation in developing free resources and addendums to the Java platform (you could call Java Ranch an example of this).
Finally, if you consider Microsoft vs.
J2EE, they don't offer a single solution, i.e. there is no container. If you want transactions, you need to go buy MTS, etc. Their answer seems fragmented to me at this time.
Also, it's important to recognize that Microsoft has now included Java in .NET with J#. To me this means even they are admitting that Java is here to stay.