Software:IKVM

From HandWiki
IKVM
Other namesIKVM.NET
Original author(s)Jeroen Frijters
Developer(s)Windward Studios, Jerome Haltom
Written inJava, C#
Operating systemCross-platform
TypeJava virtual machine, JVM bytecode compiler and Java Library
Licensezlib
Website{{{1}}}

IKVM (formerly IKVM.NET) is an implementation of Java for Common Language Infrastructure implementations such as Mono and the .NET framework. IKVM is free and open-source software, distributed under the zlib permissive software license.[1]

Work began on IKVM in early 2000 to assist migration of a Java-based reporting package from Sumatra to the Microsoft .NET Framework. The original developer, Jeroen Frijters, discontinued work on IKVM in 2015.[2] In 2018, Windward Studios forked IKVM.NET to continue development on the open-sourced IKVM.[3] In 2022 Jerome Haltom and others picked up the work on a new GitHub organization and finished .NET Core support.[4]

Components

IKVM includes these components:

IKVM can run compiled Java code (bytecode) directly on .NET or Mono. The bytecode is converted on the fly to Common Intermediate Language (CIL) and executed.

By contrast, J# is a Java syntax on a .NET framework, whereas IKVM is effectively a Java framework running on a .NET framework.

Jeroen Frijters was the main contributor to IKVM. He is Technical Director of Sumatra Software, based in the Netherlands.[5]

Name

The IKVM part of the name is a play on JVM in which the author "just took the two letters adjacent to the J".[6]

Status

IKVM 8 implements Java 8.

The IKVM organization also maintains IKVM.Maven.Sdk,[7] an extension to the .NET PackageReference system that allows direct references to and transpiling of Maven artifacts. IKVM.Maven.Sdk is also available on NuGet.org.[8]

Example

The following is a .NET application written in Java, which prints the list of files in the current directory.

In IKVM, the System.* namespace in .NET is written as cli.System.*.[9]

package org.wikipedia.examples;

import cli.System.IO.*;

public class Example {
    public static void main(String[] args) {
        String[] files = Directory.GetFiles(".");
        for (String file : files) {
            System.out.println(file);
        }
    }
}

See also

References

  • No URL found. Please specify a URL here or add one to Wikidata.
  • on GitHub