IKVM 8.2.0-prerelease0392

IKVM - Java Virtual Machine for .NET

Nuget GitHub

IKVM includes a Java Virtual Machine implemented in C#. It provides tools to easily convert Java source code or compiled .jar files into .NET assemblies. Conversely, it can also be used to compile .NET assemblies in Java.

Documentation

See the tutorial to get started or IKVM.NET In Details for a more in-depth look.

Support

  • .NET Framework 4.6.1 and higher
  • .NET Core 3.1 and higher
  • .NET 5 and higher

Build

Project should open within Visual Studio. Project can also be built with MSBuild on a Windows host. Project cannot currently be built on a Linux host, nor with an exclusively .NET Core version of MSBuild.

The OpenJDK JDK8u source hierarchy and build results for Linux/x64 is required. These build artifacts cannot be built on Windows, or modern Linux hosts. Instead, they must be built on a host with GCC 4.3 available. Debian Lenny is known to work acceptably. The CI/CD GitHub action can serve as a demonstration of this.

The GitHub action's generated artifact can simply be extract into the appropriate spot in openjdk8/build to avoid building it yourself. Navigate to the GitHub Actions, find the latest successfuly build for the branch you're concerned with, and download the openjdk8-build-linux-x86_64-normal-server-release artifact. Extract this zip file into openjdk8/build.

IKVM includes a native library named 'ikvm-native' which must be built for the JNI functionality to work. The solution includes .vcxprojs that build both the win-x86, win-x64, linux-x86 and linux-x64 versions of these libraries. However, the linux-* version require WSL to be abled on your development machine. Within this WSL distribution ensure you have installed the clang toolset. For Debian based distributions, this should be as simple as typing apt-get install clang.

Project

  • IKVM.sln Main solution file for the project.
  • IKVM.artifacts.msbuildproj MSBuild project file that builds the output artifacts, including the NuGet packages.
  • IKVM.Runtime The main executable core of IKVM. Provides services used by IKVM.Java.
  • IKVM.Java The OpenJDK distribution included with IKVM. This project is heavily customized to compile the OpenJDK Java source files and produce a .NET assembly from them.
  • ikvm java compatibility executable. Launches a JVM. Can be used to execute Java applications with entry points.
  • ikvmc ikvmc executable. Transforms Java class files or JAR files into .NET libraries or executables.
  • ikvmstub ikvmstub executable. Generates Java JAR files for .NET assemblies. When building Java code that depends on .NET code, these stubs can be used as references.
  • IKVM.Tests Various unit tests against IKVM functionality.
  • IKVM.Runtime-ref "Reference" version of the IKVM.Runtime project. Due to a circular dependency between IKVM.Java and IKVM.Runtime, IKVM.Java must build against a partial copy of IKVM.Runtime.
  • IKVM.Java-ref "Reference" version of the IKVM.Java project. Due to the circular dependency between IKVM.Java and IKVM.Runtime, IKVM.Runtime must build against a partial copy of IKVM.Java.
  • IKVM-pkg To untangle the ProjectReferences between the circular dependencies, this project generates the NuGet package output, including all of it's required dependencies, and the full version of the underlying IKVM assemblies.

Versioning

IKVM uses the Semantic Versioning specification, with a unique twist. Since the project tracks compatibility with the Java SE specification, the major version is always the version of the JDK we claim to support. Otherwise major/breaking IKVM releases are denoted by an increment of the minor version. Other releases are denoted by an increment of the patch version.

Semantic Versioning is accomplished automatically by GitVersion in Mainline mode. The main branch functions as the release branch. Every commit to main results in an increment of the patch version and a release. The develop branch represents a prerelease staging area. Builds within the develop branch inherit the NEXT version number of the main branch, with a prerelease tag followed by the number of commit separating develop from the last release.

Increases in the major and minor version are accomplished manually by introducing a commit with a message containing a line such as +semver: major or +semver: minor. The process of creating a new major or minor release is simply to bump the version with the introduction of a commit message. The GitHub Actions should automatically generate the git tag and GitHub release, and publish the proper NuGet packages to the proper places.

Showing the top 20 packages that depend on IKVM.

Packages Downloads
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
66
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
64
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
63
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
60
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
59
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
58
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
57
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
56
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
55
gherkin
A fast lexer and parser for the Gherkin language based on Ragel
54

