How to call Java code from C#?
IKVM!
It is really awesome. The only problem is that it DOES add ~30MB to the project. log4net and Spring .NET are available as well, but if living with existing code, go the ikvm route.
I am author of jni4net, open source interprocess bridge between JVM and CLR. It's build on top of JNI and PInvoke. No C/C++ code needed. I hope it will help you.
alternatively you could write a webservice/xmlrpc layer between the two.
I seem to remember that there is a tool calles grassshopper that will compile your .Net code into JVM bytecode.
I've also heard good things about IKVM
There are so many options,
sockets
web services
Message bus
Use a/any database! (sorry if sound silly)
Here's a discussion which may be handy: https://gridwizard.wordpress.com/2015/01/14/java-and-dotnet-interop
Really depends on what you're building!