JCOBridge.Examples.Templates 2.1.1

Suggested Alternatives

MASES.JCOBridge.Templates

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet new install JCOBridge.Examples.Templates::2.1.1
This package contains a .NET Template Package you can call from the shell/command line.

JCOBridge Template Usage Guide

Getting Started

Install templates

  1. Run the following command on a machine where .Net Core is installed:

dotnet new install JCOBridge.Examples.Templates

Now you have installed different templates: a simple console app, a simple app will show an AWT frame, a simple app will invokes scala classes, a simple app will invokes .NET from Java

All templates targets both .NET Core 3.1 and .NET Framework (> 4.6.1)

Use one template

  1. Run the command to install the simple console app:

dotnet new jcobridgeConsoleApp

Run the examples

  1. Run the application setting the location of the JRE-JVM library:

dotnet run --framework netcoreapp3.1 --JVMPath:"C:/Program Files/Java/jre1.8.0_241/bin/server/jvm.dll"

dotnet run --framework net461 --JVMPath:"C:/Program Files/Java/jre1.8.0_241/bin/server/jvm.dll"

Advanced: .NET invoking JVM languages

A lot of new programming languages (see List of JVM languages) use a JVM as runtime environment. The ready made template jcobridgeScalaApp is an example able to run Scala code from a .NET environment:

Use jcobridgeScalaApp template

  1. Run the command to install the scala app:

dotnet new jcobridgeScalaApp

Run the examples

  1. Run the application setting the location of the JRE-JVM library:

dotnet run --framework netcoreapp3.1 --JVMPath:"C:/Program Files/Java/jre1.8.0_241/bin/server/jvm.dll"

dotnet run --framework net461 --JVMPath:"C:/Program Files/Java/jre1.8.0_241/bin/server/jvm.dll"

Advanced: JVM invoking .NET API

Another use of JCOBridge is to invoke .NET API from JVM (or JVM enabled languages). The jcobridgeJavaNativeApp template is the starting point to write code in JVM which invokes .NET API. Any JVM enabled language (see List of JVM languages) can be used instead of Java to invoke .NET API. The template can be the starting point to use IoT boards with ready made packages for GPIO management from any JVM enabled language.

Use jcobridgeJavaNativeApp template

This template needs a JDK to be used because the Java side needs to be compiled.

  1. Run the command to install the template app:

dotnet new jcobridgeJavaNativeApp

Compile the .NET side of the project

  1. In the project root folder run the following command:

dotnet build net/jcobridgeJavaNativeApp.csproj

Compile the Java side of the project (optional)

  1. This step is optional beacuse the template comes with a compiled version of JavaNativeApp.java. Otherwise, in the project root folder run the following command:

javac src/JavaNativeApp.java -cp OutputNugetCore/netcoreapp3.1/JCOBridge.jar

Run Java code

  1. In the project root folder run the following command:

java -cp OutputNugetCore/netcoreapp3.1/JCOBridge.jar;./src JavaNativeApp --CoreCLRRID:win-x64

or

  1. Open your preferred Java editor in the example root and run the java code.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETFramework 4.6.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated

Added a new template which invokes .NET API from a running JVM.
The same template has a short stub where CLR invokes the JVM during an API invocation started from JVM: using DynJVM property a developer can access every class/object/field available within the JVM to complete a task.
The jcobridgeJavaNativeApp template can be expanded, using the others available or using the examples on https://www.jcobridge.com/, to create code which is able to manage events raised from JVM or CLR which invokes methods on CLR or JVM.
One example of events from JVM is available in the jcobridgeAWTApp: in that case the event is raised from the Graphical subsystem, but can be raised from any object.