Version Downloads Last updated
8.14.0 12 10/02/2025
8.14.0-tags-8-14-0-pre-1.1 8 10/03/2025
8.13.4 9 09/30/2025
8.13.3 13 09/22/2025
8.13.2 13 09/08/2025
8.13.1 19 08/08/2025
8.13.0 12 08/10/2025
8.12.0 25 06/30/2025
8.11.2 47 03/11/2025
8.11.1 47 02/18/2025
8.11.0 55 02/05/2025
8.11.0-pre.4 47 02/05/2025
8.11.0-pre.2 36 01/02/2025
8.11.0-pre.1 63 12/16/2024
8.10.3 49 11/03/2024
8.10.2 50 09/18/2024
8.10.1 54 08/22/2024
8.10.0 46 08/18/2024
8.10.0-pre.1 50 08/15/2024
8.9.1 59 07/14/2024
8.9.0 52 07/14/2024
8.9.0-pre.3 52 07/10/2024
8.9.0-pre.2 55 07/10/2024
8.9.0-pre.1 53 07/15/2024
8.8.1 57 06/06/2024
8.8.0 54 04/21/2024
8.8.0-pre.1 63 04/11/2024
8.7.6 64 04/10/2024
8.7.5 58 02/16/2024
8.7.4 64 01/23/2024
8.7.3 80 12/21/2023
8.7.2 82 01/27/2024
8.7.1 91 11/04/2023
8.7.0 76 11/04/2023
8.7.0-pre.3 84 11/04/2023
8.7.0-pre.2 92 10/17/2023
8.7.0-pre.1 75 10/19/2023
8.6.4 83 09/11/2023
8.6.3-tags-8-6-3-pre-24.1 77 08/29/2023
8.6.3-tags-8-6-3-pre-11.1 80 08/26/2023
8.6.2 81 08/09/2023
8.6.1 77 08/17/2023
8.6.0 87 08/15/2023
8.5.2 79 08/08/2023
8.5.1 87 08/05/2023
8.5.0 76 08/16/2023
8.5.0-prerelease0001 84 08/10/2023
8.5.0-develop2513 86 08/08/2023
8.5.0-develop1599 76 08/07/2023
8.5.0-develop0690 84 08/07/2023
8.4.5 58 07/15/2023
8.4.5-prerelease0001 73 07/15/2023
8.4.4 76 07/15/2023
8.4.4-prerelease0001 100 07/15/2023
8.4.3 83 08/06/2023
8.4.2 77 08/11/2023
8.4.1 82 08/09/2023
8.4.0 77 08/05/2023
8.4.0-prerelease0001 78 09/22/2023
8.3.3 101 07/15/2023
8.3.2 75 08/04/2023
8.3.1 86 08/07/2023
8.3.0 82 08/10/2023
8.3.0-prerelease0395 80 08/16/2023
8.3.0-prerelease0394 96 09/19/2023
8.2.3 76 09/11/2023
8.2.2-prerelease0856 87 08/07/2023
8.2.2-prerelease0553 68 08/23/2023
8.2.2-prerelease0396 77 09/11/2023
8.2.2-prerelease0241 82 08/17/2023
8.2.2-prerelease0163 95 08/10/2023
8.2.2-prerelease0106 93 08/04/2023
8.2.2-prerelease0051 80 08/12/2023
8.2.1 70 09/30/2023
8.2.0 85 10/20/2023
8.2.0-prerelease3420 79 09/11/2023
8.2.0-prerelease2777 83 10/20/2023
8.2.0-prerelease2138 83 10/23/2023
8.2.0-prerelease1515 76 11/11/2023
8.2.0-prerelease0911 84 09/25/2023
8.2.0-prerelease0899 79 08/02/2023
8.2.0-prerelease0892 71 08/09/2023
8.2.0-prerelease0809 75 08/14/2023
8.2.0-prerelease0392 75 08/17/2023
8.1.5717 59 08/16/2023
8.0.5449.1 68 07/15/2023
8.0.5449 63 08/04/2023
7.4.5196 60 07/15/2023
7.3.4830 62 07/15/2023
7.2.4630.5 62 08/11/2023
7.1.4532.2 49 08/16/2023
7.0.4335 70 08/15/2023
0.46.0.1 72 08/10/2023