26

We've developed a Java application and would like to use this application from a C# client. The application has dependencies on Spring, Log4j, ...

What would be the most efficient mechanism - make DLL(s) from Java code, ... - to achieve this ?

4 Answers4

30

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.

MagicKat
  • 9,695
  • 6
  • 32
  • 43
  • 5
    In the latest version of IKVM, the JDK library is broken out into separate assemblies. Depending on what you need, you probably won't have the full 30MB of baggage anymore. The jdk core assembly is about 5 MB. – Todd Stout Jul 06 '09 at 21:31
15

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.

Pavel Savara
  • 3,427
  • 1
  • 30
  • 35
2

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

Omar Kooheji
  • 54,530
  • 68
  • 182
  • 238
2

There are so many options,

  1. sockets

  2. web services

  3. Message bus

  4. 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!

Jaye
  • 152
  • 4
  • The OP specifically requested 'calling'. All the approaches you identify involve 'sending messages'. The last - database - option is arguably even less direct by requiring polling of a staging table. – Pekka Aug 14 '16 at 20:22
  • Would add to the list gRPC streaming with proto3. – Vinigas Jul 17 '20 at 08:49