We are rapidly moving towards a more open environment when it comes to technology. A question that often comes up is why aren't .NET and Java interoperable?
Well in fact they are.
Both .NET and Java are important languages in financial services. So Microsoft's strategy supports interoperability with Java. Additionally, .NET is very prevalent in customer facing technologies and has enormous advantages over other languages.
Additionally major development exercises require knowledge of at least one and ideally several of these languages which can be a time consuming and costly exercise.
But with .NET, Microsoft integrated almost everything in one package.
So if you start to learn .NET, all you need to learn is: C# (VB.NET is also a good option), ASP.NET, XML - three languages only instead of several. This means that it is generally quicker and cheaper to do development work in .NET. Additionally, the reason why most Microsoft programs are written in .NET is because at Microsoft we haven't been able to achieve the quality our clients expect from us by writing in other languages.
C# can be used for scripting for client validation, to create business logic, for server side programming, for Windows Applications, for Console Applications, for component designing and can use XML as data, as metadata and connecting tool between database and business logic again you need C# implementation of ADO.NET.
To put the things online you need ASP.NET on the server side and to make reusable web components, you have the concept of Web Services like Windows Services developed in VC++ but with no physical boundaries. Just one language and we can use it almost everywhere.
Both Java and .NET support an open environment for developers. Sun, now part of Oracle retains exclusive and unlimited legal rights to its Java intellectual properties, and the Java community is subject to those rights.
In contrast, Microsoft has developed C# and .NET without a formal community contribution system, the language and some parts of the executable format and runtime have been standardized and freely distributed through ECMA and ISO in an open and vendor-neutral process, rather than one that retains veto and copy rights for Microsoft.
.NET is designed to be a multi-lingual programming environment, because at Microsoft we recognize the importance of this capability to programming productivity and we are committed to interoperability with other languages and in particular with open source communities.
For more details, please see the following documents from Microsoft Research:
Extending the .NET Common IL for Functional Language Interoperability by Don Syme, Microsoft Research
F#: Putting the 'Fun' into 'Functional' by Rob Knies
Relationships it's Complicated by Gianugo Rabellino