Ted Neward has penned a column addressing Why organizations should be concerned with Java and .NET Interoperability.   In essence, he says: While there is nothing you can do in .NET, than you cannot do in Java, and vice versa, both Java and .NET have their strengths.  Therefore we should want apply the platform in domains where it is strong, and then interconnect them where it makes sense.

I don't know if I completely agree with Ted's  take. It seems simplisitc and it seems like a point-in-time statement.  Interop is important, but not because there are particular unique strengths to Java, or to .NET. 

The primary reason I see for interop is... .heterogeneity happens.  There will continue to be disparate systems.  Among different technology platforms, there will continue to be discontinuous advances in productivity, performance, ease of use or ease of development.  Because of this, heterogeneity will persist. And so interop is a requirement. 

A secondary reason I see for interop is, to keep options open.  Interop begets a flexible information architecture where disparate pieces can cooperate, and yet evolve independently.  Some people call this SOA. I call it business flexibility.   The evolution might mean - a new implementation, a new technology platform, and so on.  Interop allows this.  As a secondary benefit, Interop opens up competition, which is good for the consumer.