Skip to content
Surf Wiki
Save to docs
general/java-virtual-machine

From Surf Wiki (app.surf) — the open knowledge base

IKVM


FieldValue
nameIKVM
other_namesIKVM.NET
authorJeroen Frijters
developerWindward Studios, Jerome Haltom
latest release version
latest release date
operating systemCross-platform
programming languageJava and C#
genreJava virtual machine, Java bytecode compiler and Java Library
licensezlib License
website

IKVM (formerly IKVM.NET) is an implementation of Java for Common Language Infrastructure implementations such as Mono and the Microsoft .NET Framework. IKVM is free software, distributed under the zlib permissive free software license.

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

Components

IKVM includes the following components:

  • A Java virtual machine (JVM) implemented in .NET
  • A .NET implementation of the Java class libraries
  • A tool that translates Java bytecode (JAR files) to .NET IL (DLLs or EXE files).
  • Tools that enable Java and .NET interoperability

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

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

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

Name

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

Status

IKVM 8 implements Java 8.

The IKVM organization also maintains IKVM.Maven.Sdk, 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.

Example

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

Note that in IKVM, the System.* namespace in .NET is written as cli.System.*.

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);
        }
    }
}

References

References

  1. "License". www.ikvm.net.
  2. "The End of IKVM.NET".
  3. "IKVM is alive & well". www.windwardstudios.com.
  4. (27 August 2022). "IKVM - Java Virtual Machine for .NET". [[GitHub]].
  5. "Sumatra Software b.v.".
  6. "osdir mailing list archive for java.ikvm.devel".
  7. "IKVM.Maven.Sdk". [[GitHub]].
  8. "IKVM.Maven.Sdk". www.nuget.org.
  9. (2023). "IKVM Tutorial". Windward Studios, Jerome Haltom.
Info: Wikipedia Source

This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.

Want to explore this topic further?

Ask Mako anything about IKVM — get instant answers, deeper analysis, and related topics.

Research with Mako

Free with your Surf account

Content sourced from Wikipedia, available under CC BY-SA 4.0.

This content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.

Report