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.