Java and .NET. individually is a great platform, but together a practical necessity in the modern enterprise. Interoperability can take one of three possible shapes, in-proc, out-of-proc and resource sharing. Resource sharing is perhaps the easiest to understand and recognize, using JDBC or ADO.NET. The database access layers each deal with the necessary details to make the data comprehensible to the appropriate platform, leaving the programmer free to focus on working with the data itself. The most intrusive approach to interoperability is the in-process approach, where a single process hosts both the JVM and the CLR simultaneously.