.NET
As the frequency of .NET and Java applications increases, we're headed for an interoperability imperative—we have to get both sides to work together. One way to do that is by adding an interoperability layer that gives .NET direct access to Java classes.
Using technologies such as shared databases and messaging to provide Java/.NET interoperability may not be as sexy as Web services or binary interoperability, but offers the least risk and the greatest flexibility.