IKVM 8.2.0-prerelease0392

This is a prerelease version of IKVM.
There is a newer version of this package available.
See the version list below for details.
dotnet add package IKVM --version 8.2.0-prerelease0392
NuGet\Install-Package IKVM -Version 8.2.0-prerelease0392
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IKVM" Version="8.2.0-prerelease0392" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add IKVM --version 8.2.0-prerelease0392
#r "nuget: IKVM, 8.2.0-prerelease0392"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install IKVM as a Cake Addin
#addin nuget:?package=IKVM&version=8.2.0-prerelease0392&prerelease

// Install IKVM as a Cake Tool
#tool nuget:?package=IKVM&version=8.2.0-prerelease0392&prerelease

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.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (93)

Showing the top 5 NuGet packages that depend on IKVM:

Package Downloads
TikaOnDotNet

Bare-bones IKVM Java-to-.NET port of Apache Tika. You'll want to install TikaOnDotNet.TextExtractor.

Stanford.NLP.CoreNLP

Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, and mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. Stanford CoreNLP is an integrated framework, which make it very easy to apply a bunch of language analysis tools to a piece of text. Starting from plain text, you can run all the tools on it with just two lines of code. Its analyses provide the foundational building blocks for higher-level and domain-specific text understanding applications.

CuratorIkvm

Curator client library & recipes for Zookeeper. This is the IKVM version; which is to say that this is compiled from Java to .NET

Stanford.NLP.NER

Stanford NER (also known as CRFClassifier) is a Java implementation of a Named Entity Recognizer. Named Entity Recognition (NER) labels sequences of words in a text which are the names of things, such as person and company names, or gene and protein names. The software provides a general (arbitrary order) implementation of linear chain Conditional Random Field (CRF) sequence models, coupled with well-engineered feature extractors for Named Entity Recognition.

OpenNLP.NET

The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, and coreference resolution. These tasks are usually required to build more advanced text processing services. OpenNLP also included maximum entropy and perceptron based machine learning.

GitHub repositories (5)

Showing the top 5 popular GitHub repositories that depend on IKVM:

Repository Stars
ikvmnet/ikvm
A Java Virtual Machine and Bytecode-to-IL Converter for .NET
msasanmh/SecureDNSClient
A DNS Client Supporting DNSCrypt, DoH, DoT, UDP And TCP.
vivami/SauronEye
Search tool to find specific files containing specific words, i.e. files containing passwords..
paulirwin/JavaToCSharp
Java to C# converter
fireshaper/Omnibus
Search for and download comics that are added to GetComics.info easily
Version Downloads Last updated
8.8.0 300 4/17/2024
8.8.0-pre.1 377 3/28/2024
8.7.6 359 4/8/2024
8.7.5 19,720 1/28/2024
8.7.4 3,604 1/18/2024
8.7.3 12,714 12/9/2023
8.7.2 947 12/8/2023
8.7.1 30,741 11/1/2023
8.7.0 1,114 10/30/2023
8.7.0-pre.3 269 10/27/2023
8.7.0-pre.2 688 10/16/2023
8.7.0-pre.1 537 10/10/2023
8.6.4 39,171 9/10/2023
8.6.3-tags-8-6-3-pre-24.1 755 8/10/2023
8.6.3-tags-8-6-3-pre-11.1 275 8/8/2023
8.6.2 44,893 7/9/2023
8.6.1 5,405 7/7/2023
8.6.0 1,323 7/5/2023
8.5.2 17,665 6/7/2023
8.5.1 5,107 6/2/2023
8.5.0 9,017 5/14/2023
8.5.0-prerelease0001 213 5/12/2023
8.5.0-develop2513 526 5/4/2023
8.5.0-develop1599 288 5/3/2023
8.5.0-develop0690 1,908 2/8/2023
8.4.5 56,276 2/7/2023
8.4.5-prerelease0001 234 2/6/2023
8.4.4 28,733 1/2/2023
8.4.4-prerelease0001 302 1/2/2023
8.4.3 508 1/1/2023
8.4.2 7,638 12/30/2022
8.4.1 1,729 12/28/2022
8.4.0 14,872 12/6/2022
8.4.0-prerelease0001 733 11/26/2022
8.3.3 19,223 11/20/2022
8.3.2 2,502 11/17/2022
8.3.1 3,249 11/17/2022
8.3.0 2,834 11/16/2022
8.3.0-prerelease0395 2,243 10/30/2022
8.3.0-prerelease0394 1,493 10/26/2022
8.2.3 104,097 10/25/2022
8.2.2-prerelease0856 1,541 10/12/2022
8.2.2-prerelease0553 2,167 9/21/2022
8.2.2-prerelease0396 1,343 9/20/2022
8.2.2-prerelease0241 1,325 9/5/2022
8.2.2-prerelease0163 1,345 8/26/2022
8.2.2-prerelease0106 1,170 8/26/2022
8.2.2-prerelease0051 1,357 8/25/2022
8.2.1 219,304 7/25/2022
8.2.0 51,688 7/3/2022
8.2.0-prerelease3420 4,964 7/2/2022
8.2.0-prerelease2777 4,528 6/30/2022
8.2.0-prerelease2138 4,284 6/28/2022
8.2.0-prerelease1515 4,372 6/24/2022
8.2.0-prerelease0911 7,441 6/16/2022
8.2.0-prerelease0899 6,764 6/15/2022
8.2.0-prerelease0892 2,153 6/14/2022
8.2.0-prerelease0809 2,529 6/6/2022
8.2.0-prerelease0392 2,767 5/29/2022
8.1.5717 2,932,201 8/26/2015
8.0.5449.1 166,416 1/12/2015
8.0.5449 11,400 12/2/2014
7.4.5196 97,780 3/24/2014
7.3.4830 282,834 3/28/2013
7.2.4630.5 205,987 12/10/2012
7.1.4532.2 39,780 9/17/2012
7.0.4335 5,842 12/29/2011
0.46.0.1 54,273 8/24/2011