It depends on what you call "Java". If Java is just the language, there are products which would enable you to use Java as a .NET language. Please see:
http://en.wikipedia.org/wiki/.NET_languages[
^].
If by "Java" you mean something which works with Java Virtual Machine (
http://en.wikipedia.org/wiki/JVM[
^]), roughly speaking, there is no compatibility.
Theoretically speaking, it's possible to make some interoperability bridge, but this is such a long way that I would hate to discuss it in detail. I don't think it can make any practical sense. I don't know if such projects exist. In brief, you can automatically re-build a .NET assembly the way that it can export some static methods as unmanaged. In pure C# this is not possible, but CIL standard allows it. There are few CodeProject articles explaining how to do it, complete with the code which uses ILDASM and ILASM (IL Assember and Disassembler) under the hood. This is itself a very interesting topic (many developers claim this is not possible, but this is not true), but this is only one of the required steps. The alternative way would be using one more work-around state with COM. As a result, you could have either a mixed-mode assembly (managed+unmanaged) or a COM DLL and use it with Java through JNI (
http://en.wikipedia.org/wiki/JNI[
^],
http://electrofriends.com/articles/jni/jni-part1-java-native-interface/[
^]).
I cannot imagine a fully sober developer who would volunteer to go into all this mess. CLR and Java are two different words; they have a lot of in common but are much more distant from each other than either Java or CLR on very different platforms.
[EDIT]
However, please see this recent answer:
can we reuse DLL developed in C# in java projects[
^].
—SA