I just heard a story about a shop that used IKVM to good effect.  The existing system has server-side and fat-client pieces, mostly implemented in Java, though they have some C++.  The Swing clients communicate to the server pieces via a simple sockets protocol ("we don't need no steenking HTTP").  Also the design uses a bit of JNI on the server side. Anyway, they had a customer requirement to run the server-side portion on .NET, so they used IKVM to convert the existing Java Jars to DLLs and EXEs.  The existing Java/Swing fat clients, unchanged, can now communicate over the same sockets channel to the new, IKVM-converted server-side apps.  Totally transparent interop.