Java/.NET integration made easy

Technical Introduction

JuggerNET is a development tool that solves complex Java/.NET integration problems. At a high level, it consists of the following components:

  • a code generator, GUI and command line.
    The code generator takes Java bytecode as input and generates platform- and compiler-portable C# source files, batch build files, and project files. The code generator represents our expert knowledge of the design-time aspects of Java/.NET interoperability. Unless you're an OEM customer, you usually only use the code generator in-house.

    Code Generator GUI
  • a runtime library.
    The runtime library comes in two flavors, strongly named and not strongly named, and provides an abstraction layer around the generic aspects of Java and .NET integration. The runtime library represents our expert knowledge of the runtime aspects of Java/.NET interoperability. The JuggerNET runtime leverages the JunC++ion runtime for the JVM integration angle. You ship the runtime library as part of your finished integration solution.
  • a Shared JVM server.
  • lots of examples.

Typical Workflow (.NET calling Java)

You start out with some Java API that you wish to publish to .NET so that C#, VB.NET, or other .NET language developers can use it. The Java API in question could be your own product's API, or it could be a third-party API that you "inherited" from a different group.


Well, in real life it's not usually quite that simple because


you get the picture.


What's next, now that you have some generated C# source files? You can use the generated batch files, or project files to compile the C# sources into an integration assembly and then start using the library from your own projects.


Distinguishing Factors



Code Generator feature matrix

Feature Explanation
High customizability You can disable (almost) any type, any method, any field from becoming available in .NET.
Build support generator The code generator generates build batch files and Visual Studio project files.

Generated code feature matrix

Feature Explanation
Exception-safe The generated code can be used in the presence of .NET exceptions without leaking objects on the Java side.
Callback support A Java interface can be flagged as a callback interface, causing the generation of callback support. This means that you can implement the Java interface in .NET and have the Java side call your .NET implementation asynchronously (EventListeners, etc.)
Highly usable types The generated code is just about as usable as the underlying Java types and we just keep adding features to make it feel more native.
Fewest possible surprises It is impossible to generate code that is totally without surprises. For example, .NET has a different array model than Java and that will have to be reflected somehow.

Runtime feature matrix

Feature Explanation
Works with virtually any Java2 JRE In JNI mode, JuggerNET-enabled .NET applications have been tested with a multitude of JVMs, starting with Sun JRE 1.2.2.
Out-of-process (Shared JVM) deployment option This is a much slower mode of operation, but you can avoid having to deploy Java with your .NET application; just one more deployment option for you.
Mature configuration framework You need to tell your .NET application where to find the Java parts of the application and how to initialize the JVM or connect to the shared JVM server.



juggernet home
home products support customers partners newsroom about us contact us