The choice of language always depends on what you and your team know best and the problem at hand.
It's not common to do scientific computing with heavy numerical methods in Ruby or PHP; no one writes web apps in FORTRAN. The problem you're solving will affect the choice.
Your deployment environment will also affect the .NET versus Java EE choice. If you're a 100% Microsoft shop, .NET is an easy choice. If you have a heterogeneous environment, maybe Java EE is for you. If you like Linux, perhaps Java EE is preferred over Mono.
.NET and Java EE have evolved to solve similar kinds of problems. There's almost a 1:1 correspondence between features in the language, except for some advances like closures that .NET has added